]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/platforms/redhat/bacula.spec.in
This commit was manufactured by cvs2svn to create tag
[bacula/bacula] / bacula / platforms / redhat / bacula.spec.in
index a98955c6930067518c0665a3feb40a517cf26371..932c19eb2bd3db35e4d0eac4896a0b730e82b379 100644 (file)
@@ -1,5 +1,5 @@
 # Bacula RPM spec file
-# Copyright (C) 2000-2005 Kern Sibbald
+# Copyright (C) 2000-2006 Kern Sibbald
 
 # Platform Build Configuration
 
@@ -8,11 +8,17 @@
 %define depkgs_version 22Jun05
 %define sqlite_bindir /usr/lib/bacula/sqlite
 %define working_dir /var/bacula
-%define daemon_user root
+%define director_daemon_user bacula
+%define storage_daemon_user bacula
+%define file_daemon_user root
 %define daemon_group bacula
+# group that has write access to tape devices, usually disk on Linux
+%define storage_daemon_group disk
+%define user_file /etc/passwd
 %define group_file /etc/group
+%define useradd /usr/sbin/useradd
 %define groupadd /usr/sbin/groupadd
-%define _rescuever 1.8.1
+%define _rescuever 1.8.2
 
 # platform defines - set one below or define the build_xxx on the command line
 # RedHat builds
 %{?build_rhel3:%define wb3 1}
 %define rhel4 0
 %{?build_rhel4:%define rhel4 1}
-%{?build_rhel4:%define fc4 1}
+%{?build_rhel4:%define fc3 1}
 # CentOS build
+%define centos3 0
+%{?build_centos3:%define centos3 1}
+%{?build_centos3:%define wb3 1}
 %define centos4 0
 %{?build_centos4:%define centos4 1}
-%{?build_centos4:%define fc4 1}
+%{?build_centos4:%define fc3 1}
 # SuSE build
 %define su9 0
 %{?build_su9:%define su9 1}
+%define su10 0
+%{?build_su10:%define su10 1}
 # Mandrake build
 %define mdk 0
 %{?build_mdk:%define mdk 1}
 
 # test for a platform definition
-%if ! %{rh7} && ! %{rh8} && ! %{rh9} && ! %{fc1} && ! %{fc3} && ! %{fc4} && ! %{wb3} && ! %{su9} && ! %{mdk}
+%if ! %{rh7} && ! %{rh8} && ! %{rh9} && ! %{fc1} && ! %{fc3} && ! %{fc4} && ! %{wb3} && ! %{su9} && ! %{su10} && ! %{mdk}
 %{error: You must specify a platform. Please examine the spec file.}
 exit 1
 %endif
@@ -71,11 +82,21 @@ exit 1
 %{?build_postgresql:%define postgresql 1}
 
 # test for a database definition
-%if ! %{mysql} && ! %{sqlite} && ! %{postgresql} && ! %{mysql4}
+%if ! %{mysql} && ! %{sqlite} && ! %{postgresql}
 %{error: You must specify database support. Please examine the spec file.}
 exit 1
 %endif
 
+%if %{mysql}
+%define db_backend mysql
+%endif
+%if %{sqlite}
+%define db_backend sqlite
+%endif
+%if %{postgresql}
+%define db_backend postgresql
+%endif
+
 # 64 bit support
 %define x86_64 0
 %{?build_x86_64:%define x86_64 1}
@@ -84,29 +105,36 @@ exit 1
 %if %{rh7} || %{rh8} || %{rh9} || %{rhel3} || %{rhel4}
 %define _dist %(grep Red /etc/redhat-release)
 %endif
-%if %{fc1}
+%if %{fc1} || %{fc4}
 %define _dist %(grep Fedora /etc/redhat-release)
 %endif
-%if %{centos4}
+%if %{centos4} || %{centos3}
 %define _dist %(grep CentOS /etc/redhat-release)
 %endif
-%if %{fc3} || %{fc4} && ! %{rhel4} && ! %{centos4}
+%if %{fc3} && ! %{rhel4} && ! %{centos4}
 %define _dist %(grep Fedora /etc/redhat-release)
 %endif
-%if %{wb3} && ! %{rhel3}
+%if %{wb3} && ! %{rhel3} && ! %{centos3}
 %define _dist %(grep White /etc/whitebox-release)
 %endif
-%if %{su9}
+%if %{su9} || %{su10}
 %define _dist %(grep -i SuSE /etc/SuSE-release)
 %endif
 %if %{mdk}
 %define _dist %(grep Mandrake /etc/mandrake-release)
 %endif
 
+# Should we build gconsole, possible only if gnome >= 2.0 available
+%if %{rh7}
+%define gconsole 0
+%else
+%define gconsole 1
+%endif
+
 Summary: Bacula - The Network Backup Solution
 Name: bacula
 Version: @VERSION@
-Release: 2
+Release: 1
 Group: System Environment/Daemons
 License: GPL v2
 Source0:http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
@@ -125,15 +153,11 @@ Packager: D. Scott Barninger <barninger@fairfieldcomputers.com>
 
 BuildRequires: atk-devel, ncurses-devel, pango-devel, perl
 BuildRequires: libstdc++-devel, libxml2-devel, zlib-devel, pkgconfig
+BuildRequires: openssl-devel
 %if %{rh7}
 BuildRequires: libtermcap-devel
-BuildRequires: gtk+-devel >= 1.2
-BuildRequires: gnome-libs-devel >= 1.4
 BuildRequires: glibc-devel >= 2.2
 BuildRequires: ORBit-devel
-BuildRequires: bonobo-devel
-BuildRequires: GConf-devel
-BuildRequires: freetype-devel
 %endif
 %if %{su9}
 BuildRequires: termcap
@@ -150,6 +174,24 @@ BuildRequires: gconf2-devel
 BuildRequires: linc-devel
 BuildRequires: freetype2-devel
 %endif
+%if %{su10}
+BuildRequires: termcap
+BuildRequires: libgnome >= 2.12
+BuildRequires: gtk2-devel >= 2.8
+BuildRequires: libgnomeui-devel >= 2.12
+BuildRequires: glibc-devel >= 2.3
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.3
+BuildRequires: libbonobo-devel >= 2.10
+BuildRequires: libbonoboui-devel >= 2.10
+BuildRequires: bonobo-activation-devel
+BuildRequires: gconf2-devel
+BuildRequires: freetype2-devel
+BuildRequires: cairo-devel
+BuildRequires: fontconfig-devel >= 2.3
+BuildRequires: gnome-vfs2-devel >= 2.12
+BuildRequires: libpng-devel
+%endif
 %if %{mdk}
 BuildRequires: libtermcap-devel
 BuildRequires: gtk2-devel >= 2.0
@@ -165,7 +207,7 @@ BuildRequires: libstdc++-static-devel
 BuildRequires: glibc-static-devel
 BuildRequires: freetype2-devel
 %endif
-%if %{fc3} || %{fc4}
+%if %{fc3}
 BuildRequires: libtermcap-devel
 BuildRequires: gtk2-devel >= 2.4
 BuildRequires: libgnomeui-devel >= 2.8
@@ -178,7 +220,20 @@ BuildRequires: bonobo-activation-devel
 BuildRequires: GConf2-devel
 BuildRequires: freetype-devel
 %endif
-%if ! %{rh7} && ! %{su9} && ! %{mdk} && ! %{fc3} && !%{fc4}
+%if %{fc4}
+BuildRequires: libtermcap-devel
+BuildRequires: gtk2-devel >= 2.6
+BuildRequires: libgnomeui-devel >= 2.10
+BuildRequires: glibc-devel >= 2.3
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.3
+BuildRequires: libbonobo-devel >= 2.8
+BuildRequires: libbonoboui-devel >= 2.8
+BuildRequires: bonobo-activation-devel
+BuildRequires: GConf2-devel
+BuildRequires: freetype-devel
+%endif
+%if ! %{rh7} && ! %{su9} && ! %{su10} && ! %{mdk} && ! %{fc3} && ! %{fc4}
 BuildRequires: libtermcap-devel
 BuildRequires: gtk2-devel >= 2.0
 BuildRequires: libgnomeui-devel >= 2.0
@@ -235,17 +290,17 @@ Group: System Environment/Daemons
 Provides: bacula-dir, bacula-sd, bacula-fd, bacula-server
 Conflicts: bacula-client
 Obsoletes: bacula-rescue
-Requires: ncurses, libstdc++, zlib
+Requires: ncurses, libstdc++, zlib, openssl, mtx
 
 %if %{rh7}
 Requires: glibc >= 2.2
 Requires: libtermcap
 %endif
-%if %{su9}
+%if %{su9} || %{su10}
 Requires: glibc >= 2.3
 Requires: termcap
 %endif
-%if ! %{rh7} && ! %{su9}
+%if ! %{rh7} && ! %{su9} && ! %{su10}
 Requires: glibc >= 2.3
 Requires: libtermcap
 %endif
@@ -254,7 +309,7 @@ Requires: libtermcap
 Requires: mysql >= 3.23
 Requires: mysql-server >= 3.23
 %endif
-%if %{mysql} && ! %{su9} && ! %{mdk} && %{mysql4}
+%if %{mysql} && ! %{su9} && ! %{su10} && ! %{mdk} && %{mysql4}
 Requires: mysql >= 4.0
 Requires: mysql-server >= 4.0
 %endif
@@ -267,6 +322,10 @@ Requires: mysql-client >= 3.23
 Requires: mysql >= 4.0
 Requires: mysql-client >= 4.0
 %endif
+%if %{mysql} && %{su10} && %{mysql4}
+Requires: mysql >= 4.0
+Requires: mysql-client >= 4.0
+%endif
 
 %if %{mysql} && %{mdk} && ! %{mysql4}
 Requires: mysql >= 3.23
@@ -316,22 +375,34 @@ This build requires PostgreSQL to be installed separately as the catalog databas
 This build incorporates sqlite as the catalog database, statically compiled.
 %endif
 
+%package mtx
+Summary: Bacula - The Network Backup Solution
+Group: System Environment/Daemons
+Provides: mtx
+
+%description mtx
+This is Bacula's version of mtx tape utilities for Linux distributions that
+do not provide their own mtx package
+
 %package client
 Summary: Bacula - The Network Backup Solution
 Group: System Environment/Daemons
 Provides: bacula-fd
+Conflicts: bacula-mysql
+Conflicts: bacula-sqlite
+Conflicts: bacula-postgresql
 Obsoletes: bacula-rescue
-Requires: libstdc++, zlib
+Requires: libstdc++, zlib, openssl
 
 %if %{rh7}
 Requires: glibc >= 2.2
 Requires: libtermcap
 %endif
-%if %{su9}
+%if %{su9} || %{su10}
 Requires: glibc >= 2.3
 Requires: termcap
 %endif
-%if ! %{rh7} && ! %{su9}
+%if ! %{rh7} && ! %{su9} && ! %{su10}
 Requires: glibc >= 2.3
 Requires: libtermcap
 %endif
@@ -369,21 +440,14 @@ Bacula source code has been released under the GPL version 2 license.
 This package installs scripts for updating older versions of the bacula
 database.
 
+%if %{gconsole}
 %package gconsole
 Summary: Bacula - The Network Backup Solution
 Group: System Environment/Daemons
-Requires: atk, libstdc++, zlib, pango, libxml2, bacula-fd
-
-%if %{rh7}
-Requires: gtk+ >= 1.2
-Requires: gnome-libs >= 1.4
-Requires: glibc >= 2.2
-Requires: ORBit
-Requires: bonobo
-Requires: GConf
-Requires: freetype
+Requires: atk, libstdc++, zlib, pango, libxml2, bacula-fd, openssl
 %endif
-%if %{su9}
+
+%if %{gconsole} && %{su9}
 Requires: gtk2 >= 2.0
 Requires: libgnome >= 2.0
 Requires: libgnomeui >= 2.0
@@ -397,7 +461,24 @@ Requires: gconf2
 Requires: linc
 Requires: freetype2
 %endif
-%if %{mdk}
+%if %{gconsole} && %{su10}
+Requires: gtk2 >= 2.8
+Requires: libgnome >= 2.12
+Requires: libgnomeui >= 2.12
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.3
+Requires: libbonobo >= 2.10
+Requires: libbonoboui >= 2.10
+Requires: bonobo-activation
+Requires: gconf2
+Requires: freetype2
+Requires: cairo
+Requires: fontconfig >= 2.3
+Requires: gnome-vfs2 >= 2.12
+Requires: libpng
+%endif
+%if %{gconsole} && %{mdk}
 Requires: gtk2 >= 2.0
 Requires: libgnomeui2
 Requires: glibc >= 2.3
@@ -408,7 +489,7 @@ Requires: libbonoboui >= 2.0
 Requires: GConf2
 Requires: freetype2
 %endif
-%if %{fc3} || %{fc4}
+%if %{gconsole} && %{fc3}  
 Requires: gtk2 >= 2.4
 Requires: libgnomeui >= 2.8
 Requires: glibc >= 2.3
@@ -420,7 +501,19 @@ Requires: bonobo-activation
 Requires: GConf2
 Requires: freetype
 %endif
-%if ! %{rh7} && ! %{su9} && ! %{mdk} && ! %{fc3} && ! %{fc4}
+%if %{gconsole} && %{fc4}  
+Requires: gtk2 >= 2.6
+Requires: libgnomeui >= 2.10
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.3
+Requires: libbonobo >= 2.8
+Requires: libbonoboui >= 2.8
+Requires: bonobo-activation
+Requires: GConf2
+Requires: freetype
+%endif
+%if %{gconsole} && ! %{su9} && ! %{su10} && ! %{mdk} && ! %{fc3} && ! %{fc4}
 Requires: gtk2 >= 2.0
 Requires: libgnomeui >= 2.0
 Requires: glibc >= 2.3
@@ -433,12 +526,17 @@ Requires: GConf2
 Requires: linc
 Requires: freetype
 %endif
-%if %{su9}
+%if %{gconsole} && %{su9}
 Requires: xsu
-%else
+%endif
+%if %{gconsole} && %{su10}
+Requires: xsu
+%endif
+%if %{gconsole} && ! %{su9} && ! %{su10}
 Requires: usermode
 %endif
 
+%if %{gconsole}
 %description gconsole
 Bacula - It comes by night and sucks the vital essence from your computers.
 
@@ -452,6 +550,7 @@ Bacula source code has been released under the GPL version 2 license.
 
 This is the Gnome Console package. It is an add-on to the client or
 server packages.
+%endif
 
 %prep
 
@@ -463,7 +562,7 @@ server packages.
 
 %build
 
-%if %{su9}
+%if %{su9} || %{su10}
 export LDFLAGS="-L/usr/lib/termcap"
 %endif
 
@@ -494,6 +593,9 @@ patch src/cats/update_sqlite_tables.in src/cats/update_sqlite_tables.in.patch
 %if %{sqlite} && %{su9}
 patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
 %endif
+%if %{sqlite} && %{su10}
+patch platforms/suse/bacula-dir.in platforms/suse/bacula-dir-suse-sqlite.patch
+%endif
 
 # 64 bit lib location hacks
 # this is the location on redhat type platforms, don't know about others yet
@@ -510,8 +612,24 @@ export LDFLAGS=-L/usr/lib64/mysql
         --sysconfdir=/etc/bacula \
         --with-scriptdir=/etc/bacula \
         --enable-smartalloc \
+        --enable-client-only \
+        %if %{mdk}
+        --disable-nls \
+        %endif
+        --enable-static-fd
+
+make
+
+%configure \
+        --prefix=/usr \
+        --sbindir=/usr/sbin \
+        --sysconfdir=/etc/bacula \
+        --with-scriptdir=/etc/bacula \
+        --enable-smartalloc \
+%if %{gconsole}
         --enable-gnome \
-%if ! %{rh7} && ! %{rh8}
+%endif
+%if %{gconsole} && ! %{rh8}
         --enable-tray-monitor \
 %endif
 %if %{mysql}
@@ -526,12 +644,20 @@ export LDFLAGS=-L/usr/lib64/mysql
         --with-working-dir=%{working_dir} \
         --with-pid-dir=/var/run \
         --with-subsys-dir=/var/lock/subsys \
-        --with-dir-user=%{daemon_user} \
+        --with-dir-user=%{director_daemon_user} \
         --with-dir-group=%{daemon_group} \
-        --with-sd-user=%{daemon_user} \
-        --with-sd-group=%{daemon_group} \
-        --with-fd-user=%{daemon_user} \
-        --with-fd-group=%{daemon_group}
+        --with-sd-user=%{storage_daemon_user} \
+        --with-sd-group=%{storage_daemon_group} \
+        --with-fd-user=%{file_daemon_user} \
+        --with-fd-group=%{daemon_group} \
+        --with-dir-password="XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX" \
+        --with-fd-password="XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX" \
+        --with-sd-password="XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX" \
+        --with-mon-dir-password="XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX" \
+        --with-mon-fd-password="XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX" \
+        --with-mon-sd-password="XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX" \
+        --with-openssl
+
 make
 
 %install
@@ -544,13 +670,11 @@ mkdir -p $RPM_BUILD_ROOT/etc/log.d/conf/logfiles
 mkdir -p $RPM_BUILD_ROOT/etc/log.d/conf/services
 mkdir -p $RPM_BUILD_ROOT/etc/log.d/scripts/services
 mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps
-%if %{rh7}
-mkdir -p $RPM_BUILD_ROOT/usr/share/gnome/apps/System
-%else
+%if %{gconsole}
 mkdir -p $RPM_BUILD_ROOT/usr/share/applications
 %endif
 mkdir -p $RPM_BUILD_ROOT/etc/bacula/updatedb
-%if ! %{su9}
+%if %{gconsole} && ! %{su9} && ! %{su10}
 mkdir -p $RPM_BUILD_ROOT/etc/pam.d
 mkdir -p $RPM_BUILD_ROOT/etc/security/console.apps
 mkdir -p $RPM_BUILD_ROOT/usr/bin
@@ -591,8 +715,10 @@ rm -f $RPM_BUILD_ROOT/etc/bacula/startmysql
 rm -f $RPM_BUILD_ROOT/etc/bacula/stopmysql
 %endif
 
+rm -f $RPM_BUILD_ROOT/usr/sbin/static-bacula-fd
+
 # install the init scripts
-%if %{su9}
+%if %{su9} || %{su10}
 cp -p platforms/suse/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
 cp -p platforms/suse/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
 cp -p platforms/suse/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -602,7 +728,7 @@ cp -p platforms/mandrake/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
 cp -p platforms/mandrake/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
 cp -p platforms/mandrake/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
 %endif
-%if ! %{su9} && ! %{mdk}
+%if ! %{su9} && ! %{su10} && ! %{mdk}
 cp -p platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/init.d/bacula-dir
 cp -p platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/init.d/bacula-fd
 cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
@@ -610,27 +736,31 @@ cp -p platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/init.d/bacula-sd
 chmod 0754 $RPM_BUILD_ROOT/etc/init.d/*
 
 # install the menu stuff
-%if %{su9}
+%if %{gconsole} && %{su9}
 cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
 cp -p scripts/bacula.desktop.gnome2.xsu $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
 cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
 cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
 %endif
-%if %{rh7}
+%if %{gconsole} && %{su10}
 cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
-cp -p scripts/bacula.desktop.gnome1.consolehelper $RPM_BUILD_ROOT/usr/share/gnome/apps/System/bacula.desktop
-cp -p scripts/gnome-console.console_apps $RPM_BUILD_ROOT/etc/security/console.apps/gnome-console
-cp -p scripts/gnome-console.pamd $RPM_BUILD_ROOT/etc/pam.d/gnome-console
-ln -sf consolehelper $RPM_BUILD_ROOT/usr/bin/gnome-console
+cp -p scripts/bacula.desktop.gnome2.xsu $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
+cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
+cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
 %endif
 %if %{rh8} || %{rh9} || %{wb3} || %{fc1} || %{fc3} || %{fc4} || %{mdk}
+%define iftrick 1
+%else
+%define iftrick 0
+%endif
+%if %{gconsole} && %{iftrick}
 cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
 cp -p scripts/bacula.desktop.gnome2.consolehelper $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
 cp -p scripts/gnome-console.console_apps $RPM_BUILD_ROOT/etc/security/console.apps/gnome-console
 cp -p scripts/gnome-console.pamd $RPM_BUILD_ROOT/etc/pam.d/gnome-console
 ln -sf consolehelper $RPM_BUILD_ROOT/usr/bin/gnome-console
 %endif
-%if ! %{rh7} && ! %{rh8}
+%if %{gconsole} && ! %{rh8}
 cp -p src/tray-monitor/generic.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/bacula-tray-monitor.xpm
 cp -p scripts/bacula-tray-monitor.desktop $RPM_BUILD_ROOT/usr/share/applications/bacula-tray-monitor.desktop
 %endif
@@ -664,11 +794,14 @@ cp -p %{_rescuesrc}/configure $RPM_BUILD_ROOT/etc/bacula/rescue/
 cp -p %{_rescuesrc}/version.h $RPM_BUILD_ROOT/etc/bacula/rescue/
 cp -pr %{_rescuesrc}/linux $RPM_BUILD_ROOT/etc/bacula/rescue/
 cp -pr %{_rescuesrc}/autoconf $RPM_BUILD_ROOT/etc/bacula/rescue/
+touch $RPM_BUILD_ROOT/etc/bacula/rescue/linux/cdrom/rpm_release
+cp -p src/filed/static-bacula-fd $RPM_BUILD_ROOT/etc/bacula/rescue/linux/cdrom/bacula/bin/bacula-fd
+rm -f src/filed/static-bacula-fd
 
 # now clean up permissions that are left broken by the install
 chmod o-r $RPM_BUILD_ROOT/etc/bacula/query.sql
 chmod o-rwx $RPM_BUILD_ROOT/var/bacula
-%if ! %{rh7} && ! %{rh8}
+%if %{gconsole} && ! %{rh8}
 chmod 755 $RPM_BUILD_ROOT/usr/sbin/bacula-tray-monitor
 chmod 644 $RPM_BUILD_ROOT/etc/bacula/tray-monitor.conf
 %endif
@@ -677,53 +810,81 @@ chmod 644 $RPM_BUILD_ROOT/etc/bacula/tray-monitor.conf
 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
 
 %if %{mysql}
-
+# MySQL specific files
 %files mysql
+%defattr(-, root, root)
+%attr(-, root, %{daemon_group}) /etc/bacula/create_mysql_database
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_mysql_database
+%attr(-, root, %{daemon_group}) /etc/bacula/make_mysql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_mysql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/update_mysql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/grant_mysql_privileges
+%attr(-, root, %{daemon_group}) /etc/bacula/startmysql
+%attr(-, root, %{daemon_group}) /etc/bacula/stopmysql
+%endif
+
+%if %{sqlite}
+%files sqlite
 %defattr(-,root,root)
+%attr(-, root, %{daemon_group}) /etc/bacula/create_sqlite_database
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_sqlite_database
+%attr(-, root, %{daemon_group}) /etc/bacula/grant_sqlite_privileges
+%attr(-, root, %{daemon_group}) /etc/bacula/make_sqlite_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_sqlite_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/update_sqlite_tables
+%{sqlite_bindir}/libsqlite.a
+%{sqlite_bindir}/sqlite.h
+%{sqlite_bindir}/sqlite
+%endif
 
-/etc/bacula/bacula
-/etc/bacula/bconsole
-/etc/bacula/create_mysql_database
-/etc/bacula/drop_mysql_database
-/etc/bacula/make_mysql_tables
-/etc/bacula/drop_mysql_tables
-/etc/bacula/update_mysql_tables
-/etc/bacula/grant_mysql_privileges
-/etc/bacula/create_bacula_database
-/etc/bacula/drop_bacula_database
-/etc/bacula/grant_bacula_privileges
-/etc/bacula/make_bacula_tables
-/etc/bacula/drop_bacula_tables
-/etc/bacula/update_bacula_tables
-/etc/bacula/make_catalog_backup
-/etc/bacula/delete_catalog_backup
-/etc/bacula/startmysql
-/etc/bacula/stopmysql
-/etc/bacula/mtx-changer
-/etc/bacula/btraceback.dbx
-/etc/bacula/btraceback.gdb
-#/etc/bacula/dvd-freespace
-#/etc/bacula/dvd-writepart
-/etc/bacula/dvd-handler
-/etc/init.d/bacula-dir
-/etc/init.d/bacula-fd
-/etc/init.d/bacula-sd
-/etc/bacula/rescue
+%if %{postgresql}
+%files postgresql
+%defattr(-,root,root)
+%attr(-, root, %{daemon_group}) /etc/bacula/create_postgresql_database
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_postgresql_database
+%attr(-, root, %{daemon_group}) /etc/bacula/make_postgresql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_postgresql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/update_postgresql_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/grant_postgresql_privileges
+%endif
+
+# The rest is DB backend independent
+%attr(-, root, %{daemon_group}) %dir /etc/bacula
+%attr(-, root, %{daemon_group}) /etc/bacula/bacula
+%attr(-, root, %{daemon_group}) /etc/bacula/bacula-ctl-dir
+%attr(-, root, %{daemon_group}) /etc/bacula/bacula-ctl-fd
+%attr(-, root, %{daemon_group}) /etc/bacula/bacula-ctl-sd
+%attr(-, root, %{daemon_group}) /etc/bacula/bconsole
+%attr(-, root, %{daemon_group}) /etc/bacula/create_bacula_database
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_bacula_database
+%attr(-, root, %{daemon_group}) /etc/bacula/grant_bacula_privileges
+%attr(-, root, %{daemon_group}) /etc/bacula/make_bacula_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/drop_bacula_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/update_bacula_tables
+%attr(-, root, %{daemon_group}) /etc/bacula/make_catalog_backup
+%attr(-, root, %{daemon_group}) /etc/bacula/delete_catalog_backup
+%attr(-, root, %{daemon_group}) /etc/bacula/btraceback.dbx
+%attr(-, root, %{daemon_group}) /etc/bacula/btraceback.gdb
+%attr(-, root, %{daemon_group}) /etc/bacula/rescue
+%attr(-, root, %{daemon_group}) /etc/init.d/bacula-dir
+%attr(-, root, %{daemon_group}) /etc/init.d/bacula-fd
+%attr(-, root, %{storage_daemon_group}) /etc/bacula/dvd-handler
+%attr(-, root, %{storage_daemon_group}) /etc/init.d/bacula-sd
+%attr(-, root, %{storage_daemon_group}) /etc/bacula/mtx-changer
 
 %doc COPYING ChangeLog ReleaseNotes VERIFYING kernstodo 
 %doc %{_docsrc}/manual/bacula.pdf %{_docsrc}/developers/developers.pdf %{_docsrc}/manual/bacula ../Release_Notes-%{version}-%{release}.txt
-/usr/man/man1/*
 
 /etc/logrotate.d/bacula
 /etc/log.d/scripts/services/bacula
-%config(noreplace) /etc/bacula/bacula-dir.conf
-%config(noreplace) /etc/bacula/bacula-fd.conf
-%config(noreplace) /etc/bacula/bacula-sd.conf
-%config(noreplace) /etc/bacula/bconsole.conf
-%config(noreplace) /etc/log.d/conf/logfiles/bacula.conf
-%config(noreplace) /etc/log.d/conf/services/bacula.conf
-/etc/bacula/query.sql
-%dir %{working_dir}
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/bacula-dir.conf
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/bacula-fd.conf
+%attr(-, root, %{storage_daemon_group}) %config(noreplace) /etc/bacula/bacula-sd.conf
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/bconsole.conf
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/log.d/conf/logfiles/bacula.conf
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/log.d/conf/services/bacula.conf
+%attr(-, root, %{daemon_group}) /etc/bacula/query.sql
+%attr(-, root, %{daemon_group}) %dir %{working_dir}
 
 /usr/sbin/bacula-dir
 /usr/sbin/bacula-fd
@@ -736,32 +897,87 @@ chmod 644 $RPM_BUILD_ROOT/etc/bacula/tray-monitor.conf
 /usr/sbin/btraceback
 /usr/sbin/bconsole
 /usr/sbin/dbcheck
-/usr/sbin/loaderinfo
-/usr/sbin/mtx
-/usr/sbin/scsitape
 /usr/sbin/bsmtp
-/usr/sbin/tapeinfo
 
+%if %{mysql}
 %pre mysql
 # test for bacula database older than version 8
 # note: this ASSUMES no password has been set for bacula database
 DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
+%endif
+
+%if %{sqlite}
+%pre sqlite
+# test for bacula database older than version 8
+if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite ];then
+        DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
+%endif
+
+%if %{postgresql}
+%pre postgresql
+DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
+%endif
 
 if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "8" ]; then
         echo "This bacula upgrade will update a bacula database from version 8 to 9."
         echo "You appear to be running database version $DB_VER. You must first update"
         echo "your database to version 8 and then install this upgrade. The alternative"
-        echo "is to use /etc/bacula/drop_mysql_tables to delete all your your current"
+        echo "is to use /etc/bacula/drop_%{db_backend}_tables to delete all your your current"
         echo "catalog information, then do the upgrade. Information on updating a"
         echo "database older than version 8 can be found in the release notes."
         exit 1
 fi
+
+%if %{sqlite}
+fi
+%endif
+
 # check for and copy /etc/bacula/console.conf to bconsole.conf
 if [ -s /etc/bacula/console.conf ];then
         cp -p /etc/bacula/console.conf /etc/bacula/bconsole.conf
 fi
 
+# create the daemon user and group
+HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
+        echo "The group %{daemon_group} has been added to %{group_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+HAVE_BACULA=`grep %{storage_daemon_group} %{group_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{groupadd} -r %{storage_daemon_group} > /dev/null 2>&1
+        echo "The group %{storage_daemon_group} has been added to %{group_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+HAVE_BACULA=`grep %{storage_daemon_user} %{user_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{useradd} -r -c "Bacula" -d %{working_dir} -g %{storage_daemon_group} -M -n -s /sbin/nologin %{storage_daemon_user} > /dev/null 2>&1
+        echo "The user %{storage_daemon_user} has been added to %{user_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+HAVE_BACULA=`grep %{director_daemon_user} %{user_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -n -s /sbin/nologin %{director_daemon_user} > /dev/null 2>&1
+        echo "The user %{director_daemon_user} has been added to %{user_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+HAVE_BACULA=`grep %{file_daemon_user} %{user_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -n -s /sbin/nologin %{file_daemon_user} > /dev/null 2>&1
+        echo "The user %{file_daemon_user} has been added to %{user_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+
+%if %{mysql}
 %post mysql
+%endif
+%if %{sqlite}
+%post sqlite
+%endif
+%if %{postgresql}
+%post postgresql
+%endif
 
 # add our links
 if [ "$1" -ge 1 ] ; then
@@ -770,6 +986,7 @@ if [ "$1" -ge 1 ] ; then
 /sbin/chkconfig --add bacula-sd
 fi
 
+%if %{mysql}
 # test for an existing database
 # note: this ASSUMES no password has been set for bacula database
 DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1`
@@ -794,133 +1011,13 @@ elif [ "$DB_VER" -lt "9" ]; then
         echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
 
 fi
-
-# create the daemon group
-HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
-if [ -z $HAVE_BACULA ]; then
-        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
-        echo "The group %{daemon_group} has been added to %{group_file}."
-        echo "See the manual chapter Running Bacula for details."
-fi
-
-%preun mysql
-# delete our links
-if [ $1 = 0 ]; then
-/sbin/chkconfig --del bacula-dir
-/sbin/chkconfig --del bacula-fd
-/sbin/chkconfig --del bacula-sd
-fi
-
 %endif
 
 %if %{sqlite}
-
-%files sqlite
-%defattr(-,root,root)
-
-/etc/bacula/bacula
-/etc/bacula/bconsole
-/etc/bacula/create_bacula_database
-/etc/bacula/drop_bacula_database
-/etc/bacula/grant_bacula_privileges
-/etc/bacula/make_bacula_tables
-/etc/bacula/drop_bacula_tables
-/etc/bacula/update_bacula_tables
-/etc/bacula/create_sqlite_database
-/etc/bacula/drop_sqlite_database
-/etc/bacula/grant_sqlite_privileges
-/etc/bacula/make_sqlite_tables
-/etc/bacula/drop_sqlite_tables
-/etc/bacula/update_sqlite_tables
-/etc/bacula/make_catalog_backup
-/etc/bacula/delete_catalog_backup
-/etc/bacula/mtx-changer
-/etc/bacula/btraceback.dbx
-/etc/bacula/btraceback.gdb
-#/etc/bacula/dvd-freespace
-#/etc/bacula/dvd-writepart
-/etc/bacula/dvd-handler
-/etc/init.d/bacula-dir
-/etc/init.d/bacula-fd
-/etc/init.d/bacula-sd
-/etc/bacula/rescue
-
-%doc COPYING ChangeLog ReleaseNotes VERIFYING kernstodo 
-%doc %{_docsrc}/manual/bacula.pdf %{_docsrc}/developers/developers.pdf %{_docsrc}/manual/bacula ../Release_Notes-%{version}-%{release}.txt
-/usr/man/man1/*
-
-/etc/logrotate.d/bacula
-/etc/log.d/scripts/services/bacula
-%config(noreplace) /etc/bacula/bacula-dir.conf
-%config(noreplace) /etc/bacula/bacula-fd.conf
-%config(noreplace) /etc/bacula/bacula-sd.conf
-%config(noreplace) /etc/bacula/bconsole.conf
-%config(noreplace) /etc/log.d/conf/logfiles/bacula.conf
-%config(noreplace) /etc/log.d/conf/services/bacula.conf
-/etc/bacula/query.sql
-%{sqlite_bindir}/libsqlite.a
-%{sqlite_bindir}/sqlite.h
-%dir %{working_dir}
-
-/usr/sbin/bacula-dir
-/usr/sbin/bacula-fd
-/usr/sbin/bacula-sd
-/usr/sbin/bcopy
-/usr/sbin/bextract
-/usr/sbin/bls
-/usr/sbin/bscan
-/usr/sbin/btape
-/usr/sbin/btraceback
-/usr/sbin/bconsole
-/usr/sbin/dbcheck
-/usr/sbin/loaderinfo
-/usr/sbin/mtx
-/usr/sbin/scsitape
-/usr/sbin/bsmtp
-/usr/sbin/tapeinfo
-%{sqlite_bindir}/sqlite
-
-
-%pre sqlite
-# test for bacula database older than version 8
-if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite ];then
-        DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
-        if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "8" ]; then
-                echo "This bacula upgrade will update a bacula database from version 8 to 9."
-                echo "You appear to be running database version $DB_VER. You must first update"
-                echo "your database to version 8 and then install this upgrade. The alternative"
-                echo "is to use /etc/bacula/drop_sqlite_tables to delete all your your current"
-                echo "catalog information, then do the upgrade. Information on updating a"
-                echo "database older than version 8 can be found in the release notes."
-                exit 1
-        fi
-fi
-# check for and copy /etc/bacula/console.conf to bconsole.conf
-if [ -s /etc/bacula/console.conf ];then
-        cp -p /etc/bacula/console.conf /etc/bacula/bconsole.conf
-fi
-
-%post sqlite
-# add our links
-if [ "$1" -ge 1 ] ; then
-/sbin/chkconfig --add bacula-dir
-/sbin/chkconfig --add bacula-fd
-/sbin/chkconfig --add bacula-sd
-fi
-
 # test for an existing database
 if [ -s %{working_dir}/bacula.db ]; then
         DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
         # check to see if we need to upgrade a 1.36 or lower database
-        if [ "$DB_VER" -lt "8" ]; then
-                echo "This bacula upgrade requires a database update to version 9. You appear to"
-                echo "be running database version $DB_VER. You must update your database using the"
-                echo "upgrade scripts in the bacula-updatedb package. The alternative"
-                echo "is to use /etc/bacula/drop_sqlite_tables to delete all your your current"
-                echo "catalog information, then /etc/bacula/make_sqlite_tables. Information on updating a"
-                echo "database older than version 8 can be found in the release notes."
-        fi      
-        
         if [ "$DB_VER" -lt "9" ] && [ "$DB_VER" -ge "8" ]; then
                 echo "This release requires an upgrade to your bacula database."
                 echo "Backing up your current database..."
@@ -937,112 +1034,9 @@ else
         echo "Creating the SQLite tables..."
         /etc/bacula/make_sqlite_tables
 fi
-
-# create the daemon group
-HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
-if [ -z $HAVE_BACULA ]; then
-        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
-        echo "The group %{daemon_group} has been added to %{group_file}."
-        echo "See the manual chapter Running Bacula for details."
-fi
-
-%preun sqlite
-# delete our links
-if [ $1 = 0 ]; then
-/sbin/chkconfig --del bacula-dir
-/sbin/chkconfig --del bacula-fd
-/sbin/chkconfig --del bacula-sd
-fi
-
 %endif
 
 %if %{postgresql}
-
-%files postgresql
-%defattr(-,root,root)
-
-/etc/bacula/bacula
-/etc/bacula/bconsole
-/etc/bacula/create_postgresql_database
-/etc/bacula/drop_postgresql_database
-/etc/bacula/make_postgresql_tables
-/etc/bacula/drop_postgresql_tables
-/etc/bacula/update_postgresql_tables
-/etc/bacula/grant_postgresql_privileges
-/etc/bacula/create_bacula_database
-/etc/bacula/drop_bacula_database
-/etc/bacula/grant_bacula_privileges
-/etc/bacula/make_bacula_tables
-/etc/bacula/drop_bacula_tables
-/etc/bacula/update_bacula_tables
-/etc/bacula/make_catalog_backup
-/etc/bacula/delete_catalog_backup
-/etc/bacula/mtx-changer
-/etc/bacula/btraceback.dbx
-/etc/bacula/btraceback.gdb
-#/etc/bacula/dvd-freespace
-#/etc/bacula/dvd-writepart
-/etc/bacula/dvd-handler
-/etc/init.d/bacula-dir
-/etc/init.d/bacula-fd
-/etc/init.d/bacula-sd
-/etc/bacula/rescue
-
-%doc COPYING ChangeLog ReleaseNotes VERIFYING kernstodo 
-%doc %{_docsrc}/manual/bacula.pdf %{_docsrc}/developers/developers.pdf %{_docsrc}/manual/bacula ../Release_Notes-%{version}-%{release}.txt
-/usr/man/man1/*
-
-/etc/logrotate.d/bacula
-/etc/log.d/scripts/services/bacula
-%config(noreplace) /etc/bacula/bacula-dir.conf
-%config(noreplace) /etc/bacula/bacula-fd.conf
-%config(noreplace) /etc/bacula/bacula-sd.conf
-%config(noreplace) /etc/bacula/bconsole.conf
-%config(noreplace) /etc/log.d/conf/logfiles/bacula.conf
-%config(noreplace) /etc/log.d/conf/services/bacula.conf
-/etc/bacula/query.sql
-%dir %{working_dir}
-
-/usr/sbin/bacula-dir
-/usr/sbin/bacula-fd
-/usr/sbin/bacula-sd
-/usr/sbin/bcopy
-/usr/sbin/bextract
-/usr/sbin/bls
-/usr/sbin/bscan
-/usr/sbin/btape
-/usr/sbin/btraceback
-/usr/sbin/bconsole
-/usr/sbin/dbcheck
-/usr/sbin/loaderinfo
-/usr/sbin/mtx
-/usr/sbin/scsitape
-/usr/sbin/bsmtp
-/usr/sbin/tapeinfo
-
-%pre postgresql
-# test for bacula database older than version 8
-# note: this ASSUMES no password has been set for bacula database
-DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
-
-if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "8" ]; then
-        echo "This bacula upgrade will update a bacula database from version 8 to 9."
-        echo "You appear to be running database version $DB_VER. You must first update"
-        echo "your database to version 8 and then install this upgrade. The alternative"
-        echo "is to use /etc/bacula/drop_postgresql_tables to delete all your your current"
-        echo "catalog information, then do the upgrade. Information on updating a"
-        echo "database older than version 8 can be found in the release notes."
-        exit 1
-fi
-
-%post postgresql
-# add our links
-if [ "$1" -ge 1 ] ; then
-/sbin/chkconfig --add bacula-dir
-/sbin/chkconfig --add bacula-fd
-/sbin/chkconfig --add bacula-sd
-fi
-
 # test for an existing database
 # note: this ASSUMES no password has been set for bacula database
 DB_VER=`echo 'select * from Version;' | psql bacula 2>/dev/null | tail -3 | head -1`
@@ -1067,17 +1061,33 @@ elif [ "$DB_VER" -lt "9" ]; then
         echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
         
 fi
+%endif
 
-# create the daemon group
-HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
-if [ -z $HAVE_BACULA ]; then
-        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
-        echo "The group %{daemon_group} has been added to %{groupfile}."
-        echo "See the manual chapter Running Bacula for details."
+# generate passwords if needed
+if [ -d /etc/bacula ]; then
+        cd /etc/bacula
+        for file in *.conf; do
+                for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+                        need_password=`grep $string $file 2>/dev/null`
+                        if [ -n "$need_password" ]; then
+                                pass=`openssl rand -base64 33`
+                                sed "s-$string-$pass-g" $file > $file.new
+                                cp -f $file.new $file; rm -f $file.new
+                        fi
+                done
+        done
 fi
-        
 
+%if %{mysql}
+%preun mysql
+%endif
+%if %{sqlite}
+%preun sqlite
+%endif
+%if %{postgresql}
 %preun postgresql
+%endif
+
 # delete our links
 if [ $1 = 0 ]; then
 /sbin/chkconfig --del bacula-dir
@@ -1085,44 +1095,73 @@ if [ $1 = 0 ]; then
 /sbin/chkconfig --del bacula-sd
 fi
 
-%endif
+
+%files mtx
+%attr(-, root, %{storage_daemon_group}) /usr/sbin/loaderinfo
+%attr(-, root, %{storage_daemon_group}) /usr/sbin/mtx
+%attr(-, root, %{storage_daemon_group}) /usr/sbin/scsitape
+%attr(-, root, %{storage_daemon_group}) /usr/sbin/tapeinfo
+/usr/man/man1/*
+
 
 %files client
 %defattr(-,root,root)
-
-/etc/bacula/bconsole
+%attr(-, root, %{daemon_group}) %dir /etc/bacula
+%attr(-, root, %{daemon_group}) /etc/bacula/bconsole
 /etc/init.d/bacula-fd
-/etc/bacula/rescue
+%attr(-, root, %{daemon_group}) /etc/bacula/rescue
 
 %doc COPYING ChangeLog ReleaseNotes VERIFYING kernstodo 
 %doc %{_docsrc}/manual/bacula.pdf %{_docsrc}/developers/developers.pdf %{_docsrc}/manual/bacula ../Release_Notes-%{version}-%{release}.txt
 
 /etc/logrotate.d/bacula
 
-%config(noreplace) /etc/bacula/bacula-fd.conf
-%config(noreplace) /etc/bacula/bconsole.conf
-%dir %{working_dir}
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/bacula-fd.conf
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/bconsole.conf
+%attr(-, root, %{daemon_group}) %dir %{working_dir}
 
 /usr/sbin/bacula-fd
 /usr/sbin/btraceback
-/etc/bacula/btraceback.gdb
-/etc/bacula/btraceback.dbx
+%attr(-, root, %{daemon_group}) /etc/bacula/btraceback.gdb
+%attr(-, root, %{daemon_group}) /etc/bacula/btraceback.dbx
 /usr/sbin/bsmtp
 /usr/sbin/bconsole
 
 
+%pre client
+# create the daemon group and user
+HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
+        echo "The group %{daemon_group} has been added to %{group_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+HAVE_BACULA=`grep %{file_daemon_user} %{user_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{useradd} -r -c "Bacula" -d %{working_dir} -g %{daemon_group} -M -n -s /sbin/nologin %{file_daemon_user} > /dev/null 2>&1
+        echo "The user %{file_daemon_user} has been added to %{user_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+
 %post client
 # add our link
 if [ "$1" -ge 1 ] ; then
 /sbin/chkconfig --add bacula-fd
 fi
 
-# create the daemon group
-HAVE_BACULA=`cat %{group_file} | grep %{daemon_group} 2>/dev/null`
-if [ -z $HAVE_BACULA ]; then
-        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
-        echo "The group %{daemon_group} has been added to %{group_file}."
-        echo "See the manual chapter Running Bacula for details."
+# generate passwords if needed
+if [ -d /etc/bacula ]; then
+        cd /etc/bacula
+        for file in *.conf; do
+                for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+                        need_password=`grep $string $file 2>/dev/null`
+                        if [ -n "$need_password" ]; then
+                                pass=`openssl rand -base64 33`
+                                sed "s-$string-$pass-g" $file > $file.new
+                                cp -f $file.new $file; rm -f $file.new
+                        fi
+                done
+        done
 fi
 
 %preun client
@@ -1132,41 +1171,100 @@ if [ $1 = 0 ]; then
 fi
 
 %files updatedb
-%defattr(-,root,root)
+%defattr(-,root,%{daemon_group})
 /etc/bacula/updatedb/*
 
+%pre updatedb
+# create the daemon group
+HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
+        echo "The group %{daemon_group} has been added to %{group_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+
 %post updatedb
 echo "The database update scripts were installed to /etc/bacula/updatedb"
 
+%if %{gconsole}
 %files gconsole
 %defattr(-,root,root)
 /usr/sbin/gnome-console
-/etc/bacula/gconsole
-%config(noreplace) /etc/bacula/gnome-console.conf
+%attr(-, root, %{daemon_group}) %dir /etc/bacula
+%attr(-, root, %{daemon_group}) /etc/bacula/gconsole
+%attr(-, root, %{daemon_group}) %config(noreplace) /etc/bacula/gnome-console.conf
 /usr/share/pixmaps/bacula.png
+%endif
 
-%if %{rh7}
-/usr/share/gnome/apps/System/bacula.desktop
-%else
+%if %{gconsole}
 /usr/share/applications/bacula.desktop
 %endif
 
-%if ! %{rh7} && ! %{rh8}
+%if %{gconsole} && ! %{rh8}
 /usr/sbin/bacula-tray-monitor
 %config(noreplace) /etc/bacula/tray-monitor.conf
 /usr/share/pixmaps/bacula-tray-monitor.xpm
 /usr/share/applications/bacula-tray-monitor.desktop
 %endif
 
-%if ! %{su9} 
+%if %{gconsole} && ! %{su9} && ! %{su10}
 # add the console helper files
 %config(noreplace,missingok) /etc/pam.d/gnome-console
 %config(noreplace,missingok) /etc/security/console.apps/gnome-console
 /usr/bin/gnome-console
 %endif
 
+%if %{gconsole}
+%pre gconsole
+# create the daemon group
+HAVE_BACULA=`grep %{daemon_group} %{group_file} 2>/dev/null`
+if [ -z "$HAVE_BACULA" ]; then
+        %{groupadd} -r %{daemon_group} > /dev/null 2>&1
+        echo "The group %{daemon_group} has been added to %{group_file}."
+        echo "See the manual chapter \"Running Bacula\" for details."
+fi
+
+%post gconsole
+# generate passwords if needed
+if [ -d /etc/bacula ]; then
+        cd /etc/bacula
+        for file in *.conf; do
+                for string in XXX_REPLACE_WITH_DIRECTOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_PASSWORD_XXX XXX_REPLACE_WITH_DIRECTOR_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_CLIENT_MONITOR_PASSWORD_XXX XXX_REPLACE_WITH_STORAGE_MONITOR_PASSWORD_XXX; do
+                        need_password=`grep $string $file 2>/dev/null`
+                        if [ -n "$need_password" ]; then
+                                pass=`openssl rand -base64 33`
+                                sed "s-$string-$pass-g" $file > $file.new
+                                cp -f $file.new $file; rm -f $file.new
+                        fi
+                done
+        done
+fi
+%endif
 
 %changelog
+* Sun Jan 29 2006 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add centos3 build tag
+- fix link error of static-fd on Mandrake with --disable-nls
+* Fri Jan 27 2006 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add fc4 dependencies
+* Mon Jan 23 2006 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- add SuSE 10.0 build
+- remove specific permission in attrib macros
+* Sat Jan 21 2006 D. Scott Barninger <barninger@fairfieldcomputers.com>
+- 1.38.5 release
+- fix usermode required on suse, suse doesn't have usermode (xsu instead)
+- refix compat for _dist on SLES9 which seems to have been removed
+- added note regarding Aleksandar's use of specific permissions in attrib macros
+- need to review and add specific fc4 build currently using fc3 Requires
+* Wed Dec 14 2005 Aleksandar Milivojevic <alex@milivojevic.org>
+- 1.38.2 release
+- Reorganize files and pre/post sections to remove repetitions
+- Always build separate mtx package
+- Fix file ownerships for /etc/bacula and Bacula's working dir
+* Wed Nov 23 2005 Aleksandar Milivojevic <alex@milivojevic.org>
+- Disable GNOME on RH7
+* Fri Nov 18 2005 Aleksandar Milivojevic <alex@milivojevic.org>
+- Red Hat and look alikes have mtx RPM, do not build/package our version
 * Sun Nov 13 2005 D. Scott Barninger <barninger@fairfieldcomputers.com>
 - minor edit to _dist for SLES9 compatibility
 * Sat Nov 05 2005 D. Scott Barninger <barninger@fairfieldcomputers.com>