# $Id: Portfile 62632 2010-01-12 20:00:00Z ecronin@macports.org $

PortSystem		1.0

name			boxbackup
version			0.11rc5
categories		sysutils net
maintainers		ecronin
description		completely automatic on-line backup system.
long_description	The backup daemon, bbackupd, runs on all machines to \
					be backed up. The store server daemon, bbstored runs \
					on a central server. Data is sent to the store \
					server, which stores all data on local filesystems, \
					that is, only on local hard drives. Tape or other \
					archive media is not used. \
					The system is designed to be easy to set up and run, \
					and cheap to use. Once set up, there should be no \
					need for user or administrative intervention, apart \
					from usual system maintenance.
homepage		http://www.boxbackup.org/
platforms       darwin
master_sites	${homepage}svn/box/packages/
extract.suffix	.tgz
checksums		md5     65176036a43ab03b4ff302ac5f3bdc23 \
                sha1    ed4107a8f58cc9f094f81c70ad658ce5cf1c26b9 \
                rmd160  f2e178b74b3b40c599300503b36da56696bd6e06

depends_lib		path:bin/perl:perl5 port:openssl port:readline

configure.args		--sysconfdir=${prefix}/etc \
					--localstatedir=${prefix}/var/bbackupd \
                    --mandir=${prefix}/share/man \
					--enable-gnu-readline

use_parallel_build  no

post-patch {
    reinplace "s|man/man|share/man/man|g" \
        ${worksrcpath}/infrastructure/makeparcels.pl.in
}

destroot.target		install-backup-client
destroot.keepdirs	${destroot}${prefix}/etc/boxbackup/bbackupd \
					${destroot}${prefix}/var/bbackupd

post-destroot {
	xinstall -d -m 0700 ${destroot}${prefix}/etc/boxbackup/bbackupd
	xinstall -d -m 0755 ${destroot}${prefix}/var/bbackupd

    # Install the documentation
	xinstall -d -m 0755 ${destroot}${prefix}/share/doc/${name}
    eval file copy [glob ${worksrcpath}/docs/htmlguide/*] \
        ${destroot}${prefix}/share/doc/${name}/
}

variant bdb \
	description {Use Berkeley Data Base to cache bbackupd state} {
	depends_lib-append		port:db47

	configure.args-append	--with-bdb-headers=${prefix}/include/db47 \
							--with-bdb-lib=${prefix}/lib/db47
}

variant server \
    description {Install bbstored server} {
	pre-destroot {
		addgroup bbstored
		set gid [existsgroup bbstored]
		adduser bbstored gid=${gid} realname=BoxBackup\ Server home=${prefix}/etc/boxbackup/bbstored
	}
	destroot.target-append		install-backup-server
	destroot.keepdirs-append	${destroot}${prefix}/etc/boxbackup/bbstored
	post-destroot {
		xinstall -o bbstored -g bbstored -d -m 0770 ${destroot}${prefix}/etc/boxbackup/bbstored
	}

	pre-install {
		addgroup bbstored
		set gid [existsgroup bbstored]
		adduser bbstored gid=${gid} realname=BoxBackup\ Server home=${prefix}/etc/boxbackup/bbstored
	}
}

post-activate {
	if {[dir exists ${prefix}/etc/box]} {
		ui_warn "${prefix}/etc/box should be moved to ${prefix}/etc/boxbackup to complete upgrade."
	}
	if {[variant_isset server]} {
		if {![file exists ${prefix}/etc/boxbackup/raidfile.conf]} {
			ui_warn "${prefix}/etc/boxbackup/raidfile.conf is missing!"
			ui_msg "You need to run 'raidfile-config' to create it."
			ui_msg "See the documentation on server setup for details:"
			#ui_msg "  file://${prefix}/share/doc/boxbackup/server.html"
			ui_msg "  http://www.boxbackup.org/server.html"
		}
		if {![file exists ${prefix}/etc/boxbackup/bbstored.conf]} {
			ui_warn "${prefix}/etc/boxbackup/bbstored.conf is missing!"
			ui_msg "You need to run 'bbstored-config' to create it."
			ui_msg "See the documentation on server setup for details:"
			#ui_msg "  file://${prefix}/share/doc/boxbackup/server.html"
			ui_msg "  http://www.boxbackup.org/server.html"
		}
	}
	if {![file exists ${prefix}/etc/boxbackup/bbackupd.conf]} {
		ui_warn "${prefix}/etc/boxbackup/bbackupd.conf is missing!"
		ui_msg "You need to run 'bbackupd-config' to create it."
		ui_msg "See the documentation on client setup for details:"
		#ui_msg "  file://${prefix}/share/doc/boxbackup/client.html"
		ui_msg "  http://www.boxbackup.org/client.html"
	}
}

test.run		yes

platform darwin {
	startupitem.create			yes
	startupitem.name			BoxBackup
	startupitem.start			"cd ${prefix}/etc/boxbackup"
	if {[variant_isset server]} {
		startupitem.start-append	"\[ -f \"${prefix}/etc/boxbackup/bbstored.conf\" \] \\"
		startupitem.start-append	"\t&& \[ -f \"${prefix}/etc/boxbackup/raidfile.conf\" \] \\"
		startupitem.start-append	"\t&& ${prefix}/bin/bbstored"
	}
	startupitem.start-append	"\[ -f \"${prefix}/etc/boxbackup/bbackupd.conf\" \] \\"
	startupitem.start-append	"\t&& ${prefix}/bin/bbackupd"
	startupitem.stop			"/usr/bin/killall -SIGUSR1 bbackupd"
	if {[variant_isset server]} {
		startupitem.stop-append	"/usr/bin/killall -SIGUSR1 bbstored"
	}
}

