You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-backup/bareos/bareos-16.2.7.ebuild

429 lines
12 KiB

# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
EAPI="5"
PYTHON_COMPAT=( python2_7 )
PYTHON_REQ_USE="threads"
inherit eutils multilib python-single-r1 qt4-r2 user
DESCRIPTION="Featureful client/server network backup suite"
HOMEPAGE="http://www.bareos.org/"
SRC_URI="https://github.com/${PN}/${PN}/archive/Release/${PV}.tar.gz -> ${P}.tar.gz"
RESTRICT="mirror"
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="X acl cephfs clientonly +director fastlz glusterfs gnutls ipv6 jansson lmdb libressl
logwatch mysql ndmp postgres python qt4 rados rados-striper readline scsi-crypto
sql-pooling +sqlite ssl static +storage-daemon tcpd vim-syntax"
REQUIRED_USE="!clientonly? ( || ( mysql postgres sqlite ) )"
DEPEND="
!app-backup/bacula
cephfs? ( sys-cluster/ceph )
rados? ( sys-cluster/ceph )
rados-striper? ( >=sys-cluster/ceph-0.94.2 )
glusterfs? ( sys-cluster/glusterfs )
lmdb? ( dev-db/lmdb )
dev-libs/gmp:0
!clientonly? (
postgres? ( dev-db/postgresql:*[threads] )
mysql? ( virtual/mysql )
sqlite? ( dev-db/sqlite:3 )
director? (
virtual/mta
jansson? ( dev-libs/jansson )
)
)
qt4? (
dev-qt/qtsvg:4
x11-libs/qwt:5
)
fastlz? ( dev-libs/bareos-fastlzlib )
logwatch? ( sys-apps/logwatch )
tcpd? ( sys-apps/tcp-wrappers )
readline? ( sys-libs/readline:0 )
static? (
acl? ( virtual/acl[static-libs] )
sys-libs/zlib[static-libs]
dev-libs/lzo[static-libs]
sys-libs/ncurses:=[static-libs]
ssl? (
!gnutls? (
!libressl? ( dev-libs/openssl:0=[static-libs] )
libressl? ( dev-libs/libressl:0=[static-libs] )
)
gnutls? ( net-libs/gnutls[static-libs] )
)
)
!static? (
acl? ( virtual/acl )
dev-libs/lzo
ssl? (
!gnutls? (
!libressl? ( dev-libs/openssl:0= )
libressl? ( dev-libs/libressl:0= )
)
gnutls? ( net-libs/gnutls )
)
sys-libs/ncurses:=
sys-libs/zlib
)
python? ( ${PYTHON_DEPS} )
"
RDEPEND="${DEPEND}
!clientonly? (
storage-daemon? (
sys-block/mtx
app-arch/mt-st
)
)
vim-syntax? ( || ( app-editors/vim app-editors/gvim ) )"
REQUIRED_USE="static? ( clientonly )
python? ( ${PYTHON_REQUIRED_USE} )"
S=${WORKDIR}/${PN}-Release-${PV}
pkg_setup() {
use mysql && export mydbtypes+="mysql"
use postgres && export mydbtypes+=" postgresql"
use sqlite && export mydbtypes+=" sqlite"
# create the daemon group and user
if [ -z "$(egetent group bareos 2>/dev/null)" ]; then
enewgroup bareos
einfo
einfo "The group 'bareos' has been created. Any users you add to this"
einfo "group have access to files created by the daemons."
einfo
fi
if use clientonly && use static && use qt4; then
ewarn
ewarn "Building statically linked 'bat' is not supported. Ignorig 'qt4' useflag."
ewarn
fi
if ! use clientonly; then
if [ -z "$(egetent passwd bareos 2>/dev/null)" ]; then
enewuser bareos -1 -1 /var/lib/bareos bareos,disk,tape,cdrom,cdrw
einfo
einfo "The user 'bareos' has been created. Please see the bareos manual"
einfo "for information about running bareos as a non-root user."
einfo
fi
fi
use python && python-single-r1_pkg_setup
}
src_prepare() {
# adjusts default configuration files for several binaries
# to /etc/bareos/<config> instead of ./<config>
pushd src >&/dev/null || die
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
sed -i -e 's|^\(#define CONFIG_FILE "\)|\1/etc/bareos/|g' "${f}" \
|| die "sed on ${f} failed"
done
popd >&/dev/null || die
# bug 466690 Use CXXFLAGS instead of CFLAGS
sed -i -e 's/@CFLAGS@/@CXXFLAGS@/' autoconf/Make.common.in || die
# stop build for errors in subdirs
epatch "${FILESDIR}"/${PN}-12.4.5-Makefile.patch
# bat needs to respect LDFLAGS
epatch "${FILESDIR}"/${PN}-12.4.5-bat-ldflags.patch
# do not strip binaries
for d in filed console dird stored; do
sed -i -e "s/strip /# strip /" src/$d/Makefile.in || die
done
}
src_configure() {
local myconf=''
addpredict /var/lib/logrotate.status
if use clientonly; then
myconf="${myconf} \
$(use_enable clientonly client-only) \
$(use_enable !static libtool) \
$(use_enable static static-cons) \
$(use_enable static static-fd)"
fi
# do not build bat and traymonitor if 'static' clientonly
if ! use clientonly || ! use static; then
myconf="${myconf} \
$(use_enable qt4 bat) \
$(use_enable qt4 traymonitor)"
fi
myconf="${myconf} \
$(use_with X x) \
$(use_enable acl) \
$(use_enable ipv6) \
$(use_enable ndmp) \
$(use_enable readline) \
$(use_enable !readline conio) \
$(use_enable scsi-crypto) \
$(use_enable sql-pooling) \
$(use_with fastlz) \
$(use_with mysql) \
$(use_with postgres postgresql) \
$(use_with python) \
$(use_with readline) \
$(use_with sqlite sqlite3) \
$(use sqlite || echo "--without-sqlite3") \
$(use_with ssl openssl) \
$(use_with tcpd tcp-wrappers) \
$(use_enable lmdb) \
$(use_with glusterfs) \
$(use_with rados) \
$(use_with rados-striper) \
$(use_with cephfs) \
$(use_with jansson) \
"
econf \
--libdir=/usr/$(get_libdir) \
--docdir=/usr/share/doc/${PF} \
--htmldir=/usr/share/doc/${PF}/html \
--with-pid-dir=/run/bareos \
--sysconfdir=/etc \
--with-subsys-dir=/run/lock/subsys \
--with-working-dir=/var/lib/bareos \
--with-logdir=/var/log/bareos \
--with-scriptdir=/usr/libexec/bareos \
--with-plugindir=/usr/$(get_libdir)/${PN}/plugin \
--with-backenddir=/usr/$(get_libdir)/${PN}/backend \
--with-dir-user=bareos \
--with-dir-group=bareos \
--with-sd-user=root \
--with-sd-group=bareos \
--with-fd-user=root \
--with-fd-group=bareos \
--with-sbin-perm=0755 \
--with-systemd \
--enable-dynamic-cats-backends \
--enable-dynamic-storage-backends \
--enable-batch-insert \
--disable-afs \
--host=${CHOST} \
${myconf}
# correct configuration for QT based bat
if use qt4 ; then
pushd src/qt-console
eqmake4
popd
pushd src/qt-tray-monitor
eqmake4
popd
fi
}
src_compile() {
# workaround for build failing with high -j values
# if ndmp is enabled
use ndmp && MAKEOPTS="$MAKEOPTS -j1"
# Make build log verbose (bug #447806)
emake NO_ECHO=""
}
src_install() {
emake DESTDIR="${D}" install
newicon src/images/bareos_logo_shadow.png bareos.png
# install bat icon and desktop file when enabled
# (for some reason ./configure doesn't pick this up)
if use qt4 && ! use static ; then
doicon src/images/bat.png
domenu scripts/bat.desktop
fi
# remove some scripts we don't need at all
rm -f "${D}"/usr/libexec/bareos/{bareos,bareos-ctl-dir,bareos-ctl-fd,bareos-ctl-sd,startmysql,stopmysql}
rm -f "${D}"/usr/sbin/bareos
# remove upstream init scripts
rm -f "${D}"/etc/init.d/bareos-*
# rename statically linked apps
if use clientonly && use static ; then
pushd "${D}"/usr/sbin || die
mv static-bareos-fd bareos-fd || die
mv static-bconsole bconsole || die
popd || die
fi
# extra files which 'make install' doesn't cover
if ! use clientonly; then
# the logrotate configuration
# (now unconditional wrt bug #258187)
diropts -m0755
insinto /etc/logrotate.d
insopts -m0644
newins "${S}"/scripts/logrotate bareos
# the logwatch scripts
if use logwatch; then
diropts -m0750
dodir /etc/log.d/scripts/services
dodir /etc/log.d/scripts/shared
dodir /etc/log.d/conf/logfiles
dodir /etc/log.d/conf/services
pushd "${S}"/scripts/logwatch >&/dev/null || die
emake DESTDIR="${D}" install
popd >&/dev/null || die
fi
fi
rm -vf "${D}"/usr/share/man/man1/bareos-bwxconsole.1*
if ! use qt4; then
rm -vf "${D}"/usr/share/man/man1/bat.1*
fi
if use clientonly || ! use director; then
rm -vf "${D}"/usr/share/man/man8/bareos-dir.8*
rm -vf "${D}"/usr/share/man/man8/bareos-dbcheck.8*
rm -vf "${D}"/usr/share/man/man1/bsmtp.1*
rm -vf "${D}"/usr/share/man/man8/bwild.8*
rm -vf "${D}"/usr/share/man/man8/bregex.8*
rm -vf "${D}"/usr/share/man/man8/bpluginfo.8*
rm -vf "${D}"/usr/libexec/bareos/create_*_database
rm -vf "${D}"/usr/libexec/bareos/drop_*_database
rm -vf "${D}"/usr/libexec/bareos/make_*_tables
rm -vf "${D}"/usr/libexec/bareos/update_*_tables
rm -vf "${D}"/usr/libexec/bareos/drop_*_tables
rm -vf "${D}"/usr/libexec/bareos/grant_*_privileges
rm -vf "${D}"/usr/libexec/bareos/*_catalog_backup
fi
if use clientonly || ! use storage-daemon; then
rm -vf "${D}"/usr/share/man/man8/bareos-sd.8*
rm -vf "${D}"/usr/share/man/man8/bcopy.8*
rm -vf "${D}"/usr/share/man/man8/bextract.8*
rm -vf "${D}"/usr/share/man/man8/bls.8*
rm -vf "${D}"/usr/share/man/man8/bscan.8*
rm -vf "${D}"/usr/share/man/man8/btape.8*
rm -vf "${D}"/usr/libexec/bareos/disk-changer
rm -vf "${D}"/usr/libexec/bareos/mtx-changer
rm -vf "${D}"/usr/libexec/bareos/dvd-handler
rm -vf "${D}"/etc/bareos/mtx-changer.conf
fi
if ! use scsi-crypto; then
rm -vf "${D}"/usr/share/man/man8/bscrypto.8*
fi
if ! use qt4; then
rm -vf "${D}"/usr/share/man/man1/bareos-tray-monitor.1*
fi
# documentation
dodoc README.md
use ndmp && dodoc README.NDMP
use scsi-crypto && dodoc README.scsicrypto
# vim-files
if use vim-syntax; then
insinto /usr/share/vim/vimfiles/syntax
doins scripts/bareos.vim
insinto /usr/share/vim/vimfiles/ftdetect
newins scripts/filetype.vim bareos_ft.vim
fi
# setup init scripts
myscripts="bareos-fd"
if ! use clientonly; then
if use director; then
myscripts="${myscripts} bareos-dir"
fi
if use storage-daemon; then
myscripts="${myscripts} bareos-sd"
fi
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}/${script}".confd-16 "${T}/${script}".confd || die "failed to copy ${script}.confd"
cp "${FILESDIR}/${script}".initd "${T}/${script}".initd || die "failed to copy ${script}.initd"
# now set the database dependency for the director init script
case "${script}" in
bareos-dir)
sed -i -e "s:%databasetypes%:${mydbtypes}:" "${T}/${script}".confd || die
;;
*)
;;
esac
# install init script and config
newinitd "${T}/${script}".initd "${script}"
newconfd "${T}/${script}".confd "${script}"
done
# make sure the working directory exists
diropts -m0750
keepdir /var/lib/bareos
# make sure bareos group can execute bareos libexec scripts
fowners -R root:bareos /usr/libexec/bareos
}
pkg_postinst() {
if use clientonly; then
fowners root:bareos /var/lib/bareos
else
fowners bareos:bareos /var/lib/bareos
fi
if ! use clientonly && use director; then
einfo
einfo "If this is a new install, you must create the databases with:"
if use postgres; then
einfo
einfo "For postgresql:"
einfo " su postgres -c '/usr/libexec/bareos/create_bareos_database postgresql'"
einfo " su postgres -c '/usr/libexec/bareos/make_bareos_tables postgresql'"
einfo " su postgres -c '/usr/libexec/bareos/grant_bareos_privileges postgresql'"
fi
if use mysql; then
einfo
einfo "For mysql:"
einfo
einfo " Make sure root has direct access to your mysql server. You may want to"
einfo " create a /root/.my.cnf file with"
einfo " [client]"
einfo " user=root"
einfo " password=YourPasswordForAccessingMysqlAsRoot"
einfo " before running:"
einfo " /usr/libexec/bareos/create_bareos_database mysql"
einfo " /usr/libexec/bareos/make_bareos_tables mysql"
einfo " /usr/libexec/bareos/grant_bareos_privileges mysql"
fi
einfo
fi
if use sqlite; then
einfo
einfo "Be aware that Bareos does not officially support SQLite database."
einfo "Best use it only for a client-only installation. See Bug #445540."
einfo
einfo "It is strongly recommended to use either postgresql or mysql as"
einfo "catalog database backend."
einfo
fi
einfo "Please note that 'bconsole' will always be installed. To compile 'bat'"
einfo "you have to enable 'USE=qt4'."
einfo
}