# New ports collection makefile for:	bacula
# Date created:				24 February 2003
# Whom:					Dmitry Sivachenko <demon@FreeBSD.org>
#
# $FreeBSD: ports/sysutils/bacula-server/Makefile,v 1.118 2009/08/14 20:00:36 wxs Exp $
#

PORTNAME=	bacula
DISTVERSION=	3.0.2
CATEGORIES?=	sysutils
MASTER_SITES=	${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR=	bacula

MAINTAINER=	carsten.menke@prozesse-im-unternehmen.de
COMMENT?=	The network backup solution (server)

PKGNAMESUFFIX?=	-server

CONFLICTS=	bacula-server-devel-[0-9]* bacula-client-devel-[0-9]* bacula-docs-devel-[0-9]*

BUILD_DEPENDS=          sqlite3>=3.0:${PORTSDIR}/databases/sqlite3

UNIQUENAME?=${PORTNAME}${PKGNAMESUFFIX}

DISTFILES=	${PORTNAME}-${PORTVERSION}.tar.gz

PORTDOCS=	VERIFYING \
		technotes \
		ChangeLog \
		README \
		ReleaseNotes \
		LICENSE \
		INSTALL

USE_GETTEXT=	yes


# The user/group IDs below are registered, see
# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#DADS-UID
#
SBINDIR?=		${PREFIX}/sbin
SYSCONFDIR?=		${PREFIX}/etc/${PORTNAME}
BACULA_LIBDIR?=		${PREFIX}lib/${PORTNAME}
BACULA_PIDDIR?=		/var/run
BACULA_PLUGINDIR?=	${LOCALBASE}/lib
BACULA_SCRIPTDIR?=	${PREFIX}/share/${PORTNAME}
BACULA_WORKINGDIR?=	/var/db/${PORTNAME}

BACULA_STARTUP?=bacula-dir bacula-sd
BACULA_PASSWORD=	Bacula@FreeNAS
BACULA_UID=		910
BACULA_GID=		${BACULA_UID}
#
MANCOMPRESSED=	yes
GNU_CONFIGURE=	yes
CONFIGURE_ARGS+=--with-tcp-wrappers=/usr/lib \
		--enable-smartalloc \
		--with-sqlite3=yes \
		--with-openssl=yes \
		--sysconfdir=${SYSCONFDIR} \
		--with-working-dir=${BACULA_WORKINGDIR} \
		--with-scriptdir=${BACULA_SCRIPTDIR} \
		--with-pid-dir=${BACULA_PIDDIR} \
		--docdir=${DOCSDIR} \
		--htmldir=${DOCSDIR} \
		--enable-nls \
		--disable-rpath \
		--disable-gnome \
		--disable-bat \
		--disable-bwx-console \
		--disable-tray-monitor \
		--with-readline=yes \
		--disable-conio \
		--enable-batch-insert \
		--with-plugindir=${BACULA_PLUGINDIR} \
		--with-libdir=${BACULA_LIBDIR} \
		--with-dump-email=root@localhost \
		--with-job-email=root@localhost \
		--with-db-name=bacula \
		--with-db-user=bacula \
		--with-baseport=9101

.if defined(WITH_CLIENT_ONLY)
CONFIGURE_ARGS+=--with-fd-user=root \
		--with-fd-group=wheel \
                --enable-client-only
.else
CONFIGURE_ARGS+=--with-dir-user=bacula \
		--with-dir-group=bacula \
		--with-sd-user=bacula \
		--with-sd-group=operator
.endif

CONFIGURE_ENV+=	CPPFLAGS="-I/usr/include/readline -I${LOCALBASE}/include" \
		LDFLAGS="-L${LOCALBASE}/lib" \
		PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
		PTHREAD_LIBS="${PTHREAD_LIBS}"


.include <bsd.port.pre.mk>

PKGINSTALL=	${PKGDIR}/pkg-install

# Client only or full server version
.if defined(WITH_CLIENT_ONLY)
CONFFILES=	fd
.else
# Server only Options
CONFFILES=		sd dir
LIB_DEPENDS+=           sqlite3:${PORTSDIR}/databases/sqlite3
.endif

.if defined(WITH_CLIENT_ONLY)
MAN8=bacula-fd.8 bconsole.8
.else
MAN8=bacula.8 bacula-dir.8 bacula-sd.8 bcopy.8 bextract.8 bls.8 bscan.8 btape.8 btraceback.8 dbcheck.8
MAN1=bsmtp.1
.endif

MAKE_ARGS+=	-E MAN8 -E MAN1
MAKE_ENV+=	MAN8="${MAN8}" MAN1="${MAN1}"

post-patch:
#	Default bconsole.conf is ${SYSCONFDIR}
	@${REINPLACE_CMD} -e 's|./bconsole.conf|${SYSCONFDIR}/bconsole.conf|g' ${WRKSRC}/src/console/console.c
.if defined(WITH_CLIENT_ONLY)
# 	In client port only install startup script out of script dir (see below post-install)
# 	Dont mkdir ${PREFIX}/share/bacula cause it's empty
	@${REINPLACE_CMD} -e 's|^\(fd_subdirs = .*\)scripts\(.*\)|\1\2|g' ${WRKSRC}/Makefile.in
	@${REINPLACE_CMD} -e 's|\(.*$${MKDIR} $${DESTDIR}$${scriptdir}\)|#\1|g' ${WRKSRC}/Makefile.in
.else
#	In server port don't install filed
	@${REINPLACE_CMD} -e '/^fd_subdirs = /s|src/filed||' -e 's|src/console||' ${WRKSRC}/Makefile.in
.endif

.if !target(pre-install)
pre-install:
	${ECHO_CMD} "creating ${FREENAS_ROOTFS}/${BACULA_WORKINGDIR}" ;
	${MKDIR} ${FREENAS_ROOTFS}/${BACULA_WORKINGDIR};

# 	Extend /etc/services and install UID/GID
	@ ${SETENV} BACULA_UID=${BACULA_UID} BACULA_GID=${BACULA_GID} BACULA_WORKINGDIR=${BACULA_WORKINGDIR} PKG_PREFIX=${PREFIX} \
	${SH} ${PKGINSTALL} ${PORTNAME} PRE-INSTALL
.endif

do-install:
	DESTDIR=${FREENAS_ROOTFS} ${MAKE} -C ${WRKSRC} install
.for infile in ${BACULA_STARTUP}
	@${INSTALL_SCRIPT} -v ${FILESDIR}/${infile}.in ${FREENAS_ROOTFS}/etc/rc.d/${infile}
.endfor

	${INSTALL_SCRIPT} ${FILESDIR}/weekly-pool-check.sh ${FREENAS_ROOTFS}/${BACULA_SCRIPTDIR};

.if !defined(WITH_CLIENT_ONLY)
	${INSTALL_PROGRAM} /usr/bin/mt ${FREENAS_ROOTFS}/usr/bin
.endif

.if !target(post-install)
post-install:
.if defined(WITH_CLIENT_ONLY)
# 	Extend only /etc/services
	@ ${SETENV} BACULA_UID=${BACULA_UID} BACULA_GID=${BACULA_GID} BACULA_WORKINGDIR=${BACULA_WORKINGDIR} PKG_PREFIX=${PREFIX} \
		${SH} ${PKGINSTALL} ${PORTNAME}
     
# 	Console stuff
	${INSTALL_DATA} ${FILESDIR}/bconsole.conf.in ${FREENAS_ROOTFS}/${SYSCONFDIR}/bconsole.conf;
	${REINPLACE_CMD} -I ''  -e "s|%%BACULA_PASSWORD%%|${BACULA_PASSWORD}|g" ${FREENAS_ROOTFS}/${SYSCONFDIR}/bconsole.conf;
	${CHGRP} ${BACULA_GID} ${FREENAS_ROOTFS}/${SYSCONFDIR}/bconsole.conf;
#	ensure that users in the bacula group can run bconsole
	${CHGRP} ${BACULA_GID} ${FREENAS_ROOTFS}/${SBINDIR}/bconsole
.else

	${INSTALL_SCRIPT} ${FILESDIR}/chio-bacula ${FREENAS_ROOTFS}/${SBINDIR};
	${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${FREENAS_ROOTFS}/${SYSCONFDIR}/bacula-barcodes;

# 	chmod of bsmtp program so bacula can use it with dropped down permissions
	${CHMOD} o+x ${FREENAS_ROOTFS}/${SBINDIR}/bsmtp
	${CHOWN} -R ${BACULA_UID}:${BACULA_GID} ${FREENAS_ROOTFS}/${BACULA_SCRIPTDIR}

.endif
# 	Install leaves existing conf files untouched. Respect this here!
	for na in ${CONFFILES}; do \
			${CP} ${FILESDIR}/bacula-$$na.conf.in ${FREENAS_ROOTFS}/${SYSCONFDIR}/bacula-$$na.conf; \
			${REINPLACE_CMD} -I '' -e "s|%%SBINDIR%%|${SBINDIR}|g" \
				       -e "s|%%SYSCONFDIR%%|${SYSCONFDIR}|g" \
				       -e "s|%%BACULA_LIBDIR%%|${BACULA_LIBDIR}|g" \
				       -e "s|%%BACULA_PASSWORD%%|${BACULA_PASSWORD}|g" \
				       -e "s|%%BACULA_PLUGINDIR%%|${BACULA_PLUGINDIR}|g" \
				       -e "s|%%BACULA_PIDDIR%%|${BACULA_PIDDIR}|g" \
				       -e "s|%%BACULA_SCRIPTDIR%%|${BACULA_SCRIPTDIR}|g" \
				       -e "s|%%BACULA_WORKINGDIR%%|${BACULA_WORKINGDIR}|g" \
					${FREENAS_ROOTFS}/${SYSCONFDIR}/bacula-$$na.conf; \
	done
	-${RM} ${FREENAS_ROOTFS}/${SYSCONFDIR}/*.new;
	
.for infile in ${BACULA_STARTUP}
	${REINPLACE_CMD} -I '' -e "s|%%PREFIX%%|${PREFIX}|g" \
			       -e "s|%%SYSCONFDIR%%|${SYSCONFDIR}|g" \
			       -e "s|%%BACULA_PIDDIR%%|${BACULA_PIDDIR}|g" \
			          ${FREENAS_ROOTFS}/etc/rc.d/${infile};
.endfor
.endif

.include <bsd.port.post.mk>
