# TODO:
# - update desktop files, think about su-wrappers for console (with .desktop files)
-# - package web admin
# - fix log file permissions
+# - check on upgrade (5.0 and 5.2 databases are NOT compatible)
#
# Conditional build:
%bcond_without console_wx # wx-console program
+%if "%{pld_release}" == "ac"
+%bcond_with bat # bat Qt4 GUI
+%else
%bcond_without bat # bat Qt4 GUI
-%bcond_without dbi # use Database Independent Abstraction Layer (libdbi)
+%endif
%bcond_without mysql # use MySQL
%bcond_without pgsql # use PostgreSQL
%bcond_without sqlite3 # use SQLite3
-%bcond_without python
-%bcond_with nagios # build nagios plugin
+%bcond_without python # Python Scripting support, http://www.bacula.org/3.0.x-manuals/en/concepts/concepts/Python_Scripting.html
+%bcond_without nagios # build nagios plugin
%bcond_with rescue
%bcond_with sqlite3_sync_off # makes SQLite3 backend much faster, but less reliable
-#
+
%if %{without sqlite3}
%undefine with_sqlite3_sync_off
%endif
-#
+
+%define qtver 4.6.2
Summary: Bacula - The Network Backup Solution
Summary(pl.UTF-8): Bacula - rozwiązanie do wykonywania kopii zapasowych po sieci
Name: bacula
-Version: 5.0.1
-Release: 3
-Epoch: 0
-License: extended GPL v2
+Version: 5.2.12
+Release: 1
+License: AGPL v3
Group: Networking/Utilities
Source0: http://downloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: beb9f8da196b3c9ffb0356f087dbdb99
+# Source0-md5: b04c22b128b73359e4bbc9de06652c38
Source1: http://downloads.sourceforge.net/bacula/%{name}-docs-%{version}.tar.bz2
-# Source1-md5: ce2ef0dca50ab916fd6701b53b7bb4df
-Source2: http://downloads.sourceforge.net/bacula/%{name}-rescue-5.0.0.tar.gz
-# Source2-md5: 349623581cfe0bcd798dd137abac959a
+# Source1-md5: 909b85db6da2dbe6b1099688ad4ec7c3
+Source2: http://downloads.sourceforge.net/bacula/%{name}-rescue-5.0.1.tar.gz
+# Source2-md5: bb194aed8e204f54bf2f61d7e721f257
Source10: %{name}-dir.init
Source11: %{name}-fd.init
Source12: %{name}-sd.init
Source14: %{name}-dir.sysconfig
Source15: %{name}-fd.sysconfig
Source16: %{name}-sd.sysconfig
+Source17: %{name}-dir.service
+Source18: %{name}-fd.service
+Source19: %{name}-sd.service
Patch0: %{name}-mtx-changer.patch
-Patch1: %{name}-link.patch
-Patch2: %{name}-tinfo-readline.patch
-Patch3: %{name}-branding.patch
-Patch4: %{name}-conf.patch
-Patch5: %{name}-desktop.patch
-Patch6: %{name}-64bitbuild_fix.patch
-Patch7: %{name}-dbi_fixes.patch
-Patch8: %{name}-dbi_dbcheck.patch
-Patch9: %{name}-openssl1.patch
+Patch1: %{name}-branding.patch
+Patch2: %{name}-conf.patch
+Patch3: %{name}-desktop.patch
+Patch4: make_catalog_backup-setup-home.patch
+Patch5: %{name}-wx-console-build.patch
URL: http://www.bacula.org/
BuildRequires: acl-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gettext-devel
+%{?with_console_wx:BuildRequires: gtk+2-devel}
BuildRequires: libcap-devel
-%{?with_dbi:BuildRequires: libdbi-devel >= 0.8.4}
-BuildRequires: libtool
+BuildRequires: libtool >= 2:2.2
%if %{with rescue}
BuildRequires: fakeroot
%endif
BuildRequires: libwrap-devel
-BuildRequires: mtx
BuildRequires: ncurses-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig
%if %{with python}
BuildRequires: python-devel
+BuildRequires: python-modules
%endif
%if %{with bat}
BuildRequires: QtCore-devel
BuildRequires: QtGui-devel
-BuildRequires: qt4-build >= 4.3.3-3
-BuildRequires: qt4-qmake >= 4.3.3-3
-BuildRequires: qwt-devel >= 5.0.2-2
+BuildRequires: qt4-build >= %{qtver}
+BuildRequires: qt4-qmake >= %{qtver}
%endif
%{?with_mysql:BuildRequires: mysql-devel}
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.644
BuildRequires: sed >= 4.0
%{?with_sqlite3:BuildRequires: sqlite3-devel}
+Requires: systemd-units >= 38
+BuildRequires: which
%if %{with console_wx}
BuildRequires: wxGTK2-unicode-devel >= 2.4.0
%endif
BuildRequires: zlib-devel
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _sysconfdir /etc/%{name}
+%define _sysconfdir /etc/%{name}
%define _localstatedir /var/lib/%{name}
-%define nagiosplugindir %{_prefix}/lib/nagios/plugins
+%define nagiosplugindir %{_libdir}/nagios/plugins
+
+# db packages contain duplicates
+%define _duplicate_files_terminate_build 0
# from 'the worst' to 'the best'
-%define databases %{?with_dbi:dbi} %{?with_sqlite3:sqlite3} %{?with_mysql:mysql} %{?with_pgsql:postgresql}
+%define databases %{?with_sqlite3:sqlite3} %{?with_mysql:mysql} %{?with_pgsql:postgresql}
# dependency section is broken. ccache usage is instead to makefiles
%undefine with_ccache
Conflicts: bacula-dir < 0:1.34.6
Conflicts: bacula-fd < 0:1.34.6
Conflicts: bacula-sd < 0:1.34.6
+Conflicts: logrotate < 3.8.0
%description common
Bacula - It comes by night and sucks the vital essence from your
Summary(pl.UTF-8): Usługi Bacula Director i Catalog
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Requires: bacula(db) = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Requires: bacula(db) = %{version}-%{release}
Obsoletes: bacula-updatedb
%description dir
Summary(pl.UTF-8): Konsola Baculi
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
%description console
Bacula - It comes by night and sucks the vital essence from your
Summary(pl.UTF-8): Konsola Baculi oparta na wxWidgets
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
%description console-wx
Bacula - It comes by night and sucks the vital essence from your
Summary(pl.UTF-8): Konsola Baculi oparta na Qt4
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Requires: QtCore >= %{qtver}
%description console-qt4
Bacula - It comes by night and sucks the vital essence from your
Summary: Bacula Tray Monitor
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
%description tray-monitor
Bacula - It comes by night and sucks the vital essence from your
Summary(pl.UTF-8): Usługi Bacula File (klient)
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
%description fd
Bacula - It comes by night and sucks the vital essence from your
Summary(pl.UTF-8): Usługi Bacula Storage
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
Conflicts: dvd+rw-tools <= 5.21.4.10.8-1
%description sd
Summary(pl.UTF-8): Sterownik bazy PostgreSQL dla Baculi
Group: Networking/Utilities
Requires(post): /sbin/ldconfig
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Provides: bacula(db) = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
Obsoletes: bacula(db)
%description db-postgresql
Summary(pl.UTF-8): Sterownik bazy MySQL dla Baculi
Group: Networking/Utilities
Requires(post): /sbin/ldconfig
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Provides: bacula(db) = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
Obsoletes: bacula(db)
%description db-mysql
Summary(pl.UTF-8): Sterownik bazy SQLite dla Baculi
Group: Networking/Utilities
Requires(post): /sbin/ldconfig
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Provides: bacula(db) = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
Obsoletes: bacula(db)
%description db-sqlite3
%description db-sqlite3 -l pl.UTF-8
Sterownik bazy SQLite dla Baculi.
-%package db-dbi
-Summary: libdbi database driver for Bacula
-Summary(pl.UTF-8): Sterownik bazy libdbi dla Baculi
-Group: Networking/Utilities
-Requires(post): /sbin/ldconfig
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-Provides: bacula(db) = %{epoch}:%{version}-%{release}
-Obsoletes: bacula(db)
-
-%description db-dbi
-libdbi database driver for Bacula.
-
-%description db-dbi -l pl.UTF-8
-Sterownik baz libdbi dla Baculi.
-
%package rescue
Summary: Bacula - The Network Backup Solution
Summary(pl.UTF-8): Bacula - rozwiązanie do wykonywania kopii zapasowych po sieci
Group: Networking/Utilities
-Requires: %{name}-fd = %{epoch}:%{version}-%{release}
+Requires: %{name}-fd = %{version}-%{release}
Requires: coreutils
Requires: util-linux
%description -n nagios-plugin-check_bacula
Nagios plugin to check bacula.
+# provided by various db libraries as a symlink
+%define _noautoreq libbaccats-%{version}.so
+
%prep
%setup -q -a 1
%patch0 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-#%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
tar -xf %{SOURCE2} && ln -s bacula-rescue-* rescue
src/cats/create_* src/cats/delete_* src/cats/drop_* \
src/cats/grant_* src/cats/make_* src/cats/update_*
sed -i -e 's/@hostname@/--hostname--/' src/*/*.conf.in
-
-%if %{with dbi}
-for dbtype in mysql postgresql sqlite3; do
- sed -i -e "s,@DB_TYPE@,$dbtype,g" src/cats/*_${dbtype}_*
-done
-%endif
+sed -i -e 's/@basename@/--hostname--/' src/*/*.conf.in
%build
cd autoconf
CPPFLAGS="-I/usr/include/ncurses -I%{_includedir}/readline"
-# we wan't the 'base' build built with the last database in the list,
-# to make sure it is full-featured
-for database in %{databases}; do
- WXCONFIG=%{_bindir}/wx-gtk2-unicode-config \
- %configure \
- --with-scriptdir=%{_libexecdir}/%{name} \
- %{?with_bat:--enable-bat} \
- --disable-conio \
- --enable-smartalloc \
- %{?with_console_wx:--enable-bwx-console} \
- --enable-tray-monitor \
- %{?with_python:--with-python} \
- --with-readline \
- --with-tcp-wrappers \
- --with-working-dir=%{_var}/lib/%{name} \
- --with-dump-email="root@localhost" \
- --with-job-email="root@localhost" \
- --with-smtp-host=localhost \
- --with-pid-dir=/var/run \
- --with-subsys-dir=/var/lock/subsys \
- --enable-batch-insert \
- --with-$database \
- %{?with_sqlite3_sync_off:--enable-extra-sqlite3-init="pragma synchronous=0;"} \
- --with-dir-password="#FAKE-dir-password#" \
- --with-fd-password="#FAKE-fd-password#" \
- --with-sd-password="#FAKE-sd-password#" \
- --with-mon-dir-password="#FAKE-mon-dir-password#" \
- --with-mon-fd-password="#FAKE-mon-fd-password#" \
- --with-mon-sd-password="#FAKE-mon-sd-password#" \
- --with-openssl
-
- # build the database library
- %{__make} -C src/cats clean
- %{__make} -C src/cats
-
- # install the database library in a temporary location
- install -d libbacsql/$database%{_libdir}
- %{__make} -C src/cats libtool-install DESTDIR=$PWD/libbacsql/$database
-done
+WXCONFIG=%{_bindir}/wx-gtk2-unicode-config \
+QMAKE=%{_bindir}/qmake-qt4 \
+%configure \
+ --with-scriptdir=%{_libexecdir}/%{name} \
+ %{?with_bat:--enable-bat} \
+ --disable-conio \
+ --enable-smartalloc \
+ %{?with_console_wx:--enable-bwx-console} \
+ --enable-tray-monitor \
+ %{?with_python:--with-python} \
+ --with-readline \
+ --with-tcp-wrappers \
+ --with-working-dir=%{_var}/lib/%{name} \
+ --with-dump-email="root@localhost" \
+ --with-job-email="root@localhost" \
+ --with-smtp-host=localhost \
+ --with-pid-dir=/var/run \
+ --with-subsys-dir=/var/lock/subsys \
+ --with-systemd=/lib/systemd/system \
+ --enable-batch-insert \
+ %{?with_pgsql:--with-postgresql} \
+ %{?with_mysql:--with-mysql} \
+ %{?with_sqlite3:--with-sqlite3} \
+ %{?with_sqlite3_sync_off:--enable-extra-sqlite3-init="pragma synchronous=0;"} \
+ --with-dir-password="#FAKE-dir-password#" \
+ --with-fd-password="#FAKE-fd-password#" \
+ --with-sd-password="#FAKE-sd-password#" \
+ --with-mon-dir-password="#FAKE-mon-dir-password#" \
+ --with-mon-fd-password="#FAKE-mon-fd-password#" \
+ --with-mon-sd-password="#FAKE-mon-sd-password#" \
+ --with-openssl
%if %{with bat}
cd src/qt-console
cd ../..
%endif
-%{__make}
+%{__make} 2>&1 | tee log
+# check for build errors
+grep "Error in" log && exit 1
%if %{with nagios}
# nagios plugin
%install
rm -rf $RPM_BUILD_ROOT
-
-install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig}
-install -d $RPM_BUILD_ROOT%{_sysconfdir}/rescue
-install -d $RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir},%{_mandir},%{_bindir},/var/log/bacula}
+install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig} \
+ $RPM_BUILD_ROOT%{_sysconfdir}/rescue \
+ $RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir}} \
+ $RPM_BUILD_ROOT{%{_mandir},%{_bindir},/var/log/bacula} \
+ $RPM_BUILD_ROOT%{systemdunitdir}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-# install libraries for all the database backends
-# ldconfig will add the soname symlinks when one of the packages is installed
+# create copies of make_catalog_backup for specific databases; zeore default one (will be ghost)
for database in %{databases}; do
- for libfile in libbacsql/$database%{_libdir}/lib*-*.so; do
- orig_name=${libfile##*/}
- file_prefix=${orig_name%%-*.so}
- file_suffix=${orig_name#*-}
- file_name=$file_prefix-$database-$file_suffix
- install -p $libfile $RPM_BUILD_ROOT/%{_libdir}/$file_name
- touch $RPM_BUILD_ROOT/%{_libdir}/$orig_name
- done
+ sed -e "s#default_db_type=.*#default_db_type=${database}#g" \
+ $RPM_BUILD_ROOT%{_libdir}/%{name}/make_catalog_backup \
+ > $RPM_BUILD_ROOT%{_libdir}/%{name}/make_${database}_catalog_backup
+ chmod 755 $RPM_BUILD_ROOT%{_libdir}/%{name}/make_${database}_catalog_backup
done
+:> $RPM_BUILD_ROOT%{_libdir}/%{name}/make_catalog_backup
+
+# we use db dependant (at compile time) shell script only
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/make_catalog_backup.pl
+
+## replace with empty file, replaced by ldconfig from each db-* package on intsall
+rm $RPM_BUILD_ROOT%{_libdir}/libbaccats-%{version}.so
+touch $RPM_BUILD_ROOT%{_libdir}/libbaccats-%{version}.so
install -p %{SOURCE10} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-dir
install -p %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-fd
cp -a %{SOURCE14} $RPM_BUILD_ROOT/etc/sysconfig/bacula-dir
cp -a %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/bacula-fd
cp -a %{SOURCE16} $RPM_BUILD_ROOT/etc/sysconfig/bacula-sd
+cp -a %{SOURCE17} $RPM_BUILD_ROOT%{systemdunitdir}/bacula-dir.service
+cp -a %{SOURCE18} $RPM_BUILD_ROOT%{systemdunitdir}/bacula-fd.service
+cp -a %{SOURCE19} $RPM_BUILD_ROOT%{systemdunitdir}/bacula-sd.service
%if %{with console_wx}
# tray-monitor is for regular users
cp -a scripts/bacula.png $RPM_BUILD_ROOT%{_pixmapsdir}/bacula.png
#install src/tray-monitor/generic.xpm $RPM_BUILD_ROOT%{_pixmapsdir}/bacula-tray-monitor.xpm
sed -e 's/gnome-console/wx-console/g;s/Console/Wx Console/g' \
- scripts/bacula.desktop.gnome2 > $RPM_BUILD_ROOT%{_desktopdir}/bacula-wx.desktop
+ scripts/wxconsole.desktop.consolehelper > $RPM_BUILD_ROOT%{_desktopdir}/bacula-wx.desktop
#sed -e 's#%{_sbindir}#%{_bindir}#' \
# scripts/bacula-tray-monitor.desktop > $RPM_BUILD_ROOT%{_desktopdir}/bacula-tray-monitor.desktop
%endif
%if %{with bat}
-# TODO: libtool install
-install src/qt-console/.libs/bat $RPM_BUILD_ROOT%{_bindir}
+# qmake somewhy does not always create install_bins target. install our own the bin
+rm -f $RPM_BUILD_ROOT%{_sbindir}/bat
+libtool --silent --mode=install install src/qt-console/bat $RPM_BUILD_ROOT%{_bindir}
+cp -a scripts/bacula.png $RPM_BUILD_ROOT%{_pixmapsdir}/bacula.png
cp -a scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
%endif
touch $RPM_BUILD_ROOT/var/log/bacula/log
-# install the updatedb scripts
-install -p updatedb/update_sqlite* $RPM_BUILD_ROOT%{_libexecdir}/%{name}
+# install the updatedb scripts for older versions that last full release
+# 2.0 -> 3.0 : 10_to_11
+# 5.0 -> 5.2 : 12_to_14
+install -p updatedb/update_*_tables_10_to_11 $RPM_BUILD_ROOT%{_libexecdir}/%{name}
+install -p updatedb/update_*_tables_11_to_12 $RPM_BUILD_ROOT%{_libexecdir}/%{name}
+install -p updatedb/update_*_tables_12_to_14 $RPM_BUILD_ROOT%{_libexecdir}/%{name}
# place for site passwords
touch $RPM_BUILD_ROOT%{_sysconfdir}/{dir-password,fd-password,sd-password}
touch $RPM_BUILD_ROOT%{_sysconfdir}/{mon-dir-password,mon-fd-password,mon-sd-password}
-mv $RPM_BUILD_ROOT%{_libdir}/bacula/mtx-changer.conf $RPM_BUILD_ROOT/etc/bacula/mtx-changer.conf
+mv $RPM_BUILD_ROOT%{_libexecdir}/%{name}/mtx-changer.conf $RPM_BUILD_ROOT%{_sysconfdir}/mtx-changer.conf
# some file changes
rm -f $RPM_BUILD_ROOT%{_libexecdir}/%{name}/{gconsole,startmysql,stopmysql,bacula,bconsole,fd}
%if %{without console_wx}
rm -f $RPM_BUILD_ROOT%{_desktopdir}/bacula-wx.desktop
%endif
-touch $RPM_BUILD_ROOT%{_sysconfdir}/.pw.sed
rm $RPM_BUILD_ROOT%{_docdir}/bacula/ChangeLog
rm $RPM_BUILD_ROOT%{_docdir}/bacula/INSTALL
rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/bacula-ctl-*
# unsupported
-rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/*_bdb_*
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/btraceback.mdb
# rename to avoid possible conflicts
mv $RPM_BUILD_ROOT%{_sbindir}/{,bacula-}dbcheck
# no -devel files packaged, so this is also useless
rm $RPM_BUILD_ROOT%{_libdir}/libbac{,cfg,find,py,sql}.{so,la}
-# placeholders for the symlinks set in %%post db-*
-for f in create_bacula_database drop_bacula_database drop_bacula_tables \
- grant_bacula_privileges make_bacula_tables update_bacula_tables ; do
-
- ln -sf /dev/null $RPM_BUILD_ROOT%{_libexecdir}/%{name}/$f
-done
-
%if %{with nagios}
+install -d $RPM_BUILD_ROOT%{nagiosplugindir}
%{__make} -C examples/nagios/check_bacula install \
sbindir=%{nagiosplugindir} \
+ INSTALL_PROGRAM="libtool --mode=install install -p" \
DESTDIR=$RPM_BUILD_ROOT
%endif
%groupadd -P %{name}-common -g 136 -r -f bacula
%useradd -P %{name}-common -u 136 -r -d /var/lib/bacula -s /bin/false -c "Bacula User" -g bacula bacula
-
%define update_configs \
-echo "Updating bacula passwords and names..." | %banner \
-cd /etc/bacula \
-for f in *-password ; do \
- if [ ! -s $f ] ; then \
+echo "Updating bacula passwords and names..." | %banner -a %{name} \
+cd %{_sysconfdir} \
+for f in *-password; do \
+ if [ ! -s $f ]; then \
openssl rand -base64 33 > $f \
fi \
- p=`cat $f` \
- for cf in *.conf *.conf.rpmnew ; do \
+ p=$(cat $f) \
+ for cf in *.conf *.conf.rpmnew; do \
[ -f $cf ] && sed -i -e"s:#FAKE-$f#:$p:" "$cf" || : \
done \
done \
-for cf in *.conf *.conf.rpmnew ; do \
+for cf in *.conf *.conf.rpmnew; do \
[ -f $cf ] && sed -i -e"s:--hostname--:`hostname`:" "$cf" || : \
done
%groupremove bacula
fi
-%triggerpostun dir -- %{name}-dir < 5.0
+%triggerpostun dir -- %{name}-dir < %{version}-0
%banner bacula-dir -t3 <<EOF
You have upgraded from an older version of Bacula director.
You will probably need to call %{_libexecdir}/%{name}/update_bacula_tables
script to upgrade the database.
+
+Ensure you database partition has enough free space before you run the upgrade,
+i.e check that there is enough room to rebuild 'File' table (it is the largest
+in bacula db).
+
EOF
%post dir
%update_configs
/sbin/chkconfig --add bacula-dir
%service bacula-dir restart "Bacula Director daemon"
+%systemd_post bacula-dir.service
%preun dir
if [ "$1" = "0" ]; then
%service bacula-dir stop
/sbin/chkconfig --del bacula-dir
fi
+%systemd_preun bacula-dir.service
+
+%postun dir
+%systemd_reload
%post fd
%update_configs
/sbin/chkconfig --add bacula-fd
%service bacula-fd restart "Bacula File daemon"
+%systemd_post bacula-fd.service
%preun fd
if [ "$1" = "0" ]; then
%service bacula-fd stop
/sbin/chkconfig --del bacula-fd
fi
+%systemd_preun bacula-fd.service
+
+%postun fd
+%systemd_reload
%post sd
%update_configs
/sbin/chkconfig --add bacula-sd
%service bacula-sd restart "Bacula Storage daemon"
+%systemd_post bacula-sd.service
%preun sd
if [ "$1" = "0" ]; then
%service bacula-sd stop
/sbin/chkconfig --del bacula-sd
fi
+%systemd_preun bacula-sd.service
+
+%postun sd
+%systemd_reload
%pre console
if [ -e %{_sysconfdir}/console.conf -a ! -e %{_sysconfdir}/bconsole.conf ]; then
%update_configs
%triggerpostun common -- %{name}-common < 5.0.1-2
-find /etc/bacula/bat.conf* -perm /007 -print0 | xargs -0 -r chmod 600 || :
+find %{_sysconfdir}/bat.conf* -perm /007 -print0 2>/dev/null | xargs -0 -r chmod 600 || :
%post console-qt4
%update_configs
suffix="${name#* }" \
ln -sf "${prefix}_%{1}_${suffix}" %{_libexecdir}/%{name}/"${prefix}_bacula_${suffix}" || : \
done \
+ln -sf "make_%{1}_catalog_backup" %{_libexecdir}/%{name}/make_catalog_backup || : \
+ln -sf libbaccats-%{1}-%{version}.so %{_libdir}/libbaccats-%{version}.so || : \
%service bacula-dir restart "Bacula Director daemon"
-%define db_postun() \
-/sbin/ldconfig \
-if [ "$1" = "0" ]; then \
- for f in %{_libexecdir}/%{name}/*_bacula_*; do \
- if [ -L "$f" -a ! -e "$f" ]; then \
- rm "$f" \
- fi \
- done \
-fi
-
%post db-postgresql
%db_post postgresql
-%postun db-postgresql
-%db_postun postgresql
+%postun db-postgresql -p /sbin/ldconfig
%post db-mysql
%db_post mysql
-%postun db-mysql
-%db_postun mysql
+%postun db-mysql -p /sbin/ldconfig
%post db-sqlite3
%db_post sqlite3
-%postun db-sqlite3
-%db_postun sqlite3
-
-# dbi backend is different, as it is not bound with a specific db engine
-%post db-dbi
-/sbin/ldconfig
-%service bacula-dir restart "Bacula Director daemon"
-
-%postun db-dbi -p /sbin/ldconfig
+%postun db-sqlite3 -p /sbin/ldconfig
%files common
%defattr(644,root,root,755)
%doc LICENSE
+%{?with_python:%doc examples/python}
%dir %{_sysconfdir}
%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*-password
# do not remove bsmtp from files. Fix build if it is not installed.
%attr(755,root,root) %{_sbindir}/bsmtp
%attr(755,root,root) %{_sbindir}/btraceback
-%attr(755,root,root) %{_libdir}/libbac-%{version}.so
-%attr(755,root,root) %{_libdir}/libbaccfg-%{version}.so
-%attr(755,root,root) %{_libdir}/libbacfind-%{version}.so
-%attr(755,root,root) %{_libdir}/libbacpy-%{version}.so
+%attr(755,root,root) %{_libdir}/libbac-5*.so
+%attr(755,root,root) %{_libdir}/libbaccfg-5*.so
+%attr(755,root,root) %{_libdir}/libbacfind-5*.so
+%attr(755,root,root) %{_libdir}/libbacpy-5*.so
+%attr(755,root,root) %{_libdir}/libbacsql-5*.so
%{_mandir}/man8/bacula.8*
%{_mandir}/man1/bsmtp.1*
%{_mandir}/man8/btraceback.8*
%doc ChangeLog CheckList ReleaseNotes kernstodo LICENSE
#%doc examples %{name}-docs-%{version}/manual/{*.pdf,bacula}
%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-dir.conf
-%ghost %{_sysconfdir}/.pw.sed
%attr(640,root,root) %config(noreplace) /etc/logrotate.d/bacula-dir
%attr(754,root,root) /etc/rc.d/init.d/bacula-dir
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bacula-dir
+%{systemdunitdir}/bacula-dir.service
%attr(755,root,root) %{_sbindir}/bacula-dir
%attr(755,root,root) %{_sbindir}/bregex
%attr(755,root,root) %{_sbindir}/bwild
%attr(755,root,root) %{_sbindir}/bacula-dbcheck
%{_mandir}/man8/bacula-dir.8*
%{_mandir}/man8/bacula-dbcheck.8*
+%{_mandir}/man8/bregex.8*
+%{_mandir}/man8/bwild.8*
%{_libexecdir}/%{name}/query.sql
-#%attr(755,root,root) %{_libexecdir}/%{name}/make_catalog_backup
-#%attr(755,root,root) %{_libexecdir}/%{name}/delete_catalog_backup
+%attr(755,root,root) %{_libexecdir}/%{name}/delete_catalog_backup
%files db-postgresql
%defattr(644,root,root,755)
%attr(755,root,root) %{_libexecdir}/%{name}/grant_postgresql_privileges
%attr(755,root,root) %{_libexecdir}/%{name}/make_postgresql_tables
%attr(755,root,root) %{_libexecdir}/%{name}/update_postgresql_*
-%attr(755,root,root) %{_libdir}/libbacsql-postgresql-%{version}.so
+%attr(755,root,root) %{_libexecdir}/%{name}/make_postgresql_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-postgresql-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%ghost %{_libexecdir}/%{name}/grant_bacula_privileges
%ghost %{_libexecdir}/%{name}/make_bacula_tables
%ghost %{_libexecdir}/%{name}/update_bacula_tables
+%ghost %{_libexecdir}/%{name}/make_catalog_backup
%files db-mysql
%defattr(644,root,root,755)
%attr(755,root,root) %{_libexecdir}/%{name}/grant_mysql_privileges
%attr(755,root,root) %{_libexecdir}/%{name}/make_mysql_tables
%attr(755,root,root) %{_libexecdir}/%{name}/update_mysql_*
-%attr(755,root,root) %{_libdir}/libbacsql-mysql-%{version}.so
+%attr(755,root,root) %{_libexecdir}/%{name}/make_mysql_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-mysql-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%ghost %{_libexecdir}/%{name}/grant_bacula_privileges
%ghost %{_libexecdir}/%{name}/make_bacula_tables
%ghost %{_libexecdir}/%{name}/update_bacula_tables
+%ghost %{_libexecdir}/%{name}/make_catalog_backup
%files db-sqlite3
%defattr(644,root,root,755)
%attr(755,root,root) %{_libexecdir}/%{name}/grant_sqlite3_privileges
%attr(755,root,root) %{_libexecdir}/%{name}/make_sqlite3_tables
%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite3_*
-%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite_*
-%attr(755,root,root) %{_libdir}/libbacsql-sqlite3-%{version}.so
+%attr(755,root,root) %{_libexecdir}/%{name}/make_sqlite3_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-sqlite3-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%ghost %{_libexecdir}/%{name}/grant_bacula_privileges
%ghost %{_libexecdir}/%{name}/make_bacula_tables
%ghost %{_libexecdir}/%{name}/update_bacula_tables
-
-%files db-dbi
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libexecdir}/%{name}/create_postgresql_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_postgresql_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_postgresql_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_postgresql_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_postgresql_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_postgresql_*
-%attr(755,root,root) %{_libexecdir}/%{name}/create_mysql_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_mysql_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_mysql_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_mysql_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_mysql_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_mysql_*
-%attr(755,root,root) %{_libexecdir}/%{name}/create_sqlite3_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_sqlite3_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_sqlite3_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_sqlite3_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_sqlite3_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite3_*
-%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite_*
-%attr(755,root,root) %{_libdir}/libbacsql-dbi-%{version}.so
-
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %{_libexecdir}/%{name}/make_catalog_backup
%files fd
%defattr(644,root,root,755)
%doc LICENSE
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-fd.conf
+%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-fd.conf
%attr(754,root,root) /etc/rc.d/init.d/bacula-fd
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bacula-fd
+%{systemdunitdir}/bacula-fd.service
%attr(755,root,root) %{_sbindir}/bacula-fd
%attr(755,root,root) %{_libdir}/bpipe-fd.so
%{_mandir}/man8/bacula-fd.8*
%files sd
%defattr(644,root,root,755)
%doc LICENSE
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-sd.conf
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mtx-changer.conf
+%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-sd.conf
+%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/mtx-changer.conf
%attr(754,root,root) /etc/rc.d/init.d/bacula-sd
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bacula-sd
+%{systemdunitdir}/bacula-sd.service
%attr(755,root,root) %{_sbindir}/bacula-sd
%attr(755,root,root) %{_sbindir}/bcopy
%attr(755,root,root) %{_sbindir}/bextract
%files console
%defattr(644,root,root,755)
%doc LICENSE
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bconsole.conf
+%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bconsole.conf
%attr(755,root,root) %{_sbindir}/bconsole
%{_mandir}/man8/bconsole.8*