# Distributed under the terms of the GNU General Public License v2 # Copyright 1999-2018 Gentoo Foundation # Copyright 2018 Gluzskiy Alexandr SCM_REPOSITORY="http://git.bacula.org/bacula.git" SCM_BRANCH="Branch-9.0" require scm-git systemd-service qmake [ slot=5 ] require autotools [ supported_autoconf=[ 2.5 ] supported_automake=[ 1.15 1.13 1.12 1.11 ] need_libtool=true ] DOWNLOADS="" SLOT="0" PLATFORMS="~amd64 ~x86" SUMMARY="Featureful client/server network backup suite" HOMEPAGE="https://blog.bacula.org" LICENCES="AGPL-3" MYOPTIONS=" acl minimal [[ description = [ Build only bacula-fd client daemon ] ]] bacula-nodir [[ description = [ Do not build bacula directory server ] ]] bacula-nosd [[ description = [ Do not build storage daemon ] ]] examples ipv6 logwatch [[ description = [ Add support for sys-apps/logwatch ] ]] qt5 readline ssl [[ description = [ Allow to use encryption of data storage via ssl backend library ] ]] tcpd vim-syntax X ssl? ( providers: libressl openssl ) [[ number-selected = exactly-one ]] !minimal? ( mysql postgres [[ description = [ Adds PostgreSQL Database support ] ]] sqlite ) [[ number-selected = exactly-one ]] " DEPENDENCIES=" build+run: app-arch/lzo dev-libs/gmp:6 sys-libs/ncurses sys-libs/zlib acl? ( sys-apps/acl ) logwatch? ( sys-apps/logwatch ) !minimal? ( postgres? ( dev-db/postgresql ) mysql? ( virtual/mysql ) sqlite? ( dev-db/sqlite ) !bacula-nodir? ( virtual/mta ) !bacula-nosd? ( sys-block/mtx app-arch/mt-st ) ) qt5? ( x11-libs/qwt[qt5] x11-libs/qtsvg:5 ) readline? ( sys-libs/readline:7 ) ssl? ( providers:libressl? ( dev-libs/libressl ) providers:openssl? ( dev-libs/openssl ) ) tcpd? ( sys-apps/tcp-wrappers ) vim-syntax? ( || ( app-editors/vim app-editors/gvim ) ) user/bacula group/bacula " WORK="${WORK}"/bacula pkg_setup() { option mysql && export mydbtype="mysql" option postgres && export mydbtype="postgresql" option sqlite && export mydbtype="sqlite3" } DEFAULT_SRC_PREPARE_PATCHES=( -p0 "${FILES}"/7.2.0/${PN}-7.2.0-doc.patch -p1 "${FILES}"/5.2.3/${PN}-5.2.3-as-needed.patch -p0 "${FILES}"/9.0.2/${PN}-9.0.2-lib-search-path.patch "${FILES}"/5.2.3/${PN}-5.2.3-openssl-1.patch "${FILES}/bacula-fix-sonames.patch" "${FILES}"/7.0.2/${PN}-7.0.2-depend.patch "${FILES}"/9.0.6/${PN}-9.0.6-libressl.patch ) src_prepare() { #NOTE: ciphertext mostly copypasted from gentoo follows #do not ask me to decipher this, i probably can't edo pushd src >&/dev/null for f in console/console.c dird/dird.c filed/filed.c \ stored/bcopy.c stored/bextract.c stored/bls.c \ stored/bscan.c stored/btape.c stored/stored.c \ qt-console/main.cpp; do edo sed -i -e 's|^\(#define CONFIG_FILE "\)|\1/etc/bacula/|g' "${f}" done edo popd >&/dev/null edo sed -i -e 's/Application;//' scripts/bat.desktop.in edo sed -i -e 's/@CFLAGS@/@CXXFLAGS@/' autoconf/Make.common.in expatch -p0 "${FILES}"/9.0.6/${PN}-9.0.6-bat-pro.patch edo sed -i -e "s/strip /# strip /" src/filed/Makefile.in edo sed -i -e "s/strip /# strip /" src/console/Makefile.in edo sed -i -e '/Requires/d' platforms/systemd/*.service.in edo sed -i -e '/StandardOutput/d' platforms/systemd/*.service.in edo sed -i -e '/Alias=bacula-dir/d' platforms/systemd/bacula-dir.service.in edo sed -i -e 's/@dir_user@/root/g' platforms/systemd/bacula-dir.service.in edo sed -i -e 's#bins.files = bat#bins.files = .libs/bat#g' \ src/qt-console/bat.pro.in edo mkdir src/qt-console/.libs edo touch src/qt-console/.libs/bat edo chmod 755 src/qt-console/.libs/bat edo mv autoconf/libtool autoconf/libtool1 default } src_configure() { local myconf=() if option minimal; then myconf+=( $(option_enable minimal client-only) ) else myconf+=( $(option_enable !bacula-nodir build-dird) $(option_enable !bacula-nosd build-stored) --with-${mydbtype} ) if option mysql; then myconf+=( --disable-batch-insert ) else myconf+=( --enable-batch-insert ) fi fi econf \ "${myconf[@]}" \ $(option_enable qt5 bat) \ $(option_with X x) \ $(option_enable !readline conio) \ $(option_enable readline) \ $(option_with ssl openssl) \ $(option_enable acl) \ $(option_enable ipv6) \ $(option_with tcpd tcp-wrappers) \ --with-dir-user=bacula \ --with-dir-group=bacula \ --with-sd-user=root \ --with-sd-group=bacula \ --with-fd-user=root \ --with-fd-group=bacula \ --with-scriptdir=/usr/$(exhost --target)/libexec/bacula \ --with-working-dir=/var/lib/bacula \ --with-subsys-dir=/var/lock/subsys \ --sysconfdir=/etc/bacula \ --with-pid-dir=/var/run \ --libdir=/usr/$(exhost --target)/lib \ --enable-smartalloc \ --disable-afs \ } src_compile() { emake NO_ECHO="" } src_install() { default edo rm -f "${IMAGE}"/usr/libexec/bacula/{bacula,bacula-ctl-dir,bacula-ctl-fd,bacula-ctl-sd,startmysql,stopmysql} # extra files which 'make install' doesn't cover if ! option minimal; then # the database update scripts diropts -m0750 insinto "${IMAGE}"/usr/$(exhost --target)/libexec/bacula/updatedb insopts -m0754 doins "${WORK}"/updatedb/* fperms 0640 "${IMAGE}"/usr/$(exhost --target)/libexec/bacula/updatedb/README # the logrotate configuration # (now unconditional wrt bug #258187) diropts -m0755 insinto "${IMAGE}"/etc/logrotate.d insopts -m0644 newins "${WORK}"/scripts/logrotate bacula # the logwatch scripts if option logwatch; then diropts -m0750 dodir /usr/share/logwatch/scripts/services dodir /usr/share/logwatch/scripts/shared dodir /etc/logwatch/conf/logfiles dodir /etc/logwatch/conf/services edo pushd "${WORK}"/scripts/logwatch >&/dev/null emake install edo popd >&/dev/null fi fi if ! option qt5; then edo rm -vf "${IMAGE}"/usr/share/man/man1/bat.1* fi edo rm -vf "${IMAGE}"/usr/share/man/man1/bacula-tray-monitor.1* if option minimal || option bacula-nodir; then nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bacula-dir.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/dbcheck.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man1/bsmtp.1* nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/create_*_database nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/drop_*_database nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/make_*_tables nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/update_*_tables nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/drop_*_tables nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/grant_*_privileges nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/*_catalog_backup fi if option minimal || option bacula-nosd; then nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bacula-sd.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bcopy.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bextract.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bls.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/bscan.8* nonfatal edo rm -vf "${IMAGE}"/usr/share/man/man8/btape.8* nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/disk-changer nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/mtx-changer nonfatal edo rm -vf "${IMAGE}"/usr/libexec/bacula/dvd-handler fi if option examples; then docinto examples/ dodoc -r examples/* fi # vim-files if option vim-syntax; then insinto /usr/share/vim/vimfiles/syntax doins scripts/bacula.vim insinto /usr/share/vim/vimfiles/ftdetect newins scripts/filetype.vim bacula_ft.vim fi edo rmdir "${IMAGE}"/usr/share/man/man1 edo rmdir "${IMAGE}"/tmp edo rmdir "${IMAGE}"/opt/bacula/log edo rmdir "${IMAGE}"/opt/bacula edo rmdir "${IMAGE}"/opt keepdir /var/lib/bacula }