]> git.pld-linux.org Git - packages/bacula.git/blobdiff - bacula.spec
- openssl1.path is back, now to actually enable the openssl1-compatibility-workaround...
[packages/bacula.git] / bacula.spec
index 6761675e741dd11df3fec4abe56862936981f9b2..338ee501b4bbaaf7becd495998c7ae5a471742c8 100644 (file)
@@ -1,58 +1,39 @@
 # 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 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_without mysql                   # use MySQL
+%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                 # use SQLite3 instead of SQLite 2
 %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_sqlite3
-%endif
-%if %{with sqlite3}
-%define                database        sqlite3
-%undefine       with_dbi
-%undefine       with_mysql
-%undefine       with_pgsql
-%endif
-%if %{with pgsql}
-%define                database        postgresql
-%undefine       with_dbi
-%undefine       with_mysql
-%undefine       with_sqlite3
-%endif
-%if %{with mysql}
-%define                database        mysql
-%undefine       with_dbi
-%undefine       with_pgsql
-%undefine       with_sqlite3
-%endif
-%if !%{with sqlite3}
+
+%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
+Version:       5.0.2
 Release:       0.1
-Epoch:         0
 License:       extended GPL v2
 Group:         Networking/Utilities
 Source0:       http://downloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
-# Source0-md5: beb9f8da196b3c9ffb0356f087dbdb99
+# Source0-md5: e9204d2e772f12662de28da3327853de
 Source1:       http://downloads.sourceforge.net/bacula/%{name}-docs-%{version}.tar.bz2
-# Source1-md5: ce2ef0dca50ab916fd6701b53b7bb4df
+# Source1-md5: 7a6afbf592dde4fae0240d82ed3cb10d
 Source2:       http://downloads.sourceforge.net/bacula/%{name}-rescue-5.0.0.tar.gz
 # Source2-md5: 349623581cfe0bcd798dd137abac959a
 Source10:      %{name}-dir.init
@@ -70,9 +51,16 @@ 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: libcap-devel
 %{?with_dbi:BuildRequires:     libdbi-devel >= 0.8.4}
+BuildRequires: libtool
 %if %{with rescue}
 BuildRequires: fakeroot
 %endif
@@ -82,7 +70,7 @@ BuildRequires:        ncurses-devel
 BuildRequires: openssl-devel
 BuildRequires: pkgconfig
 %if %{with python}
-BuildRequires: python-static
+BuildRequires: python-devel
 %endif
 %if %{with bat}
 BuildRequires: QtCore-devel
@@ -105,6 +93,10 @@ BuildRoot:  %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %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}
 
 # dependency section is broken. ccache usage is instead to makefiles
 %undefine      with_ccache
@@ -178,7 +170,8 @@ Summary:    Bacula Director and Catalog services
 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}
 Obsoletes:     bacula-updatedb
 
 %description dir
@@ -213,7 +206,7 @@ Summary:    Bacula Console
 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
@@ -235,7 +228,7 @@ Summary:    Bacula wxWidgets Console
 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
@@ -257,7 +250,7 @@ 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}
+Requires:      %{name}-common = %{version}-%{release}
 
 %description console-qt4
 Bacula - It comes by night and sucks the vital essence from your
@@ -277,7 +270,7 @@ interfejs graficzny oparty na Qt4.
 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
@@ -294,7 +287,7 @@ Summary:    Bacula File services (Client)
 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
@@ -329,7 +322,7 @@ Summary:    Bacula Storage services
 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
@@ -354,11 +347,71 @@ przechowywania danych, np. plików). Usługi Storage działają jako demon
 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 = %{version}-%{release}
+Provides:      bacula(db) = %{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 = %{version}-%{release}
+Provides:      bacula(db) = %{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 = %{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 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 = %{version}-%{release}
+Provides:      bacula(db) = %{version}-%{release}
+Obsoletes:     bacula(db)
+
+%description db-dbi
+libdbi database driver for Bacula.
+
+%description db-dbi -l pl.UTF-8
+Sterownik baz libdbi dla Baculi.
+
 %package rescue
 Summary:       Bacula - The Network Backup Solution
 Summary(pl.UTF-8):     Bacula - rozwiązanie do wykonywania kopii zapasowych po sieci
 Group:         Networking/Utilities
-Requires:      %{name}-fd = %{epoch}:%{version}-%{release}
+Requires:      %{name}-fd = %{version}-%{release}
 Requires:      coreutils
 Requires:      util-linux
 
@@ -377,12 +430,6 @@ recover lost or damaged files.
 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.
 
@@ -398,21 +445,26 @@ plikó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 .
+%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
-%patch2 -p1
+#%patch2 -p1 CHECKME
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
 #%patch6 -p1
-%{?with_dbi:%patch7 -p1}
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
 
 tar -xf %{SOURCE2} && ln -s bacula-rescue-* rescue
 
@@ -422,7 +474,7 @@ sed -i -e 's#bindir=.*#bindir=%{_bindir}#g' \
 sed -i -e 's/@hostname@/--hostname--/' src/*/*.conf.in
 
 %if %{with dbi}
-for dbtype in bdb mysql postgresql sqlite3; do
+for dbtype in mysql postgresql sqlite3; do
        sed -i -e "s,@DB_TYPE@,$dbtype,g" src/cats/*_${dbtype}_*
 done
 %endif
@@ -436,43 +488,60 @@ cd ..
 %{__autoconf} --prepend-include=$(pwd)/autoconf autoconf/configure.in > configure
 
 CPPFLAGS="-I/usr/include/ncurses -I%{_includedir}/readline"
-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
+
+# we wan't the 'base' build built with the last database in the list,
+# to make sure it is full-featured
+for database in %{databases}; do
+       WXCONFIG=%{_bindir}/wx-gtk2-unicode-config \
+       %configure \
+               --with-scriptdir=%{_libexecdir}/%{name} \
+               %{?with_bat:--enable-bat} \
+               --disable-conio \
+               --enable-smartalloc \
+               %{?with_console_wx:--enable-bwx-console} \
+               --enable-tray-monitor \
+               %{?with_python:--with-python} \
+               --with-readline \
+               --with-tcp-wrappers \
+               --with-working-dir=%{_var}/lib/%{name} \
+               --with-dump-email="root@localhost" \
+               --with-job-email="root@localhost" \
+               --with-smtp-host=localhost \
+               --with-pid-dir=/var/run \
+               --with-subsys-dir=/var/lock/subsys \
+               --enable-batch-insert \
+               --with-$database \
+               %{?with_sqlite3_sync_off:--enable-extra-sqlite3-init="pragma synchronous=0;"} \
+               --with-dir-password="#FAKE-dir-password#" \
+               --with-fd-password="#FAKE-fd-password#" \
+               --with-sd-password="#FAKE-sd-password#" \
+               --with-mon-dir-password="#FAKE-mon-dir-password#" \
+               --with-mon-fd-password="#FAKE-mon-fd-password#" \
+               --with-mon-sd-password="#FAKE-mon-sd-password#" \
+               --with-openssl
+
+       # build the database library
+       %{__make} -C src/cats clean
+       %{__make} -C src/cats
+
+       # install the database library in a temporary location
+       install -d libbacsql/$database%{_libdir}
+       %{__make} -C src/cats libtool-install DESTDIR=$PWD/libbacsql/$database
+done
 
 %if %{with bat}
 cd src/qt-console
-%{__libtoolize}
 qmake-qt4 bat.pro
 cd ../..
 %endif
 
 %{__make}
 
+%if %{with nagios}
+# nagios plugin
+%{__make} -C examples/nagios/check_bacula
+%endif
+
 %if %{with rescue}
 cd rescue
 %configure \
@@ -491,19 +560,32 @@ install -d $RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir},%{_mandir},%{_bindir},/
 %{__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
+# 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=${libfile##*/}
+               file_prefix=${orig_name%%-*.so}
+               file_suffix=${orig_name#*-}
+               file_name=$file_prefix-$database-$file_suffix
+               install -p $libfile $RPM_BUILD_ROOT/%{_libdir}/$file_name
+               touch $RPM_BUILD_ROOT/%{_libdir}/$orig_name
+       done
+done
+
+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
 
 %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
+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
@@ -512,36 +594,73 @@ sed -e 's/gnome-console/wx-console/g;s/Console/Wx Console/g' \
 %endif
 
 %if %{with bat}
-install src/qt-console/.libs/bat $RPM_BUILD_ROOT%{_sbindir}
-install scripts/bat.desktop $RPM_BUILD_ROOT%{_desktopdir}
+# 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}
+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}
 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%{_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}
-%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
+
+%if %{with nagios}
+%{__make} -C examples/nagios/check_bacula install \
+       sbindir=%{nagiosplugindir} \
+       DESTDIR=$RPM_BUILD_ROOT
+%endif
+
 %clean
 rm -rf $RPM_BUILD_ROOT
 
@@ -549,22 +668,26 @@ 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 \
+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
+
 %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
@@ -573,54 +696,16 @@ if [ "$1" = "0" ]; then
        %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 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 < 5.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.
+EOF
 
+%post dir
+%update_configs
 /sbin/chkconfig --add bacula-dir
 %service bacula-dir restart "Bacula Director daemon"
 
@@ -631,14 +716,7 @@ if [ "$1" = "0" ]; then
 fi
 
 %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 || :
-
+%update_configs
 /sbin/chkconfig --add bacula-fd
 %service bacula-fd restart "Bacula File daemon"
 
@@ -649,14 +727,7 @@ if [ "$1" = "0" ]; then
 fi
 
 %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 || :
-
+%update_configs
 /sbin/chkconfig --add bacula-sd
 %service bacula-sd restart "Bacula Storage daemon"
 
@@ -672,40 +743,19 @@ 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 || :
+%update_configs
 
 %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 || :
+%update_configs
+
+%triggerpostun common -- %{name}-common < 5.0.1-2
+find /etc/bacula/bat.conf* -perm /007 -print0 | xargs -0 -r chmod 600 || :
 
 %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
 
 %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
 
 %post rescue
 # link our current installed conf file to the rescue directory
@@ -728,29 +778,69 @@ if [ "$1" = "0" ]; then
        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 [ -L "$f" -a ! -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
+%service bacula-dir restart "Bacula Director daemon"
+
+%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.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-%{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
@@ -767,52 +857,92 @@ fi
 %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 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 mysql} || %{with dbi}
+#%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_*
-%endif
-%if %{with pgsql} || %{with dbi}
+%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_*
+%attr(755,root,root) %{_libexecdir}/%{name}/update_sqlite_*
+%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_*
-%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
-%endif
-%attr(755,root,root) %{_libexecdir}/%{name}/make_catalog_backup
-%attr(755,root,root) %{_libexecdir}/%{name}/delete_catalog_backup
+%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)
@@ -821,6 +951,7 @@ fi
 %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
@@ -859,7 +990,7 @@ fi
 %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(640,root,bacula) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/bwx-console.conf
 %attr(755,root,root) %{_sbindir}/bwx-console
 %{_mandir}/man1/bacula-bwxconsole.1*
 %endif
@@ -870,17 +1001,21 @@ fi
 %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
 %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
 %{_mandir}/man1/bacula-tray-monitor.1*
 %endif
@@ -901,3 +1036,9 @@ fi
 %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
This page took 0.074091 seconds and 4 git commands to generate.