]> git.sur5r.net Git - bacula/bacula/commitdiff
Add gentoo ebuild and new gentoo init
authorScott Barninger <scott@barninger.com>
Sun, 24 Oct 2004 13:58:25 +0000 (13:58 +0000)
committerScott Barninger <scott@barninger.com>
Sun, 24 Oct 2004 13:58:25 +0000 (13:58 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1666 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/autoconf/configure.in
bacula/platforms/gentoo/bacula-init.in [new file with mode: 0755]
bacula/platforms/gentoo/bacula.ebuild [new file with mode: 0644]

index 56c291608075efd433d44a9f5a48e16dad77f764..d7b4afc0da904d953a82a3f7839463969794955d 100644 (file)
@@ -1699,6 +1699,7 @@ gentoo)
        PSCMD="ps -e -o pid,command"
        PFILES="${PFILES} \
            platforms/gentoo/Makefile \
+         platforms/gentoo/bacula-init \
            platforms/gentoo/bacula-fd \
            platforms/gentoo/bacula-sd \
            platforms/gentoo/bacula-dir"
@@ -1818,6 +1819,7 @@ AC_OUTPUT([autoconf/Make.common \
           scripts/bacula.desktop.gnome2.xsu \
           scripts/gnome-console.console_apps \
           scripts/mtx-changer \
+        scripts/bacula-tray-monitor.desktop \
           doc/Makefile \
           src/Makefile \
           src/host.h \
diff --git a/bacula/platforms/gentoo/bacula-init.in b/bacula/platforms/gentoo/bacula-init.in
new file mode 100755 (executable)
index 0000000..fa9068d
--- /dev/null
@@ -0,0 +1,94 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Modified for user/group information
+# 24 Oct 2004 D. Scott Barninger <barninger at fairfieldcomputers dot com
+
+depend() {
+       need net
+       use @DB_NAME@
+}
+
+opts="test"
+
+DIR_USER=@dir_user@
+DIR_GROUP=@dir_group@
+SD_USER=@sd_user@
+SD_GROUP=@sd_group@
+FD_USER=@fd_user@
+FD_GROUP=@fd_group@
+
+# A client would only need to run the file daemon, so if thats the
+# case for this machine just comment the other two out below here...
+start() {
+       ebegin "Starting bacula storage daemon"
+       OPTIONS=''
+       if [ "${SD_USER}" != '' ]; then
+               OPTIONS="${OPTIONS} -u ${SD_USER}"
+       fi
+                                                                                  
+       if [ "${SD_GROUP}" != '' ]; then
+               OPTIONS="${OPTIONS} -g ${SD_GROUP}"
+       fi
+       start-stop-daemon --start --quiet --exec @sbindir@/bacula-sd \
+               -- ${OPTIONS} -c @sysconfdir@/bacula-sd.conf
+       result=$?
+
+       ebegin "Starting bacula file daemon"
+       OPTIONS=''
+       if [ "${FD_USER}" != '' ]; then
+               OPTIONS="${OPTIONS} -u ${FD_USER}"
+       fi
+                                                                                  
+       if [ "${FD_GROUP}" != '' ]; then
+               OPTIONS="${OPTIONS} -g ${FD_GROUP}"
+       fi
+       start-stop-daemon --start --quiet --exec @sbindir@/bacula-fd \
+               -- ${OPTIONS} -c @sysconfdir@/bacula-fd.conf
+       result=$(( $result + $? ))
+       sleep 2
+
+       ebegin "Starting bacula director"
+       OPTIONS=''
+       if [ "${DIR_USER}" != '' ]; then
+               OPTIONS="${OPTIONS} -u ${DIR_USER}"
+       fi
+                                                                                  
+       if [ "${DIR_GROUP}" != '' ]; then
+               OPTIONS="${OPTIONS} -g ${DIR_GROUP}"
+       fi
+       start-stop-daemon --start --quiet --exec @sbindir@/bacula-dir \
+               -- ${OPTIONS} -c @sysconfdir@/bacula-dir.conf
+       result=$(( $result + $? ))
+
+       eend $result
+}
+
+# The default port numbers appear in the pidfile paths below.
+# Might wanna programmatically grab them from the config files
+# or something...
+stop() {
+       ebegin "Stopping bacula file daemon"
+       start-stop-daemon --stop --quiet --pidfile /var/run/bacula-fd.9102.pid
+       result=$?
+       ebegin "Stopping bacula storage daemon"
+       start-stop-daemon --stop --quiet --pidfile /var/run/bacula-sd.9103.pid
+       result=$(( $result + $? ))
+       ebegin "Stopping bacula director"
+       start-stop-daemon --stop --quiet --pidfile /var/run/bacula-dir.9101.pid
+       result=$(( $result + $? ))
+       eend $result
+}
+
+test() {
+       ebegin "Testing bacula storage daemon configuration"
+       @sbindir@/bacula-sd -t -c @sysconfdir@/bacula-sd.conf
+       result=$?
+       ebegin "Testing bacula file daemon configuration"
+       @sbindir@/bacula-fd -t -c @sysconfdir@/bacula-fd.conf
+       result=$(( $result + $? ))
+       ebegin "Testing bacula director configuration"
+       @sbindir@/bacula-dir -t -c @sysconfdir@/bacula-dir.conf
+       result=$(( $result + $? ))
+       eend $result
+}
diff --git a/bacula/platforms/gentoo/bacula.ebuild b/bacula/platforms/gentoo/bacula.ebuild
new file mode 100644 (file)
index 0000000..c8a62d4
--- /dev/null
@@ -0,0 +1,309 @@
+# Copyright 2004 D. Scott Barninger
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Modified from bacula-1.34.5.ebuild for 1.36.0 release
+# 24 Oct 2004 D. Scott Barninger <barninger at fairfieldcomputers dot com>
+
+DESCRIPTION="featureful client/server network backup suite"
+HOMEPAGE="http://www.bacula.org/"
+SRC_URI="mirror://sourceforge/bacula/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~ppc ~sparc"
+IUSE="readline tcpd gnome mysql sqlite X static postgres wxwindows"
+
+inherit eutils
+
+#theres a local sqlite use flag. use it -OR- mysql, not both.
+#mysql is the reccomended choice ...
+#may need sys-libs/libtermcap-compat but try without first
+DEPEND=">=sys-libs/zlib-1.1.4
+       sys-apps/mtx
+       readline? ( >=sys-libs/readline-4.1 )
+       tcpd? ( >=sys-apps/tcp-wrappers-7.6 )
+       gnome? ( gnome-base/libgnome )
+       gnome? ( app-admin/gnomesu )
+       sqlite? ( =dev-db/sqlite-2* )
+       mysql? ( >=dev-db/mysql-3.23 )
+       postgres? ( >=dev-db/postgresql-7.4.0 )
+       X? ( virtual/x11 )
+       wxwindows? ( >=x11-libs/wxGTK-2.4.2 )
+       virtual/mta
+       dev-libs/gmp"
+RDEPEND="${DEPEND}
+       sys-apps/mtx
+       app-arch/mt-st"
+
+src_compile() {
+
+       # patch configure for scripts/bacula-tray-monitor.desktop
+       patch ${S}/configure ${FILESDIR}/${P}-configure.diff
+
+       local myconf=""
+
+       #sed -i -e "s:$bindir/mysql:$bindir/mysql -p:g" grant_mysql_privileges.in
+
+       #define this to skip building the other daemons ...
+       [ -n "$BUILD_CLIENT_ONLY" ] \
+               && myconf="${myconf} --enable-client-only"
+
+       myconf="
+               `use_enable readline`
+               `use_enable gnome`
+               `use_enable tcpd tcp-wrappers`
+               `use_enable X x`"
+
+       [ -n "$BUILD_CLIENT_ONLY" ] \
+                && myconf="${myconf} --enable-client-only"
+
+       # mysql is the reccomended choice ...
+       if use mysql
+       then
+               myconf="${myconf} --with-mysql=/usr"
+       elif use postgres
+       then
+               myconf="${myconf} --with-postgresql=/usr"
+       elif use sqlite
+       then
+               myconf="${myconf} --with-sqlite=/usr"
+       elif  use sqlite && use mysql
+       then
+               myconf="${myconf/--with-sqlite/}"
+       fi
+
+       if use wxwindows
+       then
+          myconf="${myconf} --enable-wx-console"
+       fi
+
+       if use readline
+       then
+          myconf="${myconf} --enable-readline"
+       fi
+
+       if use gnome
+       then
+       myconf="${myconf} --enable-tray-monitor"
+       fi
+
+
+       ./configure \
+               --enable-smartalloc \
+               --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/bacula \
+               --with-scriptdir=/etc/bacula \
+               --with-dir-user=root \
+               --with-dir-group=bacula \
+               --with-sd-user=root \
+               --with-sd-group=bacula \
+               --with-fd-user=root \
+               --with-fd-group=bacula \
+               --host=${CHOST} ${myconf} || die "bad ./configure"
+
+       emake || die "compile problem"
+
+       if use static
+       then
+               cd ${S}/src/filed
+               make static-baula-fd
+               cd ${S}/src/console
+               make static-console
+               cd ${S}/src/dird
+               make static-bacula-dir
+               if use gnome
+               then
+                 cd ${S}/src/gnome-console
+                 make static-gnome-console
+               fi
+               if use wxwindows
+               then
+                 cd ${S}/src/wx-console
+                 make static-wx-console
+               fi
+               cd ${S}/src/stored
+               make static-bacula-sd
+       fi
+}
+
+src_install() {
+       make DESTDIR=${D} install || die
+
+       if use static
+       then
+               cd ${S}/src/filed
+               cp static-bacula-fd ${D}/usr/sbin/bacula-fd
+               cd ${S}/src/console
+               cp static-console ${D}/usr/sbin/console
+               cd ${S}/src/dird
+               cp static-bacula-dir ${D}/usr/sbin/bacula-dir
+               if use gnome
+               then
+                       cd ${S}/src/gnome-console
+                       cp static-gnome-console ${D}/usr/sbin/gnome-console
+               fi
+               if use wxwindows
+               then
+                       cd ${S}/src/wx-console
+                       cp static-wx-console ${D}/usr/sbin/wx-console
+               fi
+               cd ${S}/src/storge
+               cp static-bacula-sd ${D}/usr/sbin/bacula-sd
+       fi
+
+       # the menu stuff
+       if use gnome
+       then
+       mkdir -p ${D}/usr/share/pixmaps
+       mkdir -p ${D}/usr/share/applications
+       cp ${S}/scripts/bacula.png ${D}/usr/share/pixmaps/bacula.png
+       cp ${S}/scripts/bacula.desktop.gnome2.xsu ${D}/usr/share/applications/bacula.desktop
+       cp ${S}/src/tray-monitor/generic.xpm ${D}/usr/share/pixmaps/bacula-tray-monitor.xpm
+       cp ${S}/scripts/bacula-tray-monitor.desktop \
+               ${D}/usr/share/applications/bacula-tray-monitor.desktop
+       chmod 755 ${D}/usr/sbin/bacula-tray-monitor
+       chmod 644 ${D}/etc/bacula/tray-monitor.conf
+       fi
+
+       # the database update scripts
+       mkdir -p ${D}/etc/bacula/updatedb
+       cp ${S}/updatedb/* ${D}/etc/bacula/updatedb/
+       chmod 754 ${D}/etc/bacula/updatedb/*
+
+       # documentation
+       for a in ${S}/{Changelog,README,ReleaseNotes,kernstodo,LICENSE,doc/bacula.pdf}
+       do
+               dodoc $a
+       done
+
+       dohtml -r ${S}/doc/html-manual doc/home-page
+       chown -R root:root ${D}/usr/share/doc/${PF}
+       chmod -R 644 ${D}/usr/share/doc/${PF}/*
+       
+       # clean up permissions left broken by install
+       chmod o-r ${D}/etc/bacula/query.sql
+
+       # remove the working dir so we can add it postinst with group
+       rmdir ${D}/var/bacula
+
+       exeinto /etc/init.d
+       newexe ${FILESDIR}/bacula-init bacula
+}
+
+pkg_postinst() {
+       # create the daemon group
+       HAVE_BACULA=`cat /etc/group | grep bacula 2>/dev/null`
+       if [ -z $HAVE_BACULA ]; then
+       enewgroup bacula
+       einfo
+       einfo "The group bacula has been created. Any users you add to"
+       einfo "this group have access to files created by the daemons."
+       fi
+
+       # the working directory
+       install -m0750 -o root -g bacula -d ${ROOT}/var/bacula
+
+       einfo
+       einfo "Please note either/or nature of database USE flags for"
+       einfo "Bacula.  If mysql is set, it will be used, else postgresql"
+       einfo "else finally SQLite.  If you wish to have multiple DBs on"
+       einfo "one system, you may wish to unset auxillary DBs for this"
+       einfo "build."
+       einfo
+
+       if use mysql
+       then
+       # test for an existing database
+       # note: this ASSUMES no password has been set for bacula database
+       DB_VER=`mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+               if [ -z "$DB_VER" ]; then
+               einfo "This appears to be a new install and you plan to use mysql"
+               einfo "for your catalog database. You should now create it by doing"
+               einfo "these commands:"
+               einfo " sh /etc/bacula/grant_mysql_privileges"
+               einfo " sh /etc/bacula/create_mysql_database"
+               einfo " sh /etc/bacula/make_mysql_tables"
+               elif [ "$DB_VER" -lt "8" ]; then
+               elinfo "This release requires an upgrade to your bacula database"
+               einfo "as the database format has changed.  Please read the"
+               einfo "manual chapter for how to upgrade your database!!!"
+               einfo
+               einfo "Backup your database with the command:"
+               einfo " mysqldump -f --opt bacula | bzip2 > /var/bacula/bacula_backup.sql.bz"
+               einfo
+               einfo "Then update your database using the scripts found in"
+               einfo "/etc/bacula/updatedb/ from your current version $DB_VER to"
+               einfo "version 8. Note that scripts must be run in order from your"
+               einfo "version to the current version."
+               fi
+       fi
+
+       if use postgresql
+       then
+       # test for an existing database
+       # note: this ASSUMES no password has been set for bacula database
+       DB_VER=`echo 'select * from Version;' | psql bacula | tail -3 | head -1 2>/dev/null`
+               if [ -z "$DB_VER" ]; then
+               einfo "This appears to be a new install and you plan to use postgresql"
+               einfo "for your catalog database. You should now create it by doing"
+               einfo "these commands:"
+               einfo " sh /etc/bacula/grant_postgresql_privileges"
+               einfo " sh /etc/bacula/create_postgresql_database"
+               einfo " sh /etc/bacula/make_postgresql_tables"
+               elif [ "$DB_VER" -lt "8" ]; then
+               elinfo "This release requires an upgrade to your bacula database"
+               einfo "as the database format has changed.  Please read the"
+               einfo "manual chapter for how to upgrade your database!!!"
+               einfo
+               einfo "Backup your database with the command:"
+               einfo " pg_dump bacula | bzip2 > /var/bacula/bacula_backup.sql.bz2"
+               einfo
+               einfo "Then update your database using the scripts found in"
+               einfo "/etc/bacula/updatedb/ from your current version $DB_VER to"
+               einfo "version 8. Note that scripts must be run in order from your"
+               einfo "version to the current version."
+               fi
+       fi
+
+       if use sqlite
+       then
+       # test for an existing database
+       # note: this ASSUMES no password has been set for bacula database
+       DB_VER=`echo "select * from Version;" | sqlite /var/bacula/bacula.db | tail -n 1 2>/dev/null`
+               if [ -z "$DB_VER" ]; then
+               einfo "This appears to be a new install and you plan to use sqlite"
+               einfo "for your catalog database. You should now create it by doing"
+               einfo "these commands:"
+               einfo " sh /etc/bacula/grant_sqlite_privileges"
+               einfo " sh /etc/bacula/create_sqlite_database"
+               einfo " sh /etc/bacula/make_sqlite_tables"
+               elif [ "$DB_VER" -lt "8" ]; then
+               elinfo "This release requires an upgrade to your bacula database"
+               einfo "as the database format has changed.  Please read the"
+               einfo "manual chapter for how to upgrade your database!!!"
+               einfo
+               einfo "Backup your database with the command:"
+               einfo " echo .dump | sqlite /var/bacula/bacula.db | bzip2 > \"
+               einfo "   /var/bacula/bacula_backup.sql.bz2"
+               einfo
+               einfo "Then update your database using the scripts found in"
+               einfo "/etc/bacula/updatedb/ from your current version $DB_VER to"
+               einfo "version 8. Note that scripts must be run in order from your"
+               einfo "version to the current version."
+               fi
+       fi
+
+       einfo
+       einfo "Then setup your configuration files in /etc/bacula and"
+       einfo "start the daemons:"
+       einfo " /etc/init.d/bacula start"
+       einfo
+       einfo "You may also wish to:"
+       einfo " rc-update add bacula default"
+       einfo
+}