-# TODO:
-# - update desktop files, think about su-wrappers for console
-# - package web admin
+## TODO:
+# - fix libtoolize
+# - update desktop files, think about su-wrappers for console (with .desktop files)
# - fix log file permissions
#
# Conditional build:
-%bcond_without console_wx # wx-console program
-%bcond_without gnome # gnome-console program
-%bcond_without bat # bat Qt4 GUI
-%bcond_without dbi # use Database Independent Abstraction Layer (libdbi)
-%bcond_with mysql # use MySQL
-%bcond_with pgsql # use PostgreSQL
-%bcond_with python
-%bcond_with rescue
-%bcond_with sqlite # use SQLite
-%bcond_with sqlite3 # use SQLite3 instead of SQLite 2
+%bcond_without qt # BAT / qt-console Qt5 GUI
+%bcond_without mysql # use MySQL
+%bcond_without pgsql # use PostgreSQL
+%bcond_without sqlite3 # use SQLite3
+%bcond_without nagios # build nagios plugin
+%bcond_without s3 # Amazon S3 cloud backend
%bcond_with sqlite3_sync_off # makes SQLite3 backend much faster, but less reliable
-%if %{with dbi}
-%define database dbi
-%undefine with_mysql
-%undefine with_pgsql
-%undefine with_sqlite
-%undefine with_sqlite3
-%endif
-%if %{with sqlite}
-%define database sqlite
-%undefine with_dbi
-%undefine with_mysql
-%undefine with_pgsql
-%undefine with_sqlite3
-%endif
-%if %{with sqlite3}
-%define database sqlite3
-%undefine with_dbi
-%undefine with_mysql
-%undefine with_pgsql
-%undefine with_sqlite
-%endif
-%if %{with pgsql}
-%define database postgresql
-%undefine with_dbi
-%undefine with_mysql
-%undefine with_sqlite
-%undefine with_sqlite3
-%endif
-%if %{with mysql}
-%define database mysql
-%undefine with_dbi
-%undefine with_pgsql
-%undefine with_sqlite
-%undefine with_sqlite3
-%endif
-%if !%{with sqlite3}
+
+%if %{without sqlite3}
%undefine with_sqlite3_sync_off
%endif
-#
+
+# Bacula requires this specific, custom version
+%define libs3_version 20181010
+
Summary: Bacula - The Network Backup Solution
Summary(pl.UTF-8): Bacula - rozwiązanie do wykonywania kopii zapasowych po sieci
Name: bacula
-Version: 3.0.0
-Release: 0.4
-Epoch: 0
-License: extended GPL v2
+Version: 9.4.2
+Release: 1
+License: AGPL v3
Group: Networking/Utilities
-Source0: http://dl.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: 5ea5294c4f66f0d8ba1414f1ca9dc79b
-Source1: http://dl.sourceforge.net/bacula/%{name}-docs-%{version}.tar.bz2
-# Source1-md5: 2c3a1c6ba46b1371240a9b8d053fdf61
-Source2: http://dl.sourceforge.net/bacula/%{name}-rescue-%{version}.tar.gz
-# Source2-md5: b31af264219f6e6a0985288d810d7bb6
+Source0: http://downloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+# Source0-md5: 376e67b16cfa7254a5717177770233b6
+Source1: https://www.bacula.org/downloads/libs3-%{libs3_version}.tar.gz
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
+Patch1: %{name}-branding.patch
+Patch2: %{name}-desktop.patch
+Patch3: make_catalog_backup-setup-home.patch
+Patch4: %{name}-no_lockmgr.patch
+Patch5: x32.patch
+Patch6: libs3-curl.patch
URL: http://www.bacula.org/
+BuildRequires: acl-devel
+BuildRequires: autoconf >= 2.61
BuildRequires: automake
-%{?with_dbi:BuildRequires: libdbi-devel}
-%if %{with rescue}
-BuildRequires: fakeroot
-%endif
-%if %{with gnome}
-BuildRequires: libgnome-devel >= 2.0
-BuildRequires: libgnomeui-devel >= 2.0
-%endif
-BuildRequires: mtx
+%{?with_s3:BuildRequires: curl-devel}
+BuildRequires: gettext-tools
+BuildRequires: libcap-devel
+BuildRequires: libtool >= 2:2.2
+BuildRequires: libwrap-devel
+%{?with_s3:BuildRequires: libxml2-devel}
BuildRequires: ncurses-devel
BuildRequires: openssl-devel
BuildRequires: pkgconfig
-%if %{with python}
-BuildRequires: python-static
-%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: python
+BuildRequires: python-modules
+%if %{with qt}
+BuildRequires: Qt5Core-devel
+BuildRequires: Qt5Gui-devel
+BuildRequires: qt5-build
+BuildRequires: qt5-qmake
%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_sqlite:BuildRequires: sqlite-devel}
%{?with_sqlite3:BuildRequires: sqlite3-devel}
-%if %{with console_wx}
-BuildRequires: wxGTK2-unicode-devel >= 2.4.0
-%endif
+BuildRequires: which
BuildRequires: zlib-devel
+Requires: systemd-units >= 38
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _sysconfdir /etc/%{name}
+%define _sysconfdir /etc/%{name}
%define _localstatedir /var/lib/%{name}
+%define nagiosplugindir %{_libdir}/nagios/plugins
+
+# db packages contain duplicates
+%define _duplicate_files_terminate_build 0
+
+# from 'the worst' to 'the best'
+%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: %{name}-common = %{version}-%{release}
+Requires: bacula(db) = %{version}-%{release}
+Requires: systemd-units >= 38
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
użytkownikowi komunikowanie się z programem Bacula Director. To jest
interfejs czysto tekstowy.
-%package console-wx
-Summary: Bacula wxWidgets Console
-Summary(pl.UTF-8): Konsola Baculi oparta na wxWidgets
+%package console-qt
+Summary: bat – The Bacula Administration Tool
+Summary(pl.UTF-8): bat – narzędzie administratora Baculi
Group: Networking/Utilities
Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: %{name}-common = %{version}-%{release}
+Requires: Qt5Core
+Obsoletes: bacula-console-qt5 < 5.2.13-1
-%description console-wx
+%description console-qt
Bacula - It comes by night and sucks the vital essence from your
computers.
-Bacula Console is the program that allows the administrator or user to
-communicate with the Bacula Director. This is the wxWidgets GUI
-interface.
+bat is short for Bacula Administration Tool. It is a GUI form of
+bconsole, but with many additional features.
-%description console-wx -l pl.UTF-8
+%description console-qt -l pl.UTF-8
Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
-Bacula Console to program umożliwiający administratorowi lub
-użytkownikowi komunikowanie się z programem Bacula Director. To jest
-interfejs graficzny oparty na wxWidgets.
-
-%package console-gnome
-Summary: Bacula GNOME Console
-Summary(pl.UTF-8): Konsola Baculi oparta dla GNOME
-Group: Networking/Utilities
-Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-
-%description console-gnome
-Bacula - It comes by night and sucks the vital essence from your
-computers.
-
-Bacula Console is the program that allows the administrator or user to
-communicate with the Bacula Director. This is the GNOME GUI interface.
-
-%description console-gnome -l pl.UTF-8
-Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
-
-Bacula Console to program umożliwiający administratorowi lub
-użytkownikowi komunikowanie się z programem Bacula Director. To jest
-interfejs graficzny oparty na GNOME.
-
-%package console-qt4
-Summary: Bacula Qt4 Console
-Summary(pl.UTF-8): Konsola Baculi oparta na Qt4
-Group: Networking/Utilities
-Requires(post): sed >= 4.0
-Requires: %{name}-common = %{epoch}:%{version}-%{release}
-
-%description console-qt4
-Bacula - It comes by night and sucks the vital essence from your
-computers.
-
-Bacula Console is the program that allows the administrator or user to
-communicate with the Bacula Director. This is the Qt4 GUI interface.
-
-%description console-qt4 -l pl.UTF-8
-Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
-
-Bacula Console to program umożliwiający administratorowi lub
-użytkownikowi komunikowanie się z programem Bacula Director. To jest
-interfejs graficzny oparty na Qt4.
+bat, czyli Bacula Administration Tool, jest graficznym odpowiednikiem
+bconsole, z wieloma dodatkowymi funkcjami.
%package tray-monitor
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}
+Requires: systemd-units >= 38
%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}
+Requires: systemd-units >= 38
+Suggests: mtx
Conflicts: dvd+rw-tools <= 5.21.4.10.8-1
%description sd
na maszynie, która zawiera urządzenie backupowe (zwykle napęd
taśmowy).
-%package rescue
-Summary: Bacula - The Network Backup Solution
-Summary(pl.UTF-8): Bacula - rozwiązanie do wykonywania kopii zapasowych po sieci
+%package db-postgresql
+Summary: PostgreSQL database driver for Bacula
+Summary(pl.UTF-8): Sterownik bazy PostgreSQL dla Baculi
Group: Networking/Utilities
-Requires: %{name}-fd = %{epoch}:%{version}-%{release}
-Requires: coreutils
-Requires: util-linux
+Requires(post): /sbin/ldconfig
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
+Obsoletes: bacula(db)
-%description rescue
-Bacula - It comes by night and sucks the vital essence from your
-computers.
+%description db-postgresql
+PostgreSQL database driver for Bacula.
-Bacula is a set of computer programs that permit you (or the system
-administrator) to manage backup, recovery, and verification of
-computer data across a network of computers of different kinds. In
-technical terms, it is a network client/server based backup program.
-Bacula is relatively easy to use and efficient, while offering many
-advanced storage management features that make it easy to find and
-recover lost or damaged files.
+%description db-postgresql -l pl.UTF-8
+Sterownik bazy PostgreSQL dla Baculi.
-This package installs scripts for disaster recovery and builds rescue
-floppy disk for bare metal recovery.
+%package db-mysql
+Summary: MySQL database driver for Bacula
+Summary(pl.UTF-8): Sterownik bazy MySQL dla Baculi
+Group: Networking/Utilities
+Requires(post): /sbin/ldconfig
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
+Obsoletes: bacula(db)
-To make the bacula rescue disk run "./make_rescue_disk
---copy-static-bacula
-- --copy-etc-files" from the %{_sysconfdir}/rescue directory. To
- recreate the rescue information for this system run ./getdiskinfo
- again.
+%description db-mysql
+MySQL database driver for Bacula.
-%description rescue -l pl.UTF-8
-Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
+%description db-mysql -l pl.UTF-8
+Sterownik bazy MySQL dla Baculi.
-Bacula to zbiór programów umożliwiających administratorowi na
-zarządzanie kopiami zapasowymi, odzyskiwaniem i weryfikacją danych w
-sieci komputerów różnego rodzaju. W terminologii technicznej jest to
-program do kopii zapasowych pracujący w architekturze klient-serwer.
-Bacula jest stosunkowo łatwa w użyciu i wydajna, oferując przy tym
-wiele zaawansowanych możliwości przy zarządzaniu nośnikami,
-ułatwiających znalezienie i odzyskanie utraconych lub uszkodzonych
-plików.
+%package db-sqlite3
+Summary: SQLite database driver for Bacula
+Summary(pl.UTF-8): Sterownik bazy SQLite dla Baculi
+Group: Networking/Utilities
+Requires(post): /sbin/ldconfig
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
+Obsoletes: bacula(db)
+
+%description db-sqlite3
+SQLite database driver for Bacula.
+
+%description db-sqlite3 -l pl.UTF-8
+Sterownik bazy SQLite dla Baculi.
+
+%package -n nagios-plugin-check_bacula
+Summary: Nagios plugin to check bacula
+Group: Networking
+Requires: nagios-common
-Ten pakiet zawiera skrypty do odtwarzania po awarii i tworzy dyskietkę
-ratunkowe do odtwarzania systemu od zera.
+%description -n nagios-plugin-check_bacula
+Nagios plugin to check bacula.
-Aby stworzyć dyskietkę ratunkową Baculi, należy uruchomić "./make_rescue_disk
---copy-static-bacula - --copy-etc-files" z katalogu
-%{_sysconfdir}/rescue . Aby ponownie utworzyć informacje ratunkowe dla
-danego systemu, należy ponownie uruchomić ./getdiskinfo .
+%define _noautoreq libbaccats-%{version}.so
+# provided by various db libraries as a symlink
%prep
%setup -q -a 1
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%ifarch x32
%patch5 -p1
+%endif
+%if %{with s3}
+cd libs3-%{libs3_version}
%patch6 -p1
-%{?with_dbi:%patch7 -p1}
-
-tar -xf %{SOURCE2} && ln -s bacula-rescue-* rescue
+cd ..
+%endif
sed -i -e 's#bindir=.*#bindir=%{_bindir}#g' \
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 bdb mysql postgresql sqlite3 sqlite; do
- sed -i -e "s,@DB_TYPE@,$dbtype,g" src/cats/*_${dbtype}_*
-done
-%endif
+sed -i -e 's/@basename@/--hostname--/' src/*/*.conf.in
%build
-cp -f %{_datadir}/automake/config.sub autoconf
-cd autoconf && %{__aclocal} -I bacula-macros -I gettext-macros && cd ..
+cd autoconf
+%{__aclocal} -I bacula-macros -I gettext-macros -I libtool
+## $BUILD_DIR not seen by libtoolize, export it
+#BUILD_DIR=.. %%{__libtoolize}
+cd ..
%{__autoconf} --prepend-include=$(pwd)/autoconf autoconf/configure.in > configure
+%if %{with s3}
+cd libs3-%{libs3_version}
+CFLAGS="%{rpmcflags} -Wno-stringop-overflow" make VERBOSE=1 build/lib/libs3.a
+ln -s ../inc build/include
+cd ..
+%endif
+
CPPFLAGS="-I/usr/include/ncurses -I%{_includedir}/readline"
-WXCONFIG=%{_bindir}/wx-gtk2-unicode-config \
+
+QMAKE=%{_bindir}/qmake-qt5 \
%configure \
+ DISTNAME=pld-linux \
--with-scriptdir=%{_libexecdir}/%{name} \
- --%{!?with_gnome:dis}%{?with_gnome:en}able-gnome \
- %{?with_bat:--enable-bat} \
+ %{?with_qt:--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-smtp-host=localhost \
--with-pid-dir=/var/run \
--with-subsys-dir=/var/lock/subsys \
+ --with-systemd=%{systemdunitdir} \
--enable-batch-insert \
- --with-%{database} \
+ %{?with_pgsql:--with-postgresql} \
+ %{?with_mysql:--with-mysql} \
+ %{?with_sqlite3:--with-sqlite3} \
%{?with_sqlite3_sync_off:--enable-extra-sqlite3-init="pragma synchronous=0;"} \
+ %{!?with_s3:--without-s3} \
+ %{?with_s3:--with-s3=$PWD/libs3-%{libs3_version}/build} \
--with-dir-password="#FAKE-dir-password#" \
--with-fd-password="#FAKE-fd-password#" \
--with-sd-password="#FAKE-sd-password#" \
--with-mon-sd-password="#FAKE-mon-sd-password#" \
--with-openssl
-%if %{with bat}
+%if %{with qt}
cd src/qt-console
-qmake-qt4 bat.pro
+qmake-qt5 bat.pro
cd ../..
%endif
-%{__make}
+%{__make} \
+ %{?with_s3:S3_LIBS="$PWD/libs3-%{libs3_version}/build/lib -ls3 $(pkg-config --libs libcurl libxml2)"} \
+ 2>&1 | tee log
+# check for build errors
+grep "Error in" log && exit 1
-%if %{with rescue}
-cd rescue
-%configure \
- --with-bacula=../
-cd linux/cdrom
-fakeroot %{__make}
+%if %{with nagios}
+# nagios plugin
+%{__make} -C examples/nagios/check_bacula
%endif
%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{%{_pixmapsdir},%{_desktopdir}} \
+ $RPM_BUILD_ROOT{%{_mandir},%{_bindir},/var/log{,/archive}/bacula} \
+ $RPM_BUILD_ROOT%{systemdunitdir}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-install %{SOURCE10} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-dir
-install %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-fd
-install %{SOURCE12} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-sd
-install %{SOURCE13} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}-dir
-install %{SOURCE14} $RPM_BUILD_ROOT/etc/sysconfig/bacula-dir
-install %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/bacula-fd
-install %{SOURCE16} $RPM_BUILD_ROOT/etc/sysconfig/bacula-sd
-
-%if %{with console_wx}
-# tray-monitor is for regular users
-mv $RPM_BUILD_ROOT%{_sbindir}/bacula-tray-monitor $RPM_BUILD_ROOT%{_bindir}
-
-install scripts/bacula.png $RPM_BUILD_ROOT%{_pixmapsdir}/bacula.png
-install src/tray-monitor/generic.xpm $RPM_BUILD_ROOT%{_pixmapsdir}/bacula-tray-monitor.xpm
-install scripts/bacula.desktop.gnome2 $RPM_BUILD_ROOT%{_desktopdir}/bacula.desktop
-sed -e 's/gnome-console/wx-console/g;s/Console/Wx Console/g' \
- scripts/bacula.desktop.gnome2 > $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
+%{__make} -C src/stored install-aligned \
+ DESTDIR=$RPM_BUILD_ROOT
-%if %{with bat}
-install src/qt-console/.libs/bat $RPM_BUILD_ROOT%{_sbindir}
-install scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
+%if %{with s3}
+%{__make} -C src/stored install-cloud \
+ DESTDIR=$RPM_BUILD_ROOT
%endif
-%if %{with rescue}
-# install the rescue stuff, these are the rescue scripts
-install rescue/linux/floppy/backup.etc.list $RPM_BUILD_ROOT%{_sysconfdir}/rescue
-install rescue/linux/floppy/*_* $RPM_BUILD_ROOT%{_sysconfdir}/rescue
-install rescue/linux/floppy/getdiskinfo $RPM_BUILD_ROOT%{_sysconfdir}/rescue
-install rescue/linux/floppy/sfdisk.bz2 $RPM_BUILD_ROOT%{_sysconfdir}/rescue
+# create copies of make_catalog_backup for specific databases; zeore default one (will be ghost)
+for database in %{databases}; do
+ sed -e "s#default_db_type=.*#default_db_type=${database}#g" \
+ $RPM_BUILD_ROOT%{_libexecdir}/%{name}/make_catalog_backup \
+ > $RPM_BUILD_ROOT%{_libexecdir}/%{name}/make_${database}_catalog_backup
+ chmod 755 $RPM_BUILD_ROOT%{_libexecdir}/%{name}/make_${database}_catalog_backup
+done
+:> $RPM_BUILD_ROOT%{_libexecdir}/%{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
+install -p %{SOURCE12} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-sd
+cp -a %{SOURCE13} $RPM_BUILD_ROOT/etc/logrotate.d/%{name}-dir
+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 qt}
+# 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 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}
# 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}
-install scripts/mtx-changer.conf $RPM_BUILD_ROOT%{_sysconfdir}/
+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 !%{with console_wx}
-rm -f $RPM_BUILD_ROOT%{_desktopdir}/bacula-wx.desktop
+
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/ChangeLog
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/INSTALL
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/LICENSE
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/README
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/ReleaseNotes
+rm $RPM_BUILD_ROOT%{_docdir}/bacula/VERIFYING
+
+# startup scripts, those in /etc/rc.d/init.d are better
+rm $RPM_BUILD_ROOT%{_sbindir}/bacula
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/bacula-ctl-*
+
+# unsupported
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/btraceback.mdb
+
+# rename to avoid possible conflicts
+mv $RPM_BUILD_ROOT%{_sbindir}/{,bacula-}dbcheck
+mv $RPM_BUILD_ROOT%{_mandir}/man8/{,bacula-}dbcheck.8.gz
+
+# no -devel files packaged, so this is also useless
+rm $RPM_BUILD_ROOT%{_libdir}/libbac{,cfg,find,sql,cats,sd}.{so,la}
+rm $RPM_BUILD_ROOT%{_libdir}/bacula-sd-*-driver.so
+%{?with_mysql:rm $RPM_BUILD_ROOT%{_libdir}/libbaccats-mysql.{la,so}}
+%{?with_pgsql:rm $RPM_BUILD_ROOT%{_libdir}/libbaccats-postgresql.{la,so}}
+%{?with_sqlite3:rm $RPM_BUILD_ROOT%{_libdir}/libbaccats-sqlite3.{la,so}}
+
+%if %{with nagios}
+install -d $RPM_BUILD_ROOT%{nagiosplugindir}
+%{__make} -C examples/nagios/check_bacula install \
+ sbindir=%{nagiosplugindir} \
+ DESTDIR=$RPM_BUILD_ROOT
%endif
-touch $RPM_BUILD_ROOT%{_sysconfdir}/.pw.sed
%clean
rm -rf $RPM_BUILD_ROOT
%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 -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 \
+ [ -f $cf ] && sed -i -e"s:#FAKE-$f#:$p:" "$cf" || : \
+ done \
+done \
+for cf in *.conf *.conf.rpmnew; do \
+ [ -f $cf ] && sed -i -e"s:--hostname--:`hostname`:" "$cf" || : \
+done
+
%post common
/sbin/ldconfig
-echo "Updating bacula passwords and names..."
-cd /etc/bacula
-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
- [ -f $cf ] && sed -i -e"s:#FAKE-$f#:$p:" "$cf" || :
- done
-done
-for cf in *.conf *.conf.rpmnew ; do
- [ -f $cf ] && sed -i -e"s:--hostname--:`hostname`:" "$cf" || :
-done
+%update_configs
%postun common
/sbin/ldconfig
%groupremove bacula
fi
-%post dir
-umask 077
-
-# XXX: Most of this upgrade procedure is safe for sqlite only. Other databases would require knowledge
-# about currently used version so we can't easily support these :(
-
-%if %{with sqlite} || %{with sqlite3}
-[ -s %{_localstatedir}/bacula.db ] && \
- DB_VER=`echo "select * from Version;" | \
- %{_bindir}/sqlite%{?with_sqlite3:3} %{_localstatedir}/bacula.db | tail -n 1 2>/dev/null`
-
-if [ -z "$DB_VER" ]; then
-# grant privileges and create tables
- %{_libexecdir}/%{name}/grant_bacula_privileges > dev/null
- %{_libexecdir}/%{name}/create_bacula_database > dev/null
- %{_libexecdir}/%{name}/make_bacula_tables > dev/null
-else
- echo "Backing up bacula tables"
- echo ".dump" | sqlite%{?with_sqlite3:3} %{_localstatedir}/bacula.db | bzip2 > %{_localstatedir}/bacula_backup.sql.bz2
-
- db_type="%{database}"
-
- next_ver=$(($DB_VER + 1))
- # support up to version 30; increase this if needed
- for ver in $(seq $next_ver 30); do
- prev_ver=$(($ver - 1))
-
- if [ -x %{_libexecdir}/%{name}/update_${type}_tables_${prev_ver}_to_${ver} ]; then
- echo "Upgrading bacula database: db=${db_type} from ${prev_ver} to ${ver}..."
- %{_libexecdir}/%{name}/update_${type}_tables_${prev_ver}_to_${ver}
- fi
- done
-
- %{_libexecdir}/%{name}/update_bacula_tables
- echo "If bacula works correctly you can remove the backup file %{_localstatedir}/bacula_backup.sql.bz2"
-fi
-chown -R bacula:bacula %{_localstatedir}
-chmod -R u+rX,go-rwx %{_localstatedir}/*
-%endif
+%triggerpostun dir -- %{name}-dir < %{version}-0
+%banner bacula-dir -t3 <<EOF
+You have upgraded from an older version of Bacula director.
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
+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
-%post fd
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
+%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
-%post sd
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
+%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
fi
%post console
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
-
-%post console-wx
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
-
-%post console-gnome
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
-
-%post console-qt4
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
+%update_configs
+
+%triggerpostun common -- %{name}-common < 5.0.1-2
+find %{_sysconfdir}/bat.conf* -perm /007 -print0 2>/dev/null | xargs -0 -r chmod 600 || :
+
+%post console-qt
+%update_configs
%post tray-monitor
-echo "Updating Bacula passwords and names..."
-cd /etc/bacula
-for f in *-password; do
- p=`cat $f`
- sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
-done
-sed -i -e"s:--hostname--:`hostname`:" *.conf *.conf.rpmnew 2>/dev/null || :
+%update_configs
+
+%define db_post() \
+/sbin/ldconfig \
+for name in "create database" "drop tables" "drop database" "grant privileges" "make tables" "update tables"; do \
+ prefix="${name%% *}" \
+ 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"
-%post rescue
-# link our current installed conf file to the rescue directory
-ln -sf %{_sysconfdir}/bacula-fd.conf %{_sysconfdir}/rescue/bacula-fd.conf
+%post db-postgresql
+%db_post postgresql
-# run getdiskinfo
-echo "Creating rescue files for this system..."
-cd %{_sysconfdir}/rescue
-./getdiskinfo
+%postun db-postgresql -p /sbin/ldconfig
-%preun rescue
-# remove the files created after the initial rpm installation
-if [ "$1" = "0" ]; then
- rm -f %{_sysconfdir}/rescue/bacula-fd.conf
- rm -f %{_sysconfdir}/rescue/partition.*
- rm -f %{_sysconfdir}/rescue/format.*
- rm -f %{_sysconfdir}/rescue/mount_drives
- rm -f %{_sysconfdir}/rescue/start_network
- rm -f %{_sysconfdir}/rescue/sfdisk
- rm -rf %{_sysconfdir}/rescue/diskinfo/*
-fi
+%post db-mysql
+%db_post mysql
+
+%postun db-mysql -p /sbin/ldconfig
+
+%post db-sqlite3
+%db_post sqlite3
+
+%postun db-sqlite3 -p /sbin/ldconfig
%files common
%defattr(644,root,root,755)
%doc LICENSE
%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.so.1.*.*
-%attr(755,root,root) %ghost /%{_libdir}/libbac.so.1
-%attr(755,root,root) /%{_libdir}/libbaccfg.so.1.*.*
-%attr(755,root,root) %ghost /%{_libdir}/libbaccfg.so.1
-%attr(755,root,root) /%{_libdir}/libbacfind.so.1.*.*
-%attr(755,root,root) %ghost /%{_libdir}/libbacfind.so.1
-%attr(755,root,root) /%{_libdir}/libbacpy.so.1.*.*
-%attr(755,root,root) %ghost /%{_libdir}/libbacpy.so.1
-%attr(755,root,root) /%{_libdir}/libbacsql.so.1.*.*
-%attr(755,root,root) %ghost /%{_libdir}/libbacsql.so.1
+%attr(755,root,root) %{_libdir}/libbac-9*.so
+%attr(755,root,root) %{_libdir}/libbacsd-9*.so
+%attr(755,root,root) %{_libdir}/libbaccfg-9*.so
+%attr(755,root,root) %{_libdir}/libbacfind-9*.so
+%attr(755,root,root) %{_libdir}/libbacsql-9*.so
%{_mandir}/man8/bacula.8*
%{_mandir}/man1/bsmtp.1*
%{_mandir}/man8/btraceback.8*
%dir %{_libexecdir}/%{name}
%{_libexecdir}/%{name}/btraceback.dbx
%{_libexecdir}/%{name}/btraceback.gdb
+%{_libexecdir}/%{name}/bacula_config
%attr(770,root,bacula) %dir %{_localstatedir}
%attr(750,bacula,logs) %dir /var/log/bacula
%attr(640,bacula,logs) %ghost /var/log/bacula/log
+%attr(750,bacula,logs) %dir /var/log/archive/bacula
%files dir
%defattr(644,root,root,755)
-%doc ChangeLog CheckList ReleaseNotes kernstodo LICENSE
+%doc ChangeLog ReleaseNotes 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}/bdirjson
%attr(755,root,root) %{_sbindir}/bregex
%attr(755,root,root) %{_sbindir}/bwild
-%attr(755,root,root) %{_sbindir}/dbcheck
+%attr(755,root,root) %{_sbindir}/bacula-dbcheck
%{_mandir}/man8/bacula-dir.8*
-%{_mandir}/man8/dbcheck.8*
+%{_mandir}/man8/bacula-dbcheck.8*
+%{_mandir}/man8/bregex.8*
+%{_mandir}/man8/bwild.8*
%{_libexecdir}/%{name}/query.sql
-%if %{with bdb} || %{with dbi}
-%attr(755,root,root) %{_libexecdir}/%{name}/create_bdb_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_bdb_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_bdb_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_bdb_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_bdb_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_bdb_*
-%endif
-%if %{with sqlite3} || %{with dbi}
-%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_*
-%endif
-%if %{with sqlite} || %{with dbi}
-%attr(755,root,root) %{_libexecdir}/%{name}/create_sqlite_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_sqlite_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_sqlite_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_sqlite_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_sqlite_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite_*
+%attr(755,root,root) %{_libexecdir}/%{name}/delete_catalog_backup
+
+%if %{with pgsql}
+%files db-postgresql
+%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}/make_postgresql_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-postgresql-9*.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-9*.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
%endif
-%if %{with mysql} || %{with dbi}
+
+%if %{with mysql}
+%files db-mysql
+%defattr(644,root,root,755)
%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}/make_mysql_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-mysql-9*.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-9*.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
%endif
-%if %{with pgsql} || %{with dbi}
-%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}/fix_postgresql_*
-%endif
-%if %{without dbi}
-%attr(755,root,root) %{_libexecdir}/%{name}/create_bacula_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_bacula_database
-%attr(755,root,root) %{_libexecdir}/%{name}/drop_bacula_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/grant_bacula_privileges
-%attr(755,root,root) %{_libexecdir}/%{name}/make_bacula_tables
-%attr(755,root,root) %{_libexecdir}/%{name}/update_bacula_tables
+
+%if %{with sqlite3}
+%files db-sqlite3
+%defattr(644,root,root,755)
+%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}/make_sqlite3_catalog_backup
+%attr(755,root,root) %{_libdir}/libbaccats-sqlite3-9*.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbaccats-9*.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
%endif
-%attr(755,root,root) %{_libexecdir}/%{name}/make_catalog_backup
-%attr(755,root,root) %{_libexecdir}/%{name}/delete_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) %{_sbindir}/bfdjson
+%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
%attr(755,root,root) %{_sbindir}/bls
%attr(755,root,root) %{_sbindir}/bscan
+%attr(755,root,root) %{_sbindir}/bsdjson
%attr(755,root,root) %{_sbindir}/btape
-%attr(755,root,root) %{_libexecdir}/%{name}/mtx-changer
+%attr(755,root,root) %{_libexecdir}/%{name}/baculabackupreport
+%attr(755,root,root) %{_libexecdir}/%{name}/bacula-tray-monitor.desktop
%attr(755,root,root) %{_libexecdir}/%{name}/disk-changer
-%attr(755,root,root) %{_libexecdir}/%{name}/dvd-handler
+%attr(755,root,root) %{_libexecdir}/%{name}/isworm
+%attr(755,root,root) %{_libexecdir}/%{name}/mtx-changer
+%attr(755,root,root) %{_libexecdir}/%{name}/tapealert
+%attr(755,root,root) %{_libdir}/bacula-sd-aligned-driver-9.*.so
+%if %{with s3}
+%attr(755,root,root) %{_libdir}/bacula-sd-cloud-driver-9.*.so
+%endif
+
%{_mandir}/man8/bacula-sd.8*
%{_mandir}/man8/bcopy.8*
%{_mandir}/man8/bextract.8*
%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
+%attr(755,root,root) %{_sbindir}/bbconsjson
%{_mandir}/man8/bconsole.8*
-%if %{with console_wx}
-%files console-wx
-%defattr(644,root,root,755)
-%doc LICENSE
-%{_pixmapsdir}/%{name}.png
-%{_desktopdir}/bacula-wx.desktop
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bwx-console.conf
-%attr(755,root,root) %{_sbindir}/bwx-console
-%{_mandir}/man1/bacula-bwxconsole.1*
-%endif
-
-%if %{with gnome}
-%files console-gnome
-%defattr(644,root,root,755)
-%doc LICENSE
-%{_pixmapsdir}/%{name}.png
-%{_desktopdir}/bacula.desktop
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bgnome-console.conf
-%attr(755,root,root) %{_sbindir}/bgnome-console
-%{_mandir}/man1/bacula-bgnome-console.1*
-%endif
-
-%if %{with bat}
-%files console-qt4
+%if %{with qt}
+%files console-qt
%defattr(644,root,root,755)
%doc LICENSE
%{_pixmapsdir}/%{name}.png
%{_desktopdir}/bat.desktop
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bat.conf
-%attr(755,root,root) %{_sbindir}/bat
+# Do not make this file world-readable or any user will get full access to the
+# backup system
+%attr(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bat.conf
+%attr(755,root,root) %{_bindir}/bat
%{_mandir}/man1/bat.1*
+%{_docdir}/%{name}
%endif
-%if %{with console_wx}
-%files tray-monitor
+%if %{with nagios}
+%files -n nagios-plugin-check_bacula
%defattr(644,root,root,755)
-%doc LICENSE
-%{_pixmapsdir}/%{name}-tray-monitor.xpm
-%{_desktopdir}/%{name}-tray-monitor.desktop
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/tray-monitor.conf
-%attr(755,root,root) %{_bindir}/bacula-tray-monitor
-%{_mandir}/man1/bacula-tray-monitor.1*
-%endif
-
-%if %{with rescue}
-%files rescue
-%defattr(644,root,root,755)
-%doc LICENSE
-%dir %{_sysconfdir}/rescue
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/backup.etc.list
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/bacula-fd
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/format_floppy
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/getdiskinfo
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/make_rescue_disk
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/restore_bacula
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/restore_etc
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/run_grub
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/run_lilo
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rescue/sfdisk.bz2
+%attr(755,root,root) %{nagiosplugindir}/check_bacula
%endif