diff options
Diffstat (limited to 'sysutils/bacula-server-devel/Makefile')
-rw-r--r-- | sysutils/bacula-server-devel/Makefile | 315 |
1 files changed, 315 insertions, 0 deletions
diff --git a/sysutils/bacula-server-devel/Makefile b/sysutils/bacula-server-devel/Makefile new file mode 100644 index 0000000..f2400f2 --- /dev/null +++ b/sysutils/bacula-server-devel/Makefile @@ -0,0 +1,315 @@ +# New ports collection makefile for: bacula +# Date created: 5 March 2006 +# Whom: Dan Langille <dan@langille.org> +# +# $FreeBSD$ +# + +PORTNAME= bacula +DISTVERSION= 1.38.6-beta3-20060304 +CATEGORIES= sysutils +MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} +MASTER_SITE_SUBDIR= bacula +PKGNAMESUFFIX?= -server-devel + +MAINTAINER= dan@langille.org +COMMENT?= The network backup solution (server) - DEVELOPMENT Version + +CONFLICTS= bacula-server-[0-9]* bacula-client-[0-9]* + +# The user/group IDs below are registered, see +# http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#DADS-UID +# +BACULA_DIR?=/var/db/bacula +# +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --with-tcp-wrappers=/usr/lib \ + --enable-smartalloc \ + --with-working-dir=${BACULA_DIR} \ + --with-scriptdir=${PREFIX}/share/${PORTNAME} \ + --mandir=${PREFIX}/man \ + --with-fd-user=root \ + --with-fd-group=wheel \ + --with-dir-user=bacula \ + --with-dir-group=bacula \ + --with-sd-user=bacula \ + --with-sd-group=operator \ + --with-readline=yes \ + --disable-conio + +CONFIGURE_ENV+= CPPFLAGS="-I/usr/include/readline -I${LOCALBASE}/include" \ + LDFLAGS="-L${LOCALBASE}/lib" \ + PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \ + PTHREAD_LIBS="${PTHREAD_LIBS}" + +ALL_OPTIONS= CLIENT_ONLY WXCONSOLE GNOMECONSOLE SQLITE3 MYSQL POSTGRESQL MTX OPENSSL + +.for opt in ${ALL_OPTIONS} +.if defined(WITH_${opt}) +BATCH= yes +.endif +.endfor + +.if !defined(BATCH) +IS_INTERACTIVE= yes +.endif + +.if defined(WITH_CLIENT_ONLY) +OPTIONS+= WXCONSOLE "Build with wxGTK based GUI console" off +OPTIONS+= GNOMECONSOLE "Build with GNOME based GUI console" off +.else +OPTIONS= SQLITE3 "Use SqLite-3 database instead of SqLite-2" off +OPTIONS+= MYSQL "Use MySQL database instead of SqLite" off +OPTIONS+= POSTGRESQL "Use PostgreSQL database instead of SqLite" off +OPTIONS+= MTX "Install mtx for control of autochanger devices" off +.endif + +OPTIONS+= OPENSSL "Enable OpenSSL for encrypted communication" off + +# Prepare if gnome-console is selected this must be happen before +# include of bsd.port.pre.mk! +WANT_GNOME= yes +.if defined(WITH_GNOMECONSOLE) +USE_GNOME= libgnome +.endif + +PLIST_SUB+= BACULA_DIR=${BACULA_DIR} + +MAN8= bacula.8 + +.include <bsd.port.pre.mk> + +# Client only or full server version +.if defined(WITH_CLIENT_ONLY) +CONFFILES= fd +CONFIGURE_ARGS+= --enable-client-only + +PKGDEINSTALL= ${PKGDIR}/pkg-deinstall.client +PKGINSTALL= ${PKGDIR}/pkg-install.client +# Build gnome-console +.if defined(WITH_GNOMECONSOLE) +CONFIGURE_ARGS+= --enable-gnome +PLIST_SUB+= GNOMECONS="" +.else +# We didn't need GTK (it's not possible to put WANT_GNOME in an .if statement!) +WITHOUT_GNOME= yes +PLIST_SUB+= GNOMECONS="@comment " +.endif +# Build wx-console +.if defined(WITH_WXCONSOLE) +CONFIGURE_ARGS+= --enable-wx-console +LIB_DEPENDS+= wx_gtk2-2.4.0:${PORTSDIR}/x11-toolkits/wxgtk24 +CONFIGURE_ENV+= WXCONFIG=${X11BASE}/bin/wxgtk2-2.4-config +PLIST_SUB+= WXCONS="" +.else +# We didn't need GTK (it's not possible to put WANT_GNOME in an .if statement!) +WITHOUT_GNOME= yes +PLIST_SUB+= WXCONS="@comment " +.endif +.else +# Server only Options +PLIST_SUB+= GNOMECONS="@comment " +PLIST_SUB+= WXCONS="@comment " +CONFFILES= sd dir +.if defined(WITH_MYSQL) +CONFIGURE_ARGS+= --with-mysql=yes +USE_MYSQL= yes +DBTYPE= mysql +.elif defined(WITH_POSTGRESQL) +USE_PGSQL= yes +CONFIGURE_ARGS+= --with-postgresql=yes +DBTYPE= postgresql +.elif defined(WITH_SQLITE3) +CONFIGURE_ARGS+= --with-sqlite3=yes +LIB_DEPENDS+= sqlite3:${PORTSDIR}/databases/sqlite3 +DBTYPE= sqlite +.else +CONFIGURE_ARGS+= --with-sqlite=yes +LIB_DEPENDS+= sqlite.2:${PORTSDIR}/databases/sqlite2 +DBTYPE= sqlite +.endif +PLIST_SUB+= DBTYPE=${DBTYPE} +# Install mtx +.if defined(WITH_MTX) +RUN_DEPENDS+= ${LOCALBASE}/sbin/mtx:${PORTSDIR}/misc/mtx +.endif +.endif + +.if defined(WITH_OPENSSL) +CONFIGURE_ARGS+= --with-openssl +.endif + +.if defined(WITH_CLIENT_ONLY) +MAN8=bacula.8 +.endif + +pre-everything:: +.if !defined(WITH_CLIENT_ONLY) + @${ECHO_MSG} "=======> ATTENTION <=======" + @${ECHO_MSG} "===> Note that there is a pthreads problem, which leads to the loss of 500kB" + @${ECHO_MSG} "===> of data at the end of an tape. This is corrected in newer versions of FreeBSD" + @${ECHO_MSG} "===> READ ${WRKSRC}/platforms/freebsd/pthreads-fix.txt" + @${ECHO_MSG} "" + @${ECHO_MSG} "You may use the following build options (or make config):" + @${ECHO_MSG} "" + @${ECHO_MSG} " WITH_CLIENT_ONLY=yes if you only want the file daemon." + @${ECHO_MSG} " WITH_WXCONSOLE=yes if you only want a wxGTK based GUI console." + @${ECHO_MSG} " WITH_GNOMECONSOLE=yes if you only want a GNOME based GUI console." + @${ECHO_MSG} " WITH_MTX=yes if you want to use mtx instead of chio for autochanger control." + @${ECHO_MSG} " WITH_SQLITE3=yes if you want SqLite-3 instead of SqLite-2 as the database." +.if !defined(WITH_MYSQL) && !defined(WITH_POSTGRESQL) + @${ECHO_MSG} " WITH_MYSQL=yes if you want MySQL instead of SqLite as the database." + @${ECHO_MSG} " WITH_POSTGRESQL=yes if you want PostgreSQL instead of SqLite as the database." + @${ECHO_MSG} "" + @${ECHO_MSG} "The default DB is SQLite-2!" +.endif + @${ECHO_MSG} "" + @${ECHO_MSG} "===> Using ${DBTYPE} as the bacula database." + @${ECHO_MSG} "" +.else + @${ECHO_MSG} "===> Building file daemon only." +.endif + +post-patch: +# Default bconsole.conf is ${PREFIX}/etc + @${REINPLACE_CMD} -e 's|./bconsole.conf|${PREFIX}/etc/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/bacule 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 's|^all_subdirs = .*|all_subdirs = scripts src\/lib src\/findlib $${subdirs}|g' ${WRKSRC}/Makefile.in +.endif + +post-install: +# Migration: move existing bacula.sh to z-bacula.sh to start bacula AFTER DB start + if [ -f ${PREFIX}/etc/rc.d/bacula.sh ]; then \ + ${MV} ${PREFIX}/etc/rc.d/bacula.sh ${PREFIX}/etc/rc.d/z-bacula.sh; \ + fi + if [ -f ${PREFIX}/etc/rc.d/bacula.sh.sample ]; then \ + ${MV} ${PREFIX}/etc/rc.d/bacula.sh.sample ${PREFIX}/etc/rc.d/z-bacula.sh.sample; \ + fi +.if defined(WITH_CLIENT_ONLY) +# Install start script + ${INSTALL_SCRIPT} ${WRKSRC}/scripts/bacula ${PREFIX}/etc/rc.d/z-bacula.sh.sample +# Extend only /etc/services + @ ${SETENV} PKG_PREFIX=${PREFIX} \ + ${SH} ${PKGINSTALL} ${PORTNAME} +# Console stuff + if [ -f ${PREFIX}/etc/bconsole.conf.new ]; then \ + ${ECHO_CMD} "etc/bconsole.conf.new" >> ${TMPPLIST}; \ + elif [ -f ${PREFIX}/etc/bconsole.conf ]; then \ + ${MV} ${PREFIX}/etc/bconsole.conf ${PREFIX}/etc/bconsole.conf.sample; \ + ${ECHO_CMD} "etc/bconsole.conf.sample" >> ${TMPPLIST}; \ + fi +.if defined(WITH_WXCONSOLE) + if [ -f ${PREFIX}/etc/wx-console.conf.new ]; then \ + ${ECHO_CMD} "etc/wx-console.conf.new" >> ${TMPPLIST}; \ + elif [ -f ${PREFIX}/etc/wx-console.conf ]; then \ + ${MV} ${PREFIX}/etc/wx-console.conf ${PREFIX}/etc/wx-console.conf.sample; \ + ${ECHO_CMD} "etc/wx-console.conf.sample" >> ${TMPPLIST}; \ + fi +.endif +.if defined(WITH_GNOMECONSOLE) + if [ -f ${PREFIX}/etc/gnome-console.conf.new ]; then \ + ${ECHO_CMD} "etc/gnome-console.conf.new" >> ${TMPPLIST}; \ + elif [ -f ${PREFIX}/etc/gnome-console.conf ]; then \ + ${MV} ${PREFIX}/etc/gnome-console.conf ${PREFIX}/etc/gnome-console.conf.sample; \ + ${ECHO_CMD} "etc/gnome-console.conf.sample" >> ${TMPPLIST}; \ + fi +.endif + +# @${CHMOD} a+x ${WRKSRC}/scripts/bacula.man +.if defined(WITH_CLIENT_ONLY) + ${INSTALL_MAN} ${WRKSRC}/scripts/bacula.man ${PREFIX}/man/man8/bacula.8 +.endif +.else +# Extend /etc/services and install UID/GID + @ ${SETENV} PKG_PREFIX=${PREFIX} \ + ${SH} ${PKGINSTALL} ${PORTNAME} POST-INSTALL +# Install config files and preserve existing ones + ${INSTALL_SCRIPT} ${FILESDIR}/chio-bacula ${PREFIX}/sbin + if [ -f ${PREFIX}/etc/bacula-barcodes ]; then \ + ${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${PREFIX}/etc/bacula-barcodes.new ; \ + ${ECHO_CMD} "etc/bacula-barcodes.new" >> ${TMPPLIST}; \ + else \ + ${INSTALL_DATA} ${FILESDIR}/bacula-barcodes ${PREFIX}/etc/bacula-barcodes.samples ; \ + ${ECHO_CMD} "etc/bacula-barcodes.samples" >> ${TMPPLIST}; \ + fi +# chmod of bsmtp program so bacula can use it with dropped down permissions + ${CHMOD} o+x ${PREFIX}/sbin/bsmtp + ${CHOWN} -R bacula:bacula ${PREFIX}/share/bacula +.endif +# Install leaves existing conf files untouched. Respect this here! + for na in ${CONFFILES}; do \ + if [ -f ${PREFIX}/etc/bacula-$$na.conf.new ]; then \ + ${ECHO_CMD} "etc/bacula-$$na.conf.new" >> ${TMPPLIST}; \ + elif [ -f ${PREFIX}/etc/bacula-$$na.conf ]; then \ + ${MV} ${PREFIX}/etc/bacula-$$na.conf ${PREFIX}/etc/bacula-$$na.conf.sample; \ + ${ECHO_CMD} "etc/bacula-$$na.conf.sample" >> ${TMPPLIST}; \ + fi; \ + done + +# Inform user after install about important things .... + @${ECHO_MSG} "*********************************************************************" + @${ECHO_MSG} "NOTE:" + @${ECHO_MSG} "Sample files are installed in ${PREFIX}/etc:" + @${ECHO_MSG} " bconsole.conf.sample, bacula-barcodes.sample, bacula-fd.conf.sample" +.if !defined(WITH_CLIENT_ONLY) + @${ECHO_MSG} " bacula-sd.conf.sample, bacula-dir.conf.sample" + @${ECHO_MSG} "" + @${ECHO_MSG} "An auto-changer manipulation script based on FreeBSDs" + @${ECHO_MSG} "chio command is included and installed at" + @${ECHO_MSG} "" + @${ECHO_MSG} " ${PREFIX}/sbin/chio-bacula" + @${ECHO_MSG} "" + @${ECHO_MSG} "Please have a look at it if you want to use an" + @${ECHO_MSG} "autochanger. You have to configure the usage in" + @${ECHO_MSG} "" + @${ECHO_MSG} " ${PREFIX}/etc/bacula-dir.conf" + @${ECHO_MSG} "" + @${ECHO_MSG} "Take care of correct permissions for changer and" + @${ECHO_MSG} "tape device (e.g. /dev/ch0 and /dev/n[r]sa0) i.e." + @${ECHO_MSG} "they must be accessible by user bacula." + @${ECHO_MSG} "" + @${ECHO_MSG} "Due to lack of some features in the FreeBSD tape driver" + @${ECHO_MSG} "implementation you MUST add some OS dependent options to" + @${ECHO_MSG} "the bacula-sd.conf file:" + @${ECHO_MSG} "" + @${ECHO_MSG} " Hardware End of Medium = no;" + @${ECHO_MSG} " Backward Space Record = no;" + @${ECHO_MSG} " Backward Space File = no;" + @${ECHO_MSG} "" + @${ECHO_MSG} "With 2 filemarks at EOT (see man mt):" + @${ECHO_MSG} " Fast Forward Space File = no;" + @${ECHO_MSG} " BSF at EOM = yes;" + @${ECHO_MSG} " TWO EOF = yes;" + @${ECHO_MSG} "" + @${ECHO_MSG} "With 1 filemarks at EOT (see man mt):" + @${ECHO_MSG} " Fast Forward Space File = yes;" + @${ECHO_MSG} " BSF at EOM = no;" + @${ECHO_MSG} " TWO EOF = no;" + @${ECHO_MSG} "" + @${ECHO_MSG} "NOTE: YOU CAN SWITCH EOT model ONLY when starting" + @${ECHO_MSG} " from scratch with EMPTY tapes!!!!" + @${ECHO_MSG} "" + @${ECHO_MSG} "It is also important that all the scripts accessed" + @${ECHO_MSG} "by RunBeforeJob and RunAfterJob can be executed by" + @${ECHO_MSG} "the user bacula." + @${ECHO_MSG} "" + @${ECHO_MSG} "For USB support read the bacula manual!! It could be necessary" + @${ECHO_MSG} "to configure/compile a new kernel!" + @${ECHO_MSG} "" + @${ECHO_MSG} "Look at $PREFIX/share/bacula/update_bacula_tables for" + @${ECHO_MSG} "database update procedure. Details can be found in the" + @${ECHO_MSG} "ReleaseNotes" +.endif + @${ECHO_MSG} "*********************************************************************" + +.if !defined(WITH_CLIENT_ONLY) + ${CAT} pkg-message +.endif + +.include <bsd.port.post.mk> |