diff options
Diffstat (limited to 'app-backup/bacula/bacula-1.36.3.ebuild')
-rw-r--r-- | app-backup/bacula/bacula-1.36.3.ebuild | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/app-backup/bacula/bacula-1.36.3.ebuild b/app-backup/bacula/bacula-1.36.3.ebuild new file mode 100644 index 000000000000..8086a730393e --- /dev/null +++ b/app-backup/bacula/bacula-1.36.3.ebuild @@ -0,0 +1,327 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-backup/bacula/bacula-1.36.3.ebuild,v 1.1 2005/07/04 01:52:06 robbat2 Exp $ + +inherit eutils + +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="~ppc ~sparc ~x86" +IUSE="bacula-clientonly bacula-console bacula-split doc gnome logrotate logwatch mysql postgres readline sqlite static tcpd wxwindows X" + +#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 + dev-libs/gmp + !bacula-clientonly? ( + mysql? ( >=dev-db/mysql-3.23 ) + postgres? ( >=dev-db/postgresql-7.4.0 ) + sqlite? ( =dev-db/sqlite-2* ) + !mysql? ( !postgres? ( !sqlite? ( >=dev-db/mysql-3.23 ) ) ) + virtual/mta + ) + bacula-console? ( + X? ( virtual/x11 ) + wxwindows? ( >=x11-libs/wxGTK-2.4.2 ) + gnome? ( gnome-base/libgnome ) + gnome? ( app-admin/gnomesu ) + ) + doc? ( + app-text/tetex + dev-tex/latex2html + ) + logrotate? ( app-admin/logrotate ) + logwatch? ( sys-apps/logwatch ) + tcpd? ( >=sys-apps/tcp-wrappers-7.6 ) + readline? ( >=sys-libs/readline-4.1 )" +RDEPEND="${DEPEND} + !bacula-clientonly? ( + sys-block/mtx + app-arch/mt-st + )" + +pkg_setup() { + if ( use mysql || use postgres ) && [ -z ${BACULA_DB_USER} ] && [ -z ${BACULA_DB_PASSWORD} ] && [ -z ${BACULA_DB_HOST} ]; then + # Display warning about DB query environment variables + einfo + einfo "If you are upgrading or rebuilding your bacula installation and" + einfo "your database requires you to specify user, password, or host" + einfo "you may do so with the environment variables BACULA_DB_USER," + einfo "BACULA_DB_PASSWORD, and BACULA_DB_HOST respectively." + einfo + einfo "For example:" + einfo "# export BACULA_DB_USER=\"bacula\"" + einfo "# export BACULA_DB_PASSWORD=\"mydbpassword\"" + einfo "# export BACULA_DB_HOST=\"mydbhost.mydomain.net\"" + einfo "# emerge bacula" + einfo + einfo "If you require these variables and have not set them yet, you" + einfo "may wish to abort now and do so. If this is a new installation" + einfo "of bacula, this should not affect you." + einfo + + ebeep 3 + ewarn "Press Ctrl-C to abort. Merge will resume in 10 seconds." + epause 10 + fi +} + +src_unpack() { + unpack ${P}.tar.gz + cd ${S} + # this resolves bacula bug #181 + epatch ${FILESDIR}/${PN}-1.36.2-cdrecord-configure.patch + # fixes lack of depend() in split init scripts + epatch ${FILESDIR}/${PN}-1.36.3-init-depends.patch + # adds build/install capability to ${S}/rescue/linux/Makefile.in + epatch ${FILESDIR}/${PN}-1.36.3-rescue-makefile.patch + cd ${S} +} + +src_compile() { + local myconf="" + if use bacula-clientonly ; then + myconf="${myconf} + `use_enable bacula-clientonly client-only` + `use_enable static static-fd`" + fi + if use bacula-console ; then + myconf="${myconf} + `use_enable X x` + `use_enable gnome tray-monitor` + `use_enable wxwindows wx-console` + `use_enable static static-cons`" + fi + myconf="${myconf} + `use_enable readline` + `use_enable tcpd tcp-wrappers`" + + # select database support + if ! use bacula-clientonly; then + if ! use mysql && ! use postgres && ! use sqlite ; then + ewarn "No database enabled in USE." + ewarn "Using mysql database support by default." + myconf="${myconf} + `use_with mysql`" + elif use mysql ; then + if use postgres ; then + ewarn "Multiple databases enabled in USE." + ewarn "Using mysql database support by default." + elif use sqlite ; then + ewarn "Multiple databases enabled in USE." + ewarn "Using mysql database support by default." + fi + myconf="${myconf} + `use_with mysql`" + elif use postgres ; then + if use sqlite ; then + ewarn "Multiple databases enabled in USE." + ewarn "Using postgresql database support by default." + fi + myconf="${myconf} + `use_with postgres postgresql`" + else + myconf="${myconf} + `use_with sqlite`" + fi + fi + if ! use bacula-clientonly; then + if use static ; then + myconf="${myconf} + `use_enable static static-tools` + `use_enable static static-fd` + `use_enable static static-sd` + `use_enable static static-dir`" + fi + fi + + ./configure \ + --prefix=/usr \ + --enable-smartalloc \ + --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 "Configure failed!" + + emake || die "Failed primary build!" + + if use doc ; then + # make the docs + cd ${S}/doc/latex && emake || die "Failed to build tetx docs!" && cd ${S} + fi +} + +src_install() { + emake DESTDIR=${D} install || die "Failed install to ${D} !" + + if use gnome ; then + dodir /usr/bin + emake DESTDIR=${D} \ + install-menu \ + install-menu-xsu \ + install-menu-consolehelper || die "Failed to install gnome menu files to ${D} !" + + #chmod 755 ${D}/usr/sbin/bacula-tray-monitor + #chmod 644 ${D}/etc/bacula/tray-monitor.conf + fi + if ! use bacula-clientonly ; then + # the database update scripts + mkdir -p ${D}/etc/bacula/updatedb + cp ${S}/updatedb/* ${D}/etc/bacula/updatedb/ + chmod 754 ${D}/etc/bacula/updatedb/* + + # the logrotate configuration + if use logrotate ; then + mkdir -p ${D}/etc/logrotate.d + cp ${S}/scripts/logrotate ${D}/etc/logrotate.d/bacula + chmod 644 ${D}/etc/logrotate.d/bacula + fi + + # the logwatch scripts + if use logwatch ; then + cd ${S}/scripts/logwatch + emake DESTDIR=${D} install || die "Failed to install logwatch scripts to ${D} !" + cd ${S} + fi + fi + # documentation + for a in ${S}/{Changelog,LICENSE,README,ReleaseNotes,kernstodo,doc/BaculaRoadMap_*.pdf} + do + dodoc ${a} + done + # clean up permissions left broken by install + chown -R root:root ${D}/usr/share/doc/${PF} + chmod -R 644 ${D}/usr/share/doc/${PF}/* + 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 ${S}/etc/init.d + if use bacula-clientonly ; then + newexe ${S}/platforms/gentoo/bacula-fd bacula-fd + else + if use bacula-split ; then + newexe ${S}/platforms/gentoo/bacula-fd bacula-fd + newexe ${S}/platforms/gentoo/bacula-sd bacula-sd + newexe ${S}/platforms/gentoo/bacula-dir bacula-dir + else + newexe ${S}/platforms/gentoo/bacula-init bacula + fi + fi +} + +pkg_postinst() { + # create the daemon group + HAVE_BACULA=`cat /etc/group | grep bacula 2>/dev/null` + if [ -z ${HAVE_BACULA} ]; then + enewgroup bacula + einfo "The group bacula has been created. Any users you add to" + einfo "this group have access to files created by the daemons." + # the working directory + install -m0750 -o root -g bacula -d ${ROOT}/var/bacula + fi + + einfo + einfo "The CD-ROM rescue disk package has been installed into the" + einfo "/etc/bacula/rescue/cdrom/ directory. Please examine the manual" + einfo "for information on creating a rescue CD." + einfo + + if ! use bacula-clientonly ; then + # test for an existing database + if use mysql ; then + mydb="mysql" + elif use postgres ; then + mydb="postgresql" + elif use sqlite ; then + mydb="sqlite" + else + mydb="mysql" + fi + + if [ ${mydb} == "sqlite" ]; then + DB_VER=`echo "select * from Version;" | sqlite /var/bacula/bacula.db | tail -n 1 2>/dev/null` + else + if [ -z ${BACULA_DB_USER} ] && [ -z ${BACULA_DB_PASSWORD} ] && [ -z ${BACULA_DB_HOST} ]; then + if [ ${mydb} == "mysql" ]; then + DB_VER=`mysql bacula -e 'select * from Version;' | tail -n 1 2>/dev/null` + elif [ ${mydb} == "postgresql" ]; then + DB_VER=`echo 'select * from Version;' | psql bacula | tail -3 | head -n 1 2>/dev/null` + fi + else + BACULA_DB_OPTS="" + if [ ${mydb} == "mysql" ]; then + if [ ! -z ${BACULA_DB_HOST} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --host=${BACULA_DB_HOST}" + fi + if [ ! -z ${BACULA_DB_USER} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --user=${BACULA_DB_USER}" + fi + if [ ! -z ${BACULA_DB_PASSWORD} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --password=${BACULA_DB_PASSWORD}" + fi + DB_VER=`mysql ${BACULA_DB_OPTS} -e 'select * from Version' bacula | tail -n 1 2>/dev/null` + elif [ ${mydb} == "postgresql" ]; then + if [ ! -z ${BACULA_DB_HOST} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --host ${BACULA_DB_HOST}" + fi + if [ ! -z ${BACULA_DB_USER} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --username ${BACULA_DB_USER}" + fi + # psql prompts for password by default but we can force it. + # psql(1) does not seem to support --password=somepass + # NOTE: this is untested + if [ ! -z ${BACULA_DB_PASSWORD} ]; then + BACULA_DB_OPTS="${BACULA_DB_OPTS} --password" + fi + DB_VER=`echo 'select * from Version;' | psql ${BACULA_DB_OPTS} bacula | tail -3 | head -n 1 2>/dev/null` + fi + fi + fi + if [ -z "${DB_VER}" ]; then + einfo "This appears to be a new install and you plan to use ${mydb}" + einfo "for your catalog database. You should now create it with the" + einfo "following commands:" + einfo " sh /etc/bacula/grant_${mydb}_privileges" + einfo " sh /etc/bacula/create_${mydb}_database" + einfo " sh /etc/bacula/make_${mydb}_tables" + elif [ "${DB_VER}" -lt "8" ]; then + einfo "This release requires an upgrade to your bacula database" + einfo "as the database format has changed. Please read the" + einfo "manual chapter for upgrading your database!" + fi + fi + + einfo + einfo "Configuration files are installed in /etc/bacula and" + einfo "init script(s) are:" + if use bacula-clientonly ; then + einfo " /etc/init.d/bacula-fd" + else + if use bacula-split ; then + einfo " /etc/init.d/bacula-sd" + einfo " /etc/init.d/bacula-dir" + einfo " /etc/init.d/bacula-fd" + einfo " or /etc/bacula/bacula will start all three." + else + einfo " /etc/init.d/bacula" + fi + fi + einfo +} |