# - fix log file permissions
#
# Conditional build:
-%if "%{pld_release}" == "ac"
-%bcond_with qt # BAT / qt-console Qt4 GUI
-%else
-%bcond_without qt # BAT / qt-console Qt4 GUI
-%endif
+%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 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 %{without sqlite3}
%undefine with_sqlite3_sync_off
%endif
-%define qtver 4.8.4
+# 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: 7.0.5
-Release: 2
+Version: 9.4.2
+Release: 1
License: AGPL v3
Group: Networking/Utilities
Source0: http://downloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: b4a99d673f5e1eaae8b257ccc610241f
+# 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
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_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
BuildRequires: python
BuildRequires: python-modules
%if %{with qt}
-BuildRequires: QtCore-devel
-BuildRequires: QtGui-devel
-BuildRequires: qt4-build >= %{qtver}
-BuildRequires: qt4-qmake >= %{qtver}
+BuildRequires: Qt5Core-devel
+BuildRequires: Qt5Gui-devel
+BuildRequires: qt5-build
+BuildRequires: qt5-qmake
%endif
%{?with_mysql:BuildRequires: mysql-devel}
%{?with_pgsql:BuildRequires: postgresql-devel}
Group: Networking/Utilities
Requires(post): sed >= 4.0
Requires: %{name}-common = %{version}-%{release}
-Requires: QtCore >= %{qtver}
-Obsoletes: bacula-console-qt4 < 5.2.13-1
+Requires: Qt5Core
+Obsoletes: bacula-console-qt5 < 5.2.13-1
%description console-qt
Bacula - It comes by night and sucks the vital essence from your
# provided by various db libraries as a symlink
%prep
-%setup -q
+%setup -q -a 1
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%ifarch x32
+%patch5 -p1
+%endif
+%if %{with s3}
+cd libs3-%{libs3_version}
+%patch6 -p1
+cd ..
+%endif
sed -i -e 's#bindir=.*#bindir=%{_bindir}#g' \
src/cats/create_* src/cats/delete_* src/cats/drop_* \
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"
-QMAKE=%{_bindir}/qmake-qt4 \
+QMAKE=%{_bindir}/qmake-qt5 \
%configure \
DISTNAME=pld-linux \
--with-scriptdir=%{_libexecdir}/%{name} \
%{?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#" \
%if %{with qt}
cd src/qt-console
-qmake-qt4 bat.pro
+qmake-qt5 bat.pro
cd ../..
%endif
-%{__make} 2>&1 | tee log
+%{__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
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
+%{__make} -C src/stored install-aligned \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%if %{with s3}
+%{__make} -C src/stored install-cloud \
+ DESTDIR=$RPM_BUILD_ROOT
+%endif
+
# 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%{_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
+ $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%{_libdir}/%{name}/make_catalog_backup
+:> $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
# 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}
rm $RPM_BUILD_ROOT%{_docdir}/bacula/README
rm $RPM_BUILD_ROOT%{_docdir}/bacula/ReleaseNotes
rm $RPM_BUILD_ROOT%{_docdir}/bacula/VERIFYING
-rm $RPM_BUILD_ROOT%{_docdir}/bacula/technotes
# startup scripts, those in /etc/rc.d/init.d are better
rm $RPM_BUILD_ROOT%{_sbindir}/bacula
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}.{so,la}
-#rm $RPM_BUILD_ROOT%{_libdir}/libbaccats*.{so,la}
+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}}
%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}/bpluginfo
%attr(755,root,root) %{_sbindir}/bsmtp
%attr(755,root,root) %{_sbindir}/btraceback
-%attr(755,root,root) %{_libdir}/libbac-7*.so
-%attr(755,root,root) %{_libdir}/libbaccfg-7*.so
-%attr(755,root,root) %{_libdir}/libbacfind-7*.so
-%attr(755,root,root) %{_libdir}/libbacsql-7*.so
+%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}/man8/bpluginfo.8*
%{_mandir}/man1/bsmtp.1*
%{_mandir}/man8/btraceback.8*
%dir %{_libexecdir}/%{name}
%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}/bacula-dbcheck
%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-7*.so
+%attr(755,root,root) %{_libdir}/libbaccats-postgresql-9*.so
-%ghost %attr(755,root,root) %{_libdir}/libbaccats-7*.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
%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-7*.so
+%attr(755,root,root) %{_libdir}/libbaccats-mysql-9*.so
-%ghost %attr(755,root,root) %{_libdir}/libbaccats-7*.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
%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-7*.so
+%attr(755,root,root) %{_libdir}/libbaccats-sqlite3-9*.so
-%ghost %attr(755,root,root) %{_libdir}/libbaccats-7*.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
%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*
%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*
%doc LICENSE
%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 qt}