For those out there who want to use portage to get their new Bacula
2.2.0 up and running, here is the unofficial ebuild and patch file.
Note that I provide a dirty method to inject the ebuild into portage. If
you want to keep your system clean, either remove the new files when
Bacula 2.2.0 hits portage or use Portage overlays.
Instructions:
1. Save ebuild to /usr/portage/app-backup/bacula/
2. Save patch file to /usr/portage/app-backup/bacula/files/
3. Copy folder /usr/portage/app-backup/bacula/files/2.0.3 to
/usr/portage/app-backup/bacula/2.2.0 (we can reuse existing scripts)
4. Run 'ebuild bacula-2.2.0.ebuild digest' in
/usr/portage/app-backup/bacula/ to activate bacula 2.2.0.
5. Run 'emerge -av bacula' to upgrade
Notes:
- Like stated before, this is the fast and dirty way - don't forget to
clean up your system or use overlays
- When Bacula 2.2.0 hits portage officially, it should be possible to
clean up all changes by unmerging the ebuild. (Backup your configuration
files!)
- I did not recreate the gnome patch as I don't use gnome - you want
it, you patch it - and mail it back to the list :-)
- I added BAT support to the ebuild, check out the bacula-bat flag.
- To enable BAT, QT4 is currently required - after creating the ebuild
I read somewhere that QT3 might work as well?
- The ebuild is not masked, this might pose a problem for some people
but if you are reading this, you know what you are doing.
- The ebuild contains some messages/spam from me warning about the
fact that this is not an official ebuild, it should not screw anything
up but using it is on your own risk ;-)
Happy compiling!
Regards,
Berend Dekens
# 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
>=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
)"
pkg_setup() {
ewarn "This ebuild was modified by Berend Dekens to support Bacula
2.2.0"
ewarn "Use this ebuild on your own risk and dispose of it once the
Gentoo portage tree gets version 2.2.0"
ewarn "If you still really want to try to install Bacula 2.2.0... enjoy
the installation :-)"
local dbnum
declare -i dbnum=0
if ! useq bacula-clientonly; then
if useq mysql; then
export mydbtype='mysql'
let dbnum++
fi
if useq postgres; then
export mydbtype='postgresql'
let dbnum++
fi
if useq sqlite; then
export mydbtype='sqlite'
let dbnum++
fi
if useq sqlite3; then
export mydbtype='sqlite3'
let dbnum++
fi
if [[ "${dbnum}" -lt 1 ]]; then
eerror
eerror "To use ${P} it is required to set a database in
the USE flags."
eerror "Supported databases are mysql, postgresql,
sqlite, sqlite3"
eerror
die "No database type selected."
elif [[ "${dbnum}" -gt 1 ]]; then
eerror
eerror "You have set ${P} to use multiple database
types."
eerror "I don't know which to set as the default!"
eerror "You can use /etc/portage/package.use to set
per-package USE flags"
eerror "Set it so only one database type, mysql,
postgres, sqlite, sqlite3"
eerror
die "Multiple database types selected."
fi
fi
# create the daemon group and user
if [ -z "$(egetent group bacula)" ]; then
enewgroup bacula
einfo
einfo "The group 'bacula' has been created. Any users you add
to this"
einfo "group have access to files created by the daemons."
einfo
fi
if ! useq bacula-clientonly; then
if [ -z "$(egetent passwd bacula)" ]; then
enewuser bacula -1 -1 /var/lib/bacula
bacula,disk,tape,cdrom,cdrw
einfo
einfo "The user 'bacula' has been created. Please see
the bacula manual"
einfo "for information about running bacula as a
non-root user."
einfo
fi
fi
}
src_unpack() {
unpack ${A}
cd ${S}
# adjusts default configuration files for several binaries
# to /etc/bacula/<config> instead of ./<config>
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
}
--- console/console.c 2007-08-11 23:50:20.000000000 +0200
+++ console/console.c 2007-06-09 11:25:27.000000000 +0200
@@ -105,7 +105,7 @@
static int execcmd(FILE *input, BSOCK *UA_sock);
-#define CONFIG_FILE "bconsole.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bconsole.conf" /* default configuration
file */
static void usage()
{
--- dird/dird.c 2007-08-11 23:49:40.000000000 +0200
+++ dird/dird.c 2007-06-07 16:46:43.000000000 +0200
@@ -85,7 +85,7 @@
extern URES res_all;
#endif
-#define CONFIG_FILE "bacula-dir.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bacula-dir.conf" /* default configuration
file */
static void usage()
{
--- filed/filed.c 2007-08-11 23:51:18.000000000 +0200
+++ filed/filed.c 2007-06-07 16:46:43.000000000 +0200
@@ -50,7 +50,7 @@
void *start_heap;
-#define CONFIG_FILE "bacula-fd.conf" /* default config file */
+#define CONFIG_FILE "/etc/bacula/bacula-fd.conf" /* default config file */
char *configfile = NULL;
static bool foreground = false;
--- gnome2-console/console.c 2007-08-11 23:50:45.000000000 +0200
+++ gnome2-console/console.c 2007-06-07 16:46:43.000000000 +0200
@@ -93,7 +93,7 @@
static guint initial;
static int numdir = 0;
-#define CONFIG_FILE "./bgnome-console.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bgnome-console.conf" /* default
configuration file */
static void usage()
{
--- qt-console/main.cpp 2007-08-11 23:55:10.000000000 +0200
+++ qt-console/main.cpp 2007-06-07 16:46:43.000000000 +0200
@@ -46,7 +46,7 @@
static void usage();
static int check_resources();
-#define CONFIG_FILE "./bat.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/bat.conf" /* default configuration file */
/* Static variables */
static char *configfile = NULL;
--- stored/bcopy.c 2007-08-11 23:54:48.000000000 +0200
+++ stored/bcopy.c 2007-06-07 16:46:43.000000000 +0200
@@ -57,7 +57,7 @@
static uint32_t jobs = 0;
static DEV_BLOCK *out_block;
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
char *configfile = NULL;
STORES *me = NULL; /* our Global resource */
bool forge_on = false; /* proceed inspite of I/O errors */
--- stored/bextract.c 2007-08-11 23:45:44.000000000 +0200
+++ stored/bextract.c 2007-06-07 16:46:43.000000000 +0200
@@ -64,7 +64,7 @@
static uint32_t wsize; /* write size */
static uint64_t fileAddr = 0; /* file write address */
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
char *configfile = NULL;
STORES *me = NULL; /* our Global resource */
bool forge_on = false;
--- stored/bls.c 2007-08-11 23:46:05.000000000 +0200
+++ stored/bls.c 2007-06-07 16:46:43.000000000 +0200
@@ -59,7 +59,7 @@
static uint32_t num_files = 0;
static ATTR *attr;
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
char *configfile = NULL;
STORES *me = NULL; /* our Global resource */
bool forge_on = false;
--- stored/bscan.c 2007-08-11 23:46:26.000000000 +0200
+++ stored/bscan.c 2007-06-18 21:29:26.000000000 +0200
@@ -100,7 +100,7 @@
static int num_media = 0;
static int num_files = 0;
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
char *configfile = NULL;
STORES *me = NULL; /* our Global resource */
bool forge_on = false; /* proceed inspite of I/O errors */
--- stored/btape.c 2007-08-11 23:46:59.000000000 +0200
+++ stored/btape.c 2007-06-07 16:46:43.000000000 +0200
@@ -98,7 +98,7 @@
/* Static variables */
-#define CONFIG_FILE "bacula-sd.conf"
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf"
char *configfile = NULL;
#define MAX_CMD_ARGS 30
--- stored/stored.c 2007-08-11 23:54:32.000000000 +0200
+++ stored/stored.c 2007-06-23 11:58:34.000000000 +0200
@@ -52,7 +52,7 @@
extern "C" void *device_initialization(void *arg);
-#define CONFIG_FILE "bacula-sd.conf" /* Default config file */
+#define CONFIG_FILE "/etc/bacula/bacula-sd.conf" /* Default config file */
/* Global variables exported */
char OK_msg[] = "3000 OK\n";
--- tray-monitor/tray-monitor.c 2007-08-11 23:49:13.000000000 +0200
+++ tray-monitor/tray-monitor.c 2007-06-07 16:46:43.000000000 +0200
@@ -104,7 +104,7 @@
PangoFontDescription *font_desc = NULL;
-#define CONFIG_FILE "./tray-monitor.conf" /* default configuration file */
+#define CONFIG_FILE "/etc/bacula/tray-monitor.conf" /* default configuration
file */
static void usage()
{
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users