# - fix log file permissions
#
# Conditional build:
-%bcond_without console_wx # wx-console program
-%bcond_without gnome # gnome-console program
+%bcond_without console_wx # wx-console program
+%bcond_without bat # bat Qt4 GUI
+%bcond_without dbi # use Database Independent Abstraction Layer (libdbi)
+%bcond_without mysql # use MySQL
+%bcond_without pgsql # use PostgreSQL
%bcond_with python
%bcond_with rescue
-%bcond_with sqlite3 # use sqlite3 insted sqlite
-%bcond_with sqlite3_sync_off # makes sqlite3 backend much faster, but less reliable
+%bcond_without sqlite3 # use SQLite3
+%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: 2.0.2
-Release: 0.1
+Version: 5.0.1
+Release: 0.5
Epoch: 0
License: extended GPL v2
Group: Networking/Utilities
Source0: http://dl.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: 299883ddd460336cfb613fd6d9bff989
-Source1: http://dl.sourceforge.net/bacula/%{name}-docs-%{version}.tar.gz
-# Source1-md5: a114daae0e276ee274ccd558e42e13f0
-Source2: http://dl.sourceforge.net/bacula/%{name}-rescue-2.0.0.tar.gz
-# Source2-md5: 4a21381f16355193771a34fc2eb4e806
+# 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
Source10: %{name}-dir.init
Source11: %{name}-fd.init
Source12: %{name}-sd.init
Source14: %{name}-dir.sysconfig
Source15: %{name}-fd.sysconfig
Source16: %{name}-sd.sysconfig
-Patch0: %{name}-dvd-handler_path.patch
+Patch0: %{name}-mtx-changer.patch
Patch1: %{name}-link.patch
-Patch2: %{name}-compile.patch
-Patch3: %{name}-wx28.patch
-Patch4: %{name}-sqlite3_init_query.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}-config_no_clean.patch
URL: http://www.bacula.org/
-BuildRequires: acl-static
+BuildRequires: acl-devel
+BuildRequires: autoconf
BuildRequires: automake
+BuildRequires: gettext-devel
+BuildRequires: libcap-devel
+%{?with_dbi:BuildRequires: libdbi-devel >= 0.8.4}
+BuildRequires: libtool
%if %{with rescue}
BuildRequires: fakeroot
%endif
-BuildRequires: glibc-static
-%if %{with gnome}
-BuildRequires: libgnome-devel >= 2.0
-BuildRequires: libgnomeui-devel >= 2.0
-%endif
-BuildRequires: libstdc++-static
-BuildRequires: libwrap-static
+BuildRequires: libwrap-devel
BuildRequires: mtx
BuildRequires: ncurses-devel
BuildRequires: openssl-devel
-BuildRequires: openssl-static
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
+%endif
+%{?with_mysql:BuildRequires: mysql-devel}
+%{?with_pgsql:BuildRequires: postgresql-devel}
BuildRequires: readline-devel
BuildRequires: rpmbuild(macros) >= 1.268
BuildRequires: sed >= 4.0
-%if %{with sqlite3}
-BuildRequires: sqlite3-devel
-%else
-BuildRequires: sqlite-devel
-%endif
+%{?with_sqlite3:BuildRequires: sqlite3-devel}
%if %{with console_wx}
BuildRequires: wxGTK2-unicode-devel >= 2.4.0
%endif
BuildRequires: zlib-devel
-BuildRequires: zlib-static
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sysconfdir /etc/%{name}
%define _localstatedir /var/lib/%{name}
+%define databases %{?with_pgsql:postgresql} %{?with_mysql:mysql} %{?with_sqlite3:sqlite3} %{?with_dbi:dbi}
+
# dependency section is broken. ccache usage is instead to makefiles
%undefine with_ccache
Group: Networking/Utilities
Requires(post): sed >= 4.0
Requires: %{name}-common = %{epoch}:%{version}-%{release}
+Requires: bacula(db) = %{epoch}:%{version}-%{release}
Obsoletes: bacula-updatedb
%description dir
maintaining the file indexes and volume databases for all files backed
up. The Catalog services permit the System Administrator or user to
quickly locate and restore any desired file, since it maintains a
-record of all Volumes used, all Jobs run, and all Files saved. This
-build requires sqlite%{?with_sqlite3:3} to be installed separately as the catalog
-database.
+record of all Volumes used, all Jobs run, and all Files saved.
%description dir -l pl.UTF-8
Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
katalogowe umożliwiają administratorowi lub użytkownikowi szybko
zlokalizować i odtworzyć dowolny plik, ponieważ utrzymują rekord ze
wszystkimi używanymi wolumenami, uruchomionymi zadaniami i zapisanymi
-plikami. Pakiet wymaga sqlite%{?with_sqlite3:3} zainstalowanego oddzielnie jako bazy
-danych dla katalogu.
+plikami.
%package console
Summary: Bacula Console
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
+%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-gnome
+%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 GNOME GUI interface.
+communicate with the Bacula Director. This is the Qt4 GUI interface.
-%description console-gnome -l pl.UTF-8
+%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 GNOME.
+interfejs graficzny oparty na Qt4.
%package tray-monitor
Summary: Bacula Tray Monitor
na maszynie, która zawiera urządzenie backupowe (zwykle napęd
taśmowy).
+%package db-postgresql
+Summary: PostgreSQL database driver for Bacula
+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}
+Obsoletes: bacula(db)
+
+%description db-postgresql
+PostgreSQL database driver for Bacula.
+
+%description db-postgresql -l pl.UTF-8
+Sterownik bazy PostgreSQL dla Baculi.
+
+%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 = %{epoch}:%{version}-%{release}
+Provides: bacula(db) = %{epoch}:%{version}-%{release}
+Obsoletes: bacula(db)
+
+%description db-mysql
+MySQL database driver for Bacula.
+
+%description db-mysql -l pl.UTF-8
+Sterownik bazy MySQL dla Baculi.
+
+%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 = %{epoch}:%{version}-%{release}
+Provides: bacula(db) = %{epoch}:%{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 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
This package installs scripts for disaster recovery and builds rescue
floppy disk for bare metal recovery.
-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 rescue -l pl.UTF-8
Bacula - przychodzi nocą i wysysa żywotny ekstrakt z komputerów.
Ten pakiet zawiera skrypty do odtwarzania po awarii i tworzy dyskietkę
ratunkowe do odtwarzania systemu od zera.
-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 .
-
%prep
%setup -q -a 1
%patch0 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
+%patch5 -p1
+#%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
tar -xf %{SOURCE2} && ln -s bacula-rescue-* rescue
-sed -i -e 's#wx-config#wx-gtk2-unicode-config#g' configure*
-sed -i -e 's#-lreadline -lhistory -ltermcap#-lreadline -lhistory#g' configure*
+
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 mysql postgresql sqlite3; do
+ sed -i -e "s,@DB_TYPE@,$dbtype,g" src/cats/*_${dbtype}_*
+done
+%endif
+
%build
-cp -f %{_datadir}/automake/config.sub autoconf
+cd autoconf
+%{__aclocal} -I bacula-macros -I gettext-macros
+# $BUILD_DIR not seen by libtoolize, export it
+BUILD_DIR=.. %{__libtoolize}
+cd ..
+%{__autoconf} --prepend-include=$(pwd)/autoconf autoconf/configure.in > configure
+
CPPFLAGS="-I/usr/include/ncurses -I%{_includedir}/readline"
-%configure \
- --with-scriptdir=%{_libexecdir}/%{name} \
- --%{!?with_gnome:dis}%{?with_gnome:en}able-gnome \
- --disable-conio \
- --enable-smartalloc \
- %{?with_console_wx:--enable-wx-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-sqlite%{?with_sqlite3:3} \
- %{?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#" \
- --enable-static-fd \
- --with-openssl
-%{__make}
+
+# we wan't the 'base' build built with the first database in the list,
+# to make sure it is full-featured
+base_built="no"
+
+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
+
+ if [ "$base_built" = "no" ] ; then
+ %if %{with bat}
+ cd src/qt-console
+ qmake-qt4 bat.pro
+ cd ../..
+ %endif
+
+ %{__make}
+
+ base_built="yes"
+ else
+ %{__make} -C src/cats clean
+ %{__make} -C src/cats
+ fi
+
+ # install the database library in a temporary location
+ install -d libbacsql/$database%{_libdir}
+ %{__make} -C src/cats libtool-install DESTDIR=$PWD/libbacsql/$database
+done
%if %{with rescue}
cd rescue
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}}
+install -d $RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir},%{_mandir},%{_bindir},/var/log/bacula}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-# static daemon
-strip -R.comment -R.note src/filed/static-bacula-fd
-install src/filed/static-bacula-fd $RPM_BUILD_ROOT%{_sysconfdir}/rescue/bacula-fd
+# 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 libfile in libbacsql/$database%{_libdir}/lib*-*.so ; do
+ orig_name=`basename $libfile`
+ file_prefix="${orig_name%%-*.so}"
+ file_suffix="${orig_name#*-}"
+ file_name="$file_prefix-$database-$file_suffix"
+ install "$libfile" "$RPM_BUILD_ROOT/%{_libdir}/$file_name"
+ ln -sf "$file_name" "$RPM_BUILD_ROOT/%{_libdir}/$orig_name"
+ done
+done
install %{SOURCE10} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-dir
install %{SOURCE11} $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-fd
%if %{with console_wx}
# tray-monitor is for regular users
-mv $RPM_BUILD_ROOT%{_sbindir}/bacula-tray-monitor $RPM_BUILD_ROOT%{_bindir}
+#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
+#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
-sed -e 's#%{_sbindir}#%{_bindir}#' \
- scripts/bacula-tray-monitor.desktop > $RPM_BUILD_ROOT%{_desktopdir}/bacula-tray-monitor.desktop
+#sed -e 's#%{_sbindir}#%{_bindir}#' \
+# scripts/bacula-tray-monitor.desktop > $RPM_BUILD_ROOT%{_desktopdir}/bacula-tray-monitor.desktop
+%endif
+
+%if %{with bat}
+install src/qt-console/.libs/bat $RPM_BUILD_ROOT%{_sbindir}
+install scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
%endif
%if %{with rescue}
install rescue/linux/floppy/sfdisk.bz2 $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}
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
+
# some file changes
rm -f $RPM_BUILD_ROOT%{_libexecdir}/%{name}/{gconsole,startmysql,stopmysql,bacula,bconsole,fd}
-rm -f $RPM_BUILD_ROOT%{_sbindir}/static-bacula-fd
-%if !%{with console_wx}
+%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%{_docdir}/bacula/LICENSE
+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
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/bacula-ctl-*
+
+# unsupported
+rm $RPM_BUILD_ROOT%{_libexecdir}/%{name}/*_bdb_*
+
+# 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,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
+
+
%clean
rm -rf $RPM_BUILD_ROOT
%useradd -P %{name}-common -u 136 -r -d /var/lib/bacula -s /bin/false -c "Bacula User" -g bacula bacula
%post common
+/sbin/ldconfig
echo "Updating bacula passwords and names..."
cd /etc/bacula
for f in *-password ; do
done
%postun common
+/sbin/ldconfig
if [ "$1" = "0" ]; then
%userremove bacula
%groupremove bacula
%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 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
-elif [ "$DB_VER" -lt "9" ]; then
+else
echo "Backing up bacula tables"
echo ".dump" | sqlite%{?with_sqlite3:3} %{_localstatedir}/bacula.db | bzip2 > %{_localstatedir}/bacula_backup.sql.bz2
- echo "Upgrading bacula tables"
- %if %{with sqlite3}
- type=sqlite3
- if [ "$DB_VER" -lt "9" ]; then
- %{_libexecdir}/%{name}/update_${type}_tables_8_to_9
- fi
- %else
- type=sqlite
- if [ "$DB_VER" -lt "9" ]; then
- if [ "$DB_VER" -lt "8" ]; then
- if [ "$DB_VER" -lt "7" ]; then
- if [ "$DB_VER" -lt "6" ]; then
- if [ "$DB_VER" -lt "5" ]; then
- %{_libexecdir}/%{name}/update_${type}_tables_4_to_5
- fi
- %{_libexecdir}/%{name}/update_${type}_tables_5_to_6
- fi
- %{_libexecdir}/%{name}/update_${type}_tables_6_to_7
- fi
- %{_libexecdir}/%{name}/update_${type}_tables_7_to_8
- fi
- %{_libexecdir}/%{name}/update_${type}_tables_8_to_9
+
+ 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
- %endif
+ 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
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
%post fd
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
%post sd
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
%post console
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
%post console-wx
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+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
+%post console-qt4
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
%post tray-monitor
echo "Updating Bacula passwords and names..."
cd /etc/bacula
-for f in *-password ; do
+for f in *-password; do
p=`cat $f`
sed -i -e"s:#FAKE-$f#:$p:" *.conf *.conf.rpmnew 2>/dev/null || :
done
rm -rf %{_sysconfdir}/rescue/diskinfo/*
fi
+%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 \
+%service bacula-dir restart "Bacula Director daemon"
+
+%define db_postun() \
+/sbin/ldconfig \
+if [ "$1" = "0" ]; then \
+ for f in %{_libexecdir}/%{name}/*_bacula_* ; do \
+ if [ ! -e "$f" ] ; then \
+ rm "$f" \
+ fi \
+ done \
+fi
+
+%post db-postgresql
+%db_post postgresql
+
+%postun db-postgresql
+%db_postun postgresql
+
+%post db-mysql
+%db_post mysql
+
+%postun db-mysql
+%db_postun mysql
+
+%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
+
+%postun db-dbi -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-%{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
%{_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
%files dir
%defattr(644,root,root,755)
%doc ChangeLog CheckList ReleaseNotes kernstodo LICENSE
-%doc examples %{name}-docs-%{version}/manual/{*.pdf,bacula}
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bacula-dir.conf
+#%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
%attr(755,root,root) %{_sbindir}/bacula-dir
%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*
%{_libexecdir}/%{name}/query.sql
-%if %{with sqlite3}
+#%attr(755,root,root) %{_libexecdir}/%{name}/make_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}/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) %{_libdir}/libbacsql-postgresql-%{version}.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.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-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) %{_libdir}/libbacsql-mysql-%{version}.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.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-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_*
-%else
-%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_*
-%endif
-%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
-%attr(755,root,root) %{_libexecdir}/%{name}/make_catalog_backup
-%attr(755,root,root) %{_libexecdir}/%{name}/delete_catalog_backup
+%attr(755,root,root) %{_libdir}/libbacsql-sqlite3-%{version}.so
+
+%ghost %attr(755,root,root) %{_libdir}/libbacsql-%{version}.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
+
%files fd
%defattr(644,root,root,755)
%attr(754,root,root) /etc/rc.d/init.d/bacula-fd
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bacula-fd
%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
-%dir %{_sysconfdir}
%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(754,root,root) /etc/rc.d/init.d/bacula-sd
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/bacula-sd
%attr(755,root,root) %{_sbindir}/bacula-sd
%doc LICENSE
%{_pixmapsdir}/%{name}.png
%{_desktopdir}/bacula-wx.desktop
-%attr(600,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/wx-console.conf
-%attr(755,root,root) %{_sbindir}/wx-console
-%{_mandir}/man1/bacula-wxconsole.1*
+%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
+%if %{with bat}
+%files console-qt4
%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}/gnome-console.conf
-%attr(755,root,root) %{_sbindir}/gnome-console
-%{_mandir}/man1/bacula-console-gnome.1*
+%{_desktopdir}/bat.desktop
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bat.conf
+%attr(755,root,root) %{_sbindir}/bat
+%{_mandir}/man1/bat.1*
+%{_docdir}/%{name}
%endif
%if %{with console_wx}
%files tray-monitor
%defattr(644,root,root,755)
%doc LICENSE
-%{_pixmapsdir}/%{name}-tray-monitor.xpm
-%{_desktopdir}/%{name}-tray-monitor.desktop
+%attr(755,root,root) %{_sbindir}/bacula-tray-monitor
+#%{_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