For those out there who want to use portage to get their new Bacula 2.2.0 up and running, here is the unofficial ebuild and patch file. Note that I provide a dirty method to inject the ebuild into portage. If you want to keep your system clean, either remove the new files when Bacula 2.2.0 hits portage or use Portage overlays.

Instructions:
1.   Save ebuild to /usr/portage/app-backup/bacula/
2.   Save patch file to /usr/portage/app-backup/bacula/files/
3. Copy folder /usr/portage/app-backup/bacula/files/2.0.3 to /usr/portage/app-backup/bacula/2.2.0 (we can reuse existing scripts) 4. Run 'ebuild bacula-2.2.0.ebuild digest' in /usr/portage/app-backup/bacula/ to activate bacula 2.2.0.
5.   Run 'emerge -av bacula' to upgrade

Notes:
- Like stated before, this is the fast and dirty way - don't forget to clean up your system or use overlays - When Bacula 2.2.0 hits portage officially, it should be possible to clean up all changes by unmerging the ebuild. (Backup your configuration files!) - I did not recreate the gnome patch as I don't use gnome - you want it, you patch it - and mail it back to the list :-)
-   I added BAT support to the ebuild, check out the bacula-bat flag.
- To enable BAT, QT4 is currently required - after creating the ebuild I read somewhere that QT3 might work as well? - The ebuild is not masked, this might pose a problem for some people but if you are reading this, you know what you are doing. - The ebuild contains some messages/spam from me warning about the fact that this is not an official ebuild, it should not screw anything up but using it is on your own risk ;-)

Happy compiling!

Regards,
Berend Dekens
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-backup/bacula/bacula-2.0.3.ebuild,v 1.7 
2007/08/04 11:00:48 dertobi123 Exp $
# Modified by Berend Dekens for Bacula 2.2.0

inherit eutils

IUSE="bacula-clientonly bacula-console bacula-nodir bacula-nosd 
bacula-split-init bacula-bat doc gnome logrotate logwatch mysql postgres python 
readline sqlite sqlite3 ssl static tcpd wxwindows X"
KEYWORDS="amd64 ~hppa ppc ~sparc x86"

DESCRIPTION="Featureful client/server network backup suite"
HOMEPAGE="http://www.bacula.org/";

DOC_VER="${PV}"
SRC_URI="mirror://sourceforge/bacula/${P}.tar.gz
                doc? ( 
mirror://sourceforge/bacula/${PN}-docs-${DOC_VER}.tar.bz2 )"

LICENSE="GPL-2"
SLOT="0"

DEPEND="
        >=sys-libs/zlib-1.1.4
        dev-libs/gmp
        !bacula-clientonly? (
                postgres? ( >=dev-db/postgresql-7.4.0 )
                mysql? ( virtual/mysql )
                sqlite? ( =dev-db/sqlite-2* )
                sqlite3? ( >=dev-db/sqlite-3.0.0 )
                virtual/mta
        )
        bacula-console? (
                wxwindows? ( =x11-libs/wxGTK-2.6* )
                gnome? (
                        >=gnome-base/libgnome-2
                        x11-libs/gksu
                )
        )
        bacula-bat? ( 
            x11-libs/qwt
            >=x11-libs/qt-4.0.0
        )
        ssl? ( dev-libs/openssl )
        logrotate? ( app-admin/logrotate )
        logwatch? ( sys-apps/logwatch )
        tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
        readline? ( >=sys-libs/readline-4.1 )
        doc? (
                virtual/ghostscript
                dev-tex/latex2html
        )"
RDEPEND="${DEPEND}
        !bacula-clientonly? (
                sys-block/mtx
                app-arch/mt-st
        )"

pkg_setup() {
        ewarn "This ebuild was modified by Berend Dekens to support Bacula 
2.2.0"
        ewarn "Use this ebuild on your own risk and dispose of it once the 
Gentoo portage tree gets version 2.2.0"
        ewarn "If you still really want to try to install Bacula 2.2.0... enjoy 
the installation :-)"
        local dbnum
        declare -i dbnum=0
        if ! useq bacula-clientonly; then
                if useq mysql; then
                        export mydbtype='mysql'
                        let dbnum++
                fi
                if useq postgres; then
                        export mydbtype='postgresql'
                        let dbnum++
                fi
                if useq sqlite; then
                        export mydbtype='sqlite'
                        let dbnum++
                fi
                if useq sqlite3; then
                        export mydbtype='sqlite3'
                        let dbnum++
                fi
                if [[ "${dbnum}" -lt 1 ]]; then
                        eerror
                        eerror "To use ${P} it is required to set a database in 
the USE flags."
                        eerror "Supported databases are mysql, postgresql, 
sqlite, sqlite3"
                        eerror
                        die "No database type selected."
                elif [[ "${dbnum}" -gt 1 ]]; then
                        eerror
                        eerror "You have set ${P} to use multiple database 
types."
                        eerror "I don't know which to set as the default!"
                        eerror "You can use /etc/portage/package.use to set 
per-package USE flags"
                        eerror "Set it so only one database type, mysql, 
postgres, sqlite, sqlite3"
                        eerror
                        die "Multiple database types selected."
                fi
        fi

        # create the daemon group and user
        if [ -z "$(egetent group bacula)" ]; then
                enewgroup bacula
                einfo
                einfo "The group 'bacula' has been created. Any users you add 
to this"
                einfo "group have access to files created by the daemons."
                einfo
        fi
        if ! useq bacula-clientonly; then
                if [ -z "$(egetent passwd bacula)" ]; then
                        enewuser bacula -1 -1 /var/lib/bacula 
bacula,disk,tape,cdrom,cdrw
                        einfo
                        einfo "The user 'bacula' has been created.  Please see 
the bacula manual"
                        einfo "for information about running bacula as a 
non-root user."
                        einfo
                fi
        fi
}

src_unpack() {
        unpack ${A}
        cd ${S}

        # adjusts default configuration files for several binaries
        # to /etc/bacula/<config> instead of ./<config>
        pushd src && epatch "${FILESDIR}/${P}"-default-configs.patch && popd

        # replaces (deprecated) gnomesu with gksu in the gnome menu files
        #useq bacula-console && useq gnome && epatch 
"${FILESDIR}/${P}"-gnomesu2gksu.diff
}

src_compile() {
        local myconf=''

        if useq bacula-clientonly; then
                myconf="${myconf} \
                        $(use_enable bacula-clientonly client-only) \
                        $(use_enable static static-fd)"
        else
                myconf="${myconf} \
                        --with-${mydbtype} \
                        $(use_enable static static-tools) \
                        $(use_enable static static-fd) \
                        $(use_enable !bacula-nodir build-dird) \
                        $(use_enable !bacula-nosd build-stored)"
                if ! useq bacula-nodir; then
                        myconf="${myconf} $(use_enable static static-dir)"
                fi
                if ! useq bacula-nosd; then
                        myconf="${myconf} $(use_enable static static-sd)"
                fi

        fi

        if useq bacula-console; then
                myconf="${myconf} \
                        $(use_with X x) \
                        $(use_enable gnome) \
                        $(use_enable gnome tray-monitor) \
                        $(use_enable wxwindows wx-console) \
                        $(use_enable static static-cons)"
        fi
        
        if useq bacula-bat; then
                myconf="${myconf} \
                        $(use_enable bacula-bat bat)"
        fi

        myconf="${myconf} \
                $(use_with python) \
                $(use_with readline) \
                $(use_with ssl openssl) \
                $(use_with tcpd tcp-wrappers)"

        ./configure \
                --prefix=/usr \
                --mandir=/usr/share/man \
                --with-pid-dir=/var/run \
                --sysconfdir=/etc/bacula \
                --infodir=/usr/share/info \
                --with-subsys-dir=/var/lock/subsys \
                --with-working-dir=/var/lib/bacula \
                --with-scriptdir=/usr/libexec/bacula \
                --with-dir-user=bacula \
                --with-dir-group=bacula \
                --with-sd-user=root \
                --with-sd-group=bacula \
                --with-fd-user=root \
                --with-fd-group=bacula \
                --enable-smartalloc \
                --host=${CHOST} \
                ${myconf} \
                || die "configure failed"

        emake || die "emake failed"

        # build docs from bacula-docs tarball
        if useq doc; then
                pushd "${WORKDIR}/${PN}-docs-${DOC_VER}"

                ./configure \
                        --with-bacula=${S} \
                        || die "configure for bacula-docs failed"

                # the main Makefile tries to build stuff in
                # ./developer/ and ./bacula-web/, which is
                # unfortunately broken in 2.0.3, so we only
                # build stuff in ./manual/, which works.
                pushd manual
                emake -j1 || die "emake for bacula-docs failed"
                popd

                popd
        fi
}

src_install() {
        emake DESTDIR="${D}" install || die "emake install failed"

        # remove some scripts we don't need at all
        rm -f 
"${D}"/usr/libexec/bacula/{bacula,bacula-ctl-dir,bacula-ctl-fd,bacula-ctl-sd,startmysql,stopmysql}

        # rename statically linked apps
        if useq static; then
                pushd "${D}"/usr/sbin
                mv static-bacula-fd bacula-fd
                mv static-bconsole bconsole
                if ! useq bacula-clientonly; then
                        mv static-bacula-dir bacula-dir
                        mv static-bacula-sd bacula-sd
                fi
                if useq bacula-console && useq gnome; then
                        mv static-gnome-console gnome-console
                fi
                popd
        fi

        # gnome-console menu entries using gksu
        if useq bacula-console && useq gnome; then
                emake DESTDIR="${D}" install-menu-xsu \
                        || die "Failed to install gnome menu files"
        fi

        # extra files which 'make install' doesn't cover
        if ! useq bacula-clientonly; then
            # the database update scripts
                diropts -m0750
                insinto /usr/libexec/bacula/updatedb
                insopts -m0754
                doins "${S}"/updatedb/*
                fperms 0640 /usr/libexec/bacula/updatedb/README

                # the logrotate configuration
                if useq logrotate; then
                        diropts -m0755
                        insinto /etc/logrotate.d
                        insopts -m0644
                        newins "${S}"/scripts/logrotate bacula
                fi

                # the logwatch scripts
                if useq logwatch; then
                        diropts -m0750
                        dodir /etc/log.d/scripts/services
                        dodir /etc/log.d/conf/logfiles
                        dodir /etc/log.d/conf/services
                        cd "${S}"/scripts/logwatch
                        emake DESTDIR="${D}" install || die "Failed to install 
logwatch scripts"
                        cd "${S}"
                fi
        fi
        
        # install bat when enabled (for some reason ./configure doesn't pick 
this up)
        if useq bacula-bat; then
            insinto /usr/sbin
            insopts -m0754
            doins "${S}"/src/qt-console/bat
        fi

        # documentation
        for d in 
"${S}"/{ChangeLog,LICENSE,README,ReleaseNotes,SUPPORT,kernstodo,projects}; do
                dodoc "${d}"
        done
        # FIXME: developers and bacula-web documentation is broken with 2.0.3 
:-(
        if useq doc; then
#!              dodoc 
"${WORKDIR}/${PN}-docs-${DOC_VER}"/developers/developers.pdf
                dodoc "${WORKDIR}/${PN}-docs-${DOC_VER}"/manual/bacula.pdf
                diropts -m0755
#!              dodir /usr/share/doc/"${PF}"/developers
                dodir /usr/share/doc/"${PF}"/manual
                insopts -m0644
#!              insinto /usr/share/doc/"${PF}"/developers
#!              doins "${WORKDIR}/${PN}-docs-${DOC_VER}"/developers/developers/*
                insinto /usr/share/doc/"${PF}"/manual
                doins "${WORKDIR}/${PN}-docs-${DOC_VER}"/manual/bacula/*
        fi

        # setup init scripts
        myservices="fd"
        if ! useq bacula-clientonly; then
                if ! useq bacula-nodir; then
                        myservices="${myservices} dir"
                fi
                if ! useq bacula-nosd; then
                        myservices="${myservices} sd"
                fi
        fi
        if useq bacula-split-init; then
                myscripts=""
                for service in ${myservices}; do
                        myscripts="${myscripts} bacula-${service}"
                done
        else
                myscripts="bacula-all"
        fi
        for script in ${myscripts}; do
                # copy over init script and config to a temporary location
                # so we can modify them as needed
                cp "${FILESDIR}/${PV}/${script}"-conf "${T}/${script}".conf
                cp "${FILESDIR}/${PV}/${script}"-init "${T}/${script}".init
                # set database dependancy for the all-in-one and director init 
scripts
                case "${mydbtype}" in
                        sqlite*)
                                # sqlite + sqlite3 databases don't have daemons
                                sed -i -e "s:%database%::" "${T}/${script}".init
                                ;;
                        *)
                                # all other databases have daemons
                                sed -i -e "s:%database%:${mydbtype}:" 
"${T}/${script}".init
                                ;;
                esac
                # set services for the all-in-one init script
                sed -i -e "s:%services%:${myservices}:" "${T}/${script}".conf
                # install init script and config
                newinitd "${T}/${script}".init "${script}"
                newconfd "${T}/${script}".conf "${script}"
        done

        # make sure the working directory exists
        diropts -m0750
        keepdir /var/lib/bacula
}

pkg_postinst() {
        if useq bacula-clientonly; then
                fowners root:bacula /var/lib/bacula
        else
                fowners bacula:bacula /var/lib/bacula
        fi

        if ! useq bacula-clientonly && ! useq bacula-nodir; then
                einfo
                einfo "If this is a new install, you must create the 
${mydbtype} databases with:"
                einfo "  /usr/libexec/bacula/create_${mydbtype}_database"
                einfo "  /usr/libexec/bacula/make_${mydbtype}_tables"
                einfo "  /usr/libexec/bacula/grant_${mydbtype}_privileges"
                einfo
                einfo "If you're upgrading from a major release, you must 
upgrade your bacula catalog database."
                einfo "Please read the manual chapter for how to upgrade your 
database."
                einfo "You can find database upgrade scripts in 
/usr/libexec/bacula/updatedb."
                einfo
        fi
}
--- console/console.c   2007-08-11 23:50:20.000000000 +0200
+++ console/console.c   2007-06-09 11:25:27.000000000 +0200
@@ -105,7 +105,7 @@
 static int execcmd(FILE *input, BSOCK *UA_sock);
 
 
-#define CONFIG_FILE "bconsole.conf"   /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bconsole.conf"   /* default configuration 
file */
 
 static void usage()
 {
--- dird/dird.c 2007-08-11 23:49:40.000000000 +0200
+++ dird/dird.c 2007-06-07 16:46:43.000000000 +0200
@@ -85,7 +85,7 @@
 extern URES res_all;
 #endif
 
-#define CONFIG_FILE "bacula-dir.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bacula-dir.conf" /* default configuration 
file */
 
 static void usage()
 {
--- filed/filed.c       2007-08-11 23:51:18.000000000 +0200
+++ filed/filed.c       2007-06-07 16:46:43.000000000 +0200
@@ -50,7 +50,7 @@
 void *start_heap;
 
 
-#define CONFIG_FILE "bacula-fd.conf" /* default config file */
+#define CONFIG_FILE "/etc/bacula/bacula-fd.conf" /* default config file */
 
 char *configfile = NULL;
 static bool foreground = false;
--- gnome2-console/console.c    2007-08-11 23:50:45.000000000 +0200
+++ gnome2-console/console.c    2007-06-07 16:46:43.000000000 +0200
@@ -93,7 +93,7 @@
 static guint initial;
 static int numdir = 0;
 
-#define CONFIG_FILE "./bgnome-console.conf"   /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bgnome-console.conf"   /* default 
configuration file */
 
 static void usage()
 {
--- qt-console/main.cpp 2007-08-11 23:55:10.000000000 +0200
+++ qt-console/main.cpp 2007-06-07 16:46:43.000000000 +0200
@@ -46,7 +46,7 @@
 static void usage();
 static int check_resources();
 
-#define CONFIG_FILE "./bat.conf"   /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bat.conf"   /* default configuration file */
 
 /* Static variables */
 static char *configfile = NULL;
--- stored/bcopy.c      2007-08-11 23:54:48.000000000 +0200
+++ stored/bcopy.c      2007-06-07 16:46:43.000000000 +0200
@@ -57,7 +57,7 @@
 static uint32_t jobs = 0;
 static DEV_BLOCK *out_block;
 
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;                /* proceed inspite of I/O errors */
--- stored/bextract.c   2007-08-11 23:45:44.000000000 +0200
+++ stored/bextract.c   2007-06-07 16:46:43.000000000 +0200
@@ -64,7 +64,7 @@
 static uint32_t wsize;                /* write size */
 static uint64_t fileAddr = 0;         /* file write address */
 
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;
--- stored/bls.c        2007-08-11 23:46:05.000000000 +0200
+++ stored/bls.c        2007-06-07 16:46:43.000000000 +0200
@@ -59,7 +59,7 @@
 static uint32_t num_files = 0;
 static ATTR *attr;
 
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;
--- stored/bscan.c      2007-08-11 23:46:26.000000000 +0200
+++ stored/bscan.c      2007-06-18 21:29:26.000000000 +0200
@@ -100,7 +100,7 @@
 static int num_media = 0;
 static int num_files = 0;
 
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
 char *configfile = NULL;
 STORES *me = NULL;                    /* our Global resource */
 bool forge_on = false;                /* proceed inspite of I/O errors */
--- stored/btape.c      2007-08-11 23:46:59.000000000 +0200
+++ stored/btape.c      2007-06-07 16:46:43.000000000 +0200
@@ -98,7 +98,7 @@
 
 
 /* Static variables */
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
 char *configfile = NULL;
 
 #define MAX_CMD_ARGS 30
--- stored/stored.c     2007-08-11 23:54:32.000000000 +0200
+++ stored/stored.c     2007-06-23 11:58:34.000000000 +0200
@@ -52,7 +52,7 @@
 
 extern "C" void *device_initialization(void *arg);
 
-#define CONFIG_FILE "bacula-sd.conf"  /* Default config file */
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"  /* Default config file */
 
 /* Global variables exported */
 char OK_msg[]   = "3000 OK\n";
--- tray-monitor/tray-monitor.c 2007-08-11 23:49:13.000000000 +0200
+++ tray-monitor/tray-monitor.c 2007-06-07 16:46:43.000000000 +0200
@@ -104,7 +104,7 @@
 
 PangoFontDescription *font_desc = NULL;
 
-#define CONFIG_FILE "./tray-monitor.conf"   /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/tray-monitor.conf"   /* default configuration 
file */
 
 static void usage()
 {
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to