# TODO:
-# - update desktop files, think about su-wrappers for console
+# - update desktop files, think about su-wrappers for console (with .desktop files)
# - package web admin
# - fix log file permissions
+# - no longer builds:
+#make[1]: *** No rule to make target `../lib/libbac.la', needed by `bacula-dir'. Stop.
+#make[1]: *** Waiting for unfinished jobs....
+#make[1]: Leaving directory `/home/users/glen/rpm/BUILD.x86_64-linux/bacula-5.0.2/src/dird'
#
# Conditional build:
%bcond_without console_wx # wx-console program
%bcond_without pgsql # use PostgreSQL
%bcond_without sqlite3 # use SQLite3
%bcond_without python
+%bcond_with 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
-#
+
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: 2
-Epoch: 0
+Version: 5.0.3
+Release: 1
License: extended GPL v2
Group: Networking/Utilities
-Source0: http://dl.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: beb9f8da196b3c9ffb0356f087dbdb99
-Source1: http://dl.sourceforge.net/bacula/%{name}-docs-%{version}.tar.bz2
-# Source1-md5: ce2ef0dca50ab916fd6701b53b7bb4df
-Source2: http://dl.sourceforge.net/bacula/%{name}-rescue-5.0.0.tar.gz
-# Source2-md5: 349623581cfe0bcd798dd137abac959a
+Source0: http://downloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+# Source0-md5: 9de254ae39cab0587fdb2f5d8d90b03b
+Source1: http://downloads.sourceforge.net/bacula/%{name}-docs-%{version}.tar.bz2
+# Source1-md5: 7a00557dcf0dfa40de9e74176fefd1ae
+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
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
URL: http://www.bacula.org/
BuildRequires: acl-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gettext-devel
+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: qwt-devel >= 5.0.2-2
%endif
%{?with_mysql:BuildRequires: mysql-devel}
%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
+BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.268
BuildRequires: sed >= 4.0
%{?with_sqlite3:BuildRequires: sqlite3-devel}
+BuildRequires: which
%if %{with console_wx}
BuildRequires: wxGTK2-unicode-devel >= 2.4.0
%endif
%define _sysconfdir /etc/%{name}
%define _localstatedir /var/lib/%{name}
+%define nagiosplugindir %{_prefix}/lib/nagios/plugins
# from 'the worst' to 'the best'
%define databases %{?with_dbi:dbi} %{?with_sqlite3:sqlite3} %{?with_mysql:mysql} %{?with_pgsql:postgresql}
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}
%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
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}
+Requires: %{name}-common = %{version}-%{release}
+Provides: bacula(db) = %{version}-%{release}
Obsoletes: bacula(db)
%description db-dbi
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
Ten pakiet zawiera skrypty do odtwarzania po awarii i tworzy dyskietkę
ratunkowe do odtwarzania systemu od zera.
+%package -n nagios-plugin-check_bacula
+Summary: Nagios plugin to check bacula
+Group: Networking
+Requires: nagios-common
+
+%description -n nagios-plugin-check_bacula
+Nagios plugin to check bacula.
+
%prep
%setup -q -a 1
%patch0 -p1
-%patch1 -p1
+%patch1 -p0
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
-#%patch6 -p1
%patch7 -p1
%patch8 -p1
+%patch9 -p1
tar -xf %{SOURCE2} && ln -s bacula-rescue-* rescue
# 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
+for database in %{databases}; do
WXCONFIG=%{_bindir}/wx-gtk2-unicode-config \
+ QMAKE=%{_bindir}/qt4-qmake \
%configure \
--with-scriptdir=%{_libexecdir}/%{name} \
%{?with_bat:--enable-bat} \
%{__make}
+%if %{with nagios}
+# nagios plugin
+%{__make} -C examples/nagios/check_bacula
+%endif
+
%if %{with rescue}
cd rescue
%configure \
# install libraries for all the database backends
# ldconfig will add the soname symlinks when one of the packages is installed
-for database in %{databases} ; do
+for database in %{databases}; do
for libfile in libbacsql/$database%{_libdir}/lib*-*.so; do
orig_name=${libfile##*/}
file_prefix=${orig_name%%-*.so}
# 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
+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
%endif
%if %{with bat}
+# TODO: libtool install
+#libtool --silent --mode=install install src/qt-console/bat $RPM_BUILD_ROOT%{_bindir}
install src/qt-console/.libs/bat $RPM_BUILD_ROOT%{_bindir}
-install scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
+cp -a scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
%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
+cp -a rescue/linux/floppy/backup.etc.list $RPM_BUILD_ROOT%{_sysconfdir}/rescue
+cp -a rescue/linux/floppy/sfdisk.bz2 $RPM_BUILD_ROOT%{_sysconfdir}/rescue
+install -p rescue/linux/floppy/*_* $RPM_BUILD_ROOT%{_sysconfdir}/rescue
+install -p rescue/linux/floppy/getdiskinfo $RPM_BUILD_ROOT%{_sysconfdir}/rescue
%endif
touch $RPM_BUILD_ROOT/var/log/bacula/log
# install the updatedb scripts
-install updatedb/update_sqlite* $RPM_BUILD_ROOT%{_libexecdir}/%{name}
+install -p updatedb/update_sqlite* $RPM_BUILD_ROOT%{_libexecdir}/%{name}
# place for site passwords
touch $RPM_BUILD_ROOT%{_sysconfdir}/{dir-password,fd-password,sd-password}
rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/bacula-ctl-*
# unsupported
-rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/*_bdb_*
+#rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/*_bdb_*
# rename to avoid possible conflicts
mv $RPM_BUILD_ROOT%{_sbindir}/{,bacula-}dbcheck
ln -sf /dev/null $RPM_BUILD_ROOT%{_libexecdir}/%{name}/$f
done
+%if %{with nagios}
+%{__make} -C examples/nagios/check_bacula install \
+ sbindir=%{nagiosplugindir} \
+ DESTDIR=$RPM_BUILD_ROOT
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
%define db_post() \
/sbin/ldconfig \
-for name in "create database" "drop tables" "drop database" "grant privileges" "make tables" "update tables" ; do \
+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}" || : \
+ ln -sf "${prefix}_%{1}_${suffix}" %{_libexecdir}/%{name}/"${prefix}_bacula_${suffix}" || : \
done \
%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 \
+ for f in %{_libexecdir}/%{name}/*_bacula_*; do \
+ if [ -L "$f" -a ! -e "$f" ]; then \
rm "$f" \
fi \
done \
# 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
%{_mandir}/man8/bacula.8*
%{_mandir}/man1/bsmtp.1*
%{_mandir}/man8/btraceback.8*
%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) %{_libdir}/libbacsql-postgresql-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%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) %{_libdir}/libbacsql-mysql-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%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) %{_libdir}/libbacsql-sqlite3-5*.so
-%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.so
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-5*.so
%ghost %{_libexecdir}/%{name}/create_bacula_database
%ghost %{_libexecdir}/%{name}/drop_bacula_tables
%ghost %{_libexecdir}/%{name}/drop_bacula_database
%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
+%attr(755,root,root) %{_libdir}/libbacsql-dbi-5*.so
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-5*.so
%files fd
%defattr(644,root,root,755)
%{_pixmapsdir}/%{name}.png
%{_desktopdir}/bat.desktop
# Do not make this file world-readable or any user will get full access to the
-# backup system
+# 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*
%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
%endif
+
+%if %{with nagios}
+%files -n nagios-plugin-check_bacula
+%defattr(644,root,root,755)
+%attr(755,root,root) %{nagiosplugindir}/check_bacula
+%endif