# 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-5 >=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 ) bacula-bat? ( ! instead of ./ 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 }