]> 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 f69b37527ff9a45c52572b6fbabeac72f1beaeb9..53a16dc2b53259cb98d7823ee83d026d6db7b84a 100644 (file)
@@ -1,36 +1,38 @@
+# Platform Build Configuration
 
+# basic defines for every build
 %define depkgs ../depkgs
+%define depkgs_version 24Jul03
+%define tomsrtbt tomsrtbt-2.0.103
+%define sqlite_bindir /usr/lib/sqlite
+%define working_dir /var/bacula
 
-# 
-# You must build the package with at least one define
-#  e.g.  rpmbuild -ba --define "build_rh7 1" bacula.spec
-#
-# If you want the MySQL version, use:
-#        rpmbuild -ba --define "build_mysql 1" --define "build_rh7 1" bacula.spec
-#
-
+# platform defines - set one below or define the build_xxx on the command line
+# RedHat builds
 %define rh7 0
 %{?build_rh7:%define rh7 1}
-
 %define rh8 0
 %{?build_rh8:%define rh8 1}
-
 %define rh9 0
 %{?build_rh9:%define rh9 1}
-
+# Fedora Core 1 build
+%define fc1 0
+%{?build_fc1:%define fc1 1}
+# Whitebox Enterprise build
+%define wb3 0
+%{?build_wb3:%define wb3 1}
+# SuSE 9.0 build
+%define su9 0
+%{?build_su9:%define su9 1}
+
+# database defines
+# set for database support desired
 %define mysql 0
 %{?build_mysql:%define mysql 1}
-
-
-%if %{rh7}
-%define rh_version rh7
-%endif
-%if %{rh8}
-%define rh_version rh8
-%endif
-%if %{rh9}
-%define rh_version rh9
-%endif
+%define sqlite 0
+%{?build_sqlite:%define sqlite 1}
+%define postgresql 0
+%{?build_postgresql:%define postgresql 1}
 
 Summary: Bacula - The Network Backup Solution
 Name: bacula
@@ -38,22 +40,63 @@ Version: @VERSION@
 Release: 1
 Group: System Environment/Daemons
 Copyright: GPL v2
-Source: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+Source0:http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+Source1:http://www.prdownloads.sourceforge.net/bacula/depkgs-%{depkgs_version}.tar.gz
+Source2:http://www.tux.org/pub/distributions/tinylinux/tomsrtbt/%{tomsrtbt}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-root
 URL: http://www.bacula.org/
 Vendor: The Bacula Team
 Distribution: The Bacula Team
 Packager: D. Scott Barninger <barninger@fairfieldcomputers.com>
-Requires: gnome-libs >= 1.4
-Requires: readline
+BuildRequires: readline-devel, atk-devel, ncurses-devel, pango-devel
+BuildRequires: libstdc++-devel, libxml2-devel, zlib-devel
+%if %{rh7}
+BuildRequires: libtermcap-devel
+BuildRequires: gtk+-devel >= 1.2
 BuildRequires: gnome-libs-devel >= 1.4
-BuildRequires: readline-devel
+BuildRequires: glibc-devel >= 2.2
+BuildRequires: ORBit-devel
+BuildRequires: bonobo-devel
+BuildRequires: GConf-devel
+%endif
+%if %{su9}
+BuildRequires: termcap
+BuildRequires: gtk2-devel >= 2.0
+BuildRequires: libgnomeui-devel >= 2.0
+BuildRequires: glibc-devel >= 2.3
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.0
+BuildRequires: libbonobo-devel >= 2.0
+BuildRequires: libbonoboui-devel >= 2.0
+BuildRequires: bonobo-activation-devel
+BuildRequires: gconf2-devel
+BuildRequires: linc-devel
+%endif
+%if ! %{rh7} && ! %{su9}
+BuildRequires: libtermcap-devel
+BuildRequires: gtk2-devel >= 2.0
+BuildRequires: libgnomeui-devel >= 2.0
+BuildRequires: glibc-devel >= 2.3
+BuildRequires: ORBit2-devel
+BuildRequires: libart_lgpl-devel >= 2.0
+BuildRequires: libbonobo-devel >= 2.0
+BuildRequires: libbonoboui-devel >= 2.0
+BuildRequires: bonobo-activation-devel
+BuildRequires: GConf2-devel
+BuildRequires: linc-devel
+%endif
+
 %if %{mysql}
-Requires: mysql >= 3.23
-Requires: mysql-server >= 3.23
 BuildRequires: mysql-devel >= 3.23
 %endif
 
+%if %{postgresql} && %{wb3}
+BuildRequires: rh-postgresql-devel >= 7
+%endif
+
+%if %{postgresql} && ! %{wb3}
+BuildRequires: postgresql-devel >= 7
+%endif
 
 %description
 Bacula - It comes by night and sucks the vital essence from your computers.
@@ -67,18 +110,77 @@ features that make it easy to find and recover lost or damaged files.
 Bacula source code has been released under the GPL version 2 license.
 
 %if %{mysql}
-%package mysql-%{rh_version}
-%else
-%package sqlite-%{rh_version}
+%package mysql
+%endif
+%if %{sqlite}
+%package sqlite
+%endif
+%if %{postgresql}
+%package postgresql
 %endif
 
 Summary: Bacula - The Network Backup Solution
 Group: System Environment/Daemons
+Provides: bacula-dir, bacula-sd, bacula-fd, bacula-server
+Conflicts: bacula-client, bacula-gconsole
+Requires: readline, perl, atk, ncurses, pango, libstdc++
+Requires: libxml2, zlib
+%if %{rh7}
+Requires: gtk+ >= 1.2
+Requires: gnome-libs >= 1.4
+Requires: glibc >= 2.2
+Requires: ORBit
+Requires: bonobo
+Requires: GConf
+Requires: libtermcap
+%endif
+%if %{su9}
+Requires: gtk2 >= 2.0
+Requires: libgnomeui >= 2.0
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.0
+Requires: libbonobo >= 2.0
+Requires: libbonoboui >= 2.0
+Requires: bonobo-activation
+Requires: gconf2
+Requires: linc
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9}
+Requires: gtk2 >= 2.0
+Requires: libgnomeui >= 2.0
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.0
+Requires: libbonobo >= 2.0
+Requires: libbonoboui >= 2.0
+Requires: bonobo-activation
+Requires: GConf2
+Requires: linc
+Requires: libtermcap
+%endif
+%if %{mysql}
+Requires: mysql >= 3.23
+Requires: mysql-server >= 3.23
+%endif
+%if %{postgresql} && %{wb3}
+Requires: rh-postgresql >= 7
+Requires: rh-postgresql-server >= 7
+%endif
+%if %{postgresql} && ! %{wb3}
+Requires: postgresql >= 7
+Requires: postgresql-server >= 7
+%endif
 
 %if %{mysql}
-%description mysql-%{rh_version}
-%else
-%description sqlite-%{rh_version}
+%description mysql
+%endif
+%if %{sqlite}
+%description sqlite
+%endif
+%if %{postgresql}
+%description postgresql
 %endif
 
 Bacula - It comes by night and sucks the vital essence from your computers.
@@ -93,14 +195,87 @@ Bacula source code has been released under the GPL version 2 license.
 
 %if %{mysql}
 This build requires MySQL to be installed separately as the catalog database.
-%else
+%endif
+%if %{postgresql}
+This build requires PostgreSQL to be installed separately as the catalog database.
+%endif
+%if %{sqlite}
 This build incorporates sqlite as the catalog database, statically compiled.
 %endif
 
-%package client-%{rh_version}
+%package client
+Summary: Bacula - The Network Backup Solution
+Group: System Environment/Daemons
+Provides: bacula-fd
+Requires: readline, perl, libstdc++, zlib
+
+%if %{rh7}
+Requires: glibc >= 2.2
+Requires: libtermcap
+%endif
+%if %{su9}
+Requires: glibc >= 2.3
+Requires: termcap
+%endif
+%if ! %{rh7} && ! %{su9}
+Requires: glibc >= 2.3
+Requires: libtermcap
+%endif
+
+%description client
+Bacula - It comes by night and sucks the vital essence from your computers.
+
+Bacula is a set of computer programs that permit you (or the system 
+administrator) to manage backup, recovery, and verification of computer 
+data across a network of computers of different kinds. In technical terms, 
+it is a network client/server based backup program. Bacula is relatively 
+easy to use and efficient, while offering many advanced storage management 
+features that make it easy to find and recover lost or damaged files. 
+Bacula source code has been released under the GPL version 2 license.
+
+This is the File daemon (Client) only package. It includes the command line 
+console program.
+
+%package rescue
+
+Summary: Bacula - The Network Backup Solution
+Group: System Environment/Daemons
+Requires: coreutils, util-linux, libc5, bacula-fd
+
+%description rescue
+Bacula - It comes by night and sucks the vital essence from your computers.
+
+Bacula is a set of computer programs that permit you (or the system 
+administrator) to manage backup, recovery, and verification of computer 
+data across a network of computers of different kinds. In technical terms, 
+it is a network client/server based backup program. Bacula is relatively 
+easy to use and efficient, while offering many advanced storage management 
+features that make it easy to find and recover lost or damaged files. 
+Bacula source code has been released under the GPL version 2 license.
+
+This package installs scripts for disaster recovery and builds rescue 
+floppy disks for bare metal recovery. This package includes tomsrtbt
+(http://www.toms.net/rb/, by Tom Oehser, Tom@Toms.NET) to provide a tool
+to build a boot floppy disk.
+
+You need to have the bacula-sqlite, bacula-mysql, bacula-postgresql or 
+bacula-client package for your platform installed and configured before 
+installing this package.
+
+To create a boot disk run "./getdiskinfo" from the /etc/bacula/rescue
+directory (this is done when the package is first installed), 
+then run "./install.s" from the /etc/bacula/rescue/tomsrtbt/
+directory. To make the bacula rescue disk run
+"./make_rescue_disk --copy-static-bacula --copy-etc-files"
+from the /etc/bacula/rescue directory. To recreate the rescue
+information for this system run ./getdiskinfo again.
+
+%package updatedb
+
 Summary: Bacula - The Network Backup Solution
 Group: System Environment/Daemons
-%description client-%{rh_version}
+
+%description updatedb
 Bacula - It comes by night and sucks the vital essence from your computers.
 
 Bacula is a set of computer programs that permit you (or the system 
@@ -111,26 +286,94 @@ easy to use and efficient, while offering many advanced storage management
 features that make it easy to find and recover lost or damaged files. 
 Bacula source code has been released under the GPL version 2 license.
 
-This is the File daemon (Client) only package.
+This package installs scripts for updating older versions of the bacula
+database.
+
+%package gconsole
+Summary: Bacula - The Network Backup Solution
+Group: System Environment/Daemons
+Requires: readline, libstdc++, zlib, pango, bacula-client
+Conflicts: bacula-server
+
+%if %{rh7}
+Requires: gtk+ >= 1.2
+Requires: gnome-libs >= 1.4
+Requires: glibc >= 2.2
+Requires: ORBit
+Requires: bonobo
+Requires: GConf
+%endif
+%if %{su9}
+Requires: gtk2 >= 2.0
+Requires: libgnomeui >= 2.0
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.0
+Requires: libbonobo >= 2.0
+Requires: libbonoboui >= 2.0
+Requires: bonobo-activation
+Requires: gconf2
+Requires: linc
+%endif
+%if ! %{rh7} && ! %{su9}
+Requires: gtk2 >= 2.0
+Requires: libgnomeui >= 2.0
+Requires: glibc >= 2.3
+Requires: ORBit2
+Requires: libart_lgpl >= 2.0
+Requires: libbonobo >= 2.0
+Requires: libbonoboui >= 2.0
+Requires: bonobo-activation
+Requires: GConf2
+Requires: linc
+%endif
+
+%description gconsole
+Bacula - It comes by night and sucks the vital essence from your computers.
 
+Bacula is a set of computer programs that permit you (or the system 
+administrator) to manage backup, recovery, and verification of computer 
+data across a network of computers of different kinds. In technical terms, 
+it is a network client/server based backup program. Bacula is relatively 
+easy to use and efficient, while offering many advanced storage management 
+features that make it easy to find and recover lost or damaged files. 
+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 package.
 
 %prep
 
-%setup
+%setup -b 1
+%setup -b 2
 
 %build
 
+%if %{su9}
+export LDFLAGS="-L/usr/lib/termcap"
+%endif
+
 cwd=${PWD}
 cd %{depkgs}
-%if ! %{mysql}
+%if %{sqlite}
 make sqlite
 %endif
 make mtx
 cd ${cwd}
 
+# patches for the bundled sqlite scripts
+
 # patch the make_sqlite_tables script for installation bindir
 patch src/cats/make_sqlite_tables.in src/cats/make_sqlite_tables.in.patch
 
+# patch the create_sqlite_database script for installation bindir
+patch src/cats/create_sqlite_database.in src/cats/create_sqlite_database.in.patch
+
+# patch the make_catalog_backup script for installation bindir
+patch src/cats/make_catalog_backup.in src/cats/make_catalog_backup.in.patch
+
+# patch the update_sqlite_tables script for installation bindir
+patch src/cats/update_sqlite_tables.in src/cats/update_sqlite_tables.in.patch
+
 %configure \
         --prefix=/usr \
         --sbindir=/usr/sbin \
@@ -138,27 +381,40 @@ patch src/cats/make_sqlite_tables.in src/cats/make_sqlite_tables.in.patch
         --with-scriptdir=/etc/bacula \
         --enable-smartalloc \
         --enable-gnome \
+          --enable-static-fd \
 %if %{mysql}
         --with-mysql \
-%else
+%endif
+%if %{sqlite}
         --with-sqlite=${cwd}/../depkgs/sqlite \
 %endif
-        --with-working-dir=/var/bacula \
+%if %{postgresql}
+        --with-postgresql \
+%endif
+        --with-working-dir=%{working_dir} \
         --with-pid-dir=/var/run \
         --with-subsys-dir=/var/lock/subsys
 make
 
+cd src/filed
+strip static-bacula-fd
+cd ../../
+
 %install
  
 cwd=${PWD}
-mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
+mkdir -p $RPM_BUILD_ROOT/etc/init.d
 mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
 mkdir -p $RPM_BUILD_ROOT/usr/share/pixmaps
 mkdir -p $RPM_BUILD_ROOT/usr/share/gnome/apps/System
 mkdir -p $RPM_BUILD_ROOT/usr/share/applications
+mkdir -p $RPM_BUILD_ROOT/etc/bacula/rescue
+mkdir -p $RPM_BUILD_ROOT/etc/bacula/rescue/tomsrtbt
+mkdir -p $RPM_BUILD_ROOT/etc/bacula/updatedb
 
-%if ! %{mysql}
-mkdir -p $RPM_BUILD_ROOT/usr/lib/sqlite
+%if %{sqlite}
+mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
 %endif
 
 make \
@@ -166,7 +422,7 @@ make \
         sbindir=$RPM_BUILD_ROOT/usr/sbin \
         sysconfdir=$RPM_BUILD_ROOT/etc/bacula \
         scriptdir=$RPM_BUILD_ROOT/etc/bacula \
-        working_dir=$RPM_BUILD_ROOT/var/bacula \
+        working_dir=$RPM_BUILD_ROOT%{working_dir} \
         install
 
 cd %{depkgs}
@@ -174,201 +430,523 @@ make \
         prefix=$RPM_BUILD_ROOT/usr \
         sbindir=$RPM_BUILD_ROOT/usr/sbin \
         sysconfdir=$RPM_BUILD_ROOT/etc/bacula \
-        working_dir=$RPM_BUILD_ROOT/var/bacula \
+        working_dir=$RPM_BUILD_ROOT%{working_dir} \
         mandir=$RPM_BUILD_ROOT/usr/man \
         mtx-install
 cd ${cwd}
 
-%if ! %{mysql}
 # fixme - make installs the mysql scripts for sqlite build
+%if %{sqlite}
 rm -f $RPM_BUILD_ROOT/etc/bacula/startmysql
 rm -f $RPM_BUILD_ROOT/etc/bacula/stopmysql
 rm -f $RPM_BUILD_ROOT/etc/bacula/grant_mysql_privileges
 %endif
 
+# fixme - make installs the mysql scripts for postgresql build
+%if %{postgresql}
+rm -f $RPM_BUILD_ROOT/etc/bacula/startmysql
+rm -f $RPM_BUILD_ROOT/etc/bacula/stopmysql
+%endif
+
 # install the init scripts
-cp platforms/redhat/bacula-dir $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-dir
-cp platforms/redhat/bacula-fd $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-fd
-cp platforms/redhat/bacula-sd $RPM_BUILD_ROOT/etc/rc.d/init.d/bacula-sd
+%if %{su9}
+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
+%else
+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
+%endif
 
 # install the menu stuff
-cp scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
-cp scripts/bacula.desktop.gnome1 $RPM_BUILD_ROOT/usr/share/gnome/apps/System/bacula.desktop
-cp scripts/bacula.desktop.gnome2 $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
+cp -p scripts/bacula.png $RPM_BUILD_ROOT/usr/share/pixmaps/bacula.png
+cp -p scripts/bacula.desktop.gnome1 $RPM_BUILD_ROOT/usr/share/gnome/apps/System/bacula.desktop
+cp -p scripts/bacula.desktop.gnome2 $RPM_BUILD_ROOT/usr/share/applications/bacula.desktop
 
 # install sqlite
-%if ! %{mysql}
-cp ../depkgs/sqlite/sqlite $RPM_BUILD_ROOT/usr/lib/sqlite/sqlite
-cp ../depkgs/sqlite/sqlite.h $RPM_BUILD_ROOT/usr/lib/sqlite/sqlite.h
-cp ../depkgs/sqlite/libsqlite.a $RPM_BUILD_ROOT/usr/lib/sqlite/libsqlite.a
+%if %{sqlite}
+cp -p ../depkgs/sqlite/sqlite $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite
+cp -p ../depkgs/sqlite/sqlite.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite.h
+cp -p ../depkgs/sqlite/libsqlite.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite.a
 %endif
 
 # install the logrotate file
 cp scripts/logrotate $RPM_BUILD_ROOT/etc/logrotate.d/bacula
 
+# install the rescue stuff
+# these are the rescue scripts
+cp -p rescue/linux/backup.etc.list $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/format_floppy $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/getdiskinfo $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/make_rescue_disk $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/restore_bacula $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/restore_etc $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/run_grub $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/run_lilo $RPM_BUILD_ROOT/etc/bacula/rescue/
+cp -p rescue/linux/sfdisk.bz2 $RPM_BUILD_ROOT/etc/bacula/rescue/
+
+# this is the static file daemon
+cp -p src/filed/static-bacula-fd $RPM_BUILD_ROOT/etc/bacula/rescue/bacula-fd
+
+# this is the tom's root boot disk
+cp -p ../%{tomsrtbt}/* $RPM_BUILD_ROOT/etc/bacula/rescue/tomsrtbt/
+
+# install the updatedb scripts
+cp -p updatedb/* $RPM_BUILD_ROOT/etc/bacula/updatedb/
+
+# 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
+
 %clean
 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
 
 %if %{mysql}
 
-%files mysql-%{rh_version}
+%files mysql
 %defattr(-,root,root)
 
-%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
-%attr(0754,root,root) /etc/bacula/fd
-%attr(0754,root,root) /etc/bacula/gconsole
-%attr(0754,root,root) /etc/bacula/create_mysql_database
-%attr(0754,root,root) /etc/bacula/delete_catalog_backup
-%attr(0754,root,root) /etc/bacula/drop_bacula_tables
-%attr(0754,root,root) /etc/bacula/drop_mysql_tables
-%attr(0754,root,root) /etc/bacula/make_bacula_tables
-%attr(0754,root,root) /etc/bacula/make_catalog_backup
-%attr(0754,root,root) /etc/bacula/make_mysql_tables
-%attr(0754,root,root) /etc/bacula/grant_mysql_privileges
-%attr(0754,root,root) /etc/bacula/startmysql
-%attr(0754,root,root) /etc/bacula/stopmysql
-%attr(0754,root,root) /etc/bacula/mtx-changer
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-dir
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-fd
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-sd
-
-%attr(0644,root,root) %doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
-%attr(0644,root,root) /usr/man/man1/*
-%attr(0644,root,root) /usr/share/pixmaps/bacula.png
-%attr(0644,root,root) /usr/share/gnome/apps/System/bacula.desktop
-%attr(0644,root,root) /usr/share/applications/bacula.desktop
-%attr(0644,root,root) %config(noreplace) /etc/bacula/gnome-console.conf
-%attr(0644,root,root) /etc/logrotate.d/bacula
-
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-dir.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-fd.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-sd.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/console.conf
-%attr(0640,root,root) /etc/bacula/query.sql
-%attr(0640,root,root) %dir /var/bacula
-
-%attr(0750,root,root) /usr/sbin/*
-
-%post mysql-%{rh_version}
-# delete then add our links
-/sbin/chkconfig --del bacula-dir
-/sbin/chkconfig --del bacula-fd
-/sbin/chkconfig --del bacula-sd
+/etc/bacula/bacula
+/etc/bacula/bconsole
+/etc/bacula/fd
+/etc/bacula/gconsole
+/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/init.d/bacula-dir
+/etc/init.d/bacula-fd
+/etc/init.d/bacula-sd
+
+%doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
+/usr/man/man1/*
+/usr/share/pixmaps/bacula.png
+/usr/share/gnome/apps/System/bacula.desktop
+/usr/share/applications/bacula.desktop
+%config(noreplace) /etc/bacula/gnome-console.conf
+/etc/logrotate.d/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
+/etc/bacula/query.sql
+%dir %{working_dir}
+
+/usr/sbin/*
+/etc/bacula/btraceback.gdb
+
+%pre mysql
+# test for bacula database older than version 6
+# note: this ASSUMES no password has been set for bacula database
+DB_VER=`mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+
+if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "6" ]; then
+       echo "This bacula upgrade will update a bacula database from version 6 to 7."
+       echo "You appear to be running database version $DB_VER. You must first update"
+       echo "your database to version 6 and then install this upgrade. The alternative"
+       echo "is to use /etc/bacula/drop_mysql_tables to delete all your your current"
+       echo "catalog information, then do the upgrade. Information on updating a"
+       echo "database older than version 6 can be found in the release notes."
+       exit 1
+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 mysql
+
+# add our links
+if [ "$1" -ge 1 ] ; then
 /sbin/chkconfig --add bacula-dir
 /sbin/chkconfig --add bacula-fd
 /sbin/chkconfig --add bacula-sd
-
-# add execute permissions for console
-chmod 0755 /usr/sbin/gnome-console
-
-# grant privileges and create tables
-# this will error out harmlessly if tables already exist
-echo "Granting privileges for MySQL user bacula..."
-/etc/bacula/grant_mysql_privileges
-echo "Creating MySQL bacula database..."
-/etc/bacula/create_mysql_database
-echo "Creating bacula tables..."
-/etc/bacula/make_mysql_tables
-
-%preun mysql-%{rh_version}
+fi
+
+# test for an existing database
+# note: this ASSUMES no password has been set for bacula database
+DB_VER=`mysql bacula -e 'select * from Version;'|tail -n 1 2>/dev/null`
+
+# grant privileges and create tables if they do not exist
+if [ -z "$DB_VER" ]; then
+       echo "Hmm, doesn't look like you have an existing database."
+       echo "Granting privileges for MySQL user bacula..."
+       /etc/bacula/grant_mysql_privileges
+       echo "Creating MySQL bacula database..."
+       /etc/bacula/create_mysql_database
+       echo "Creating bacula tables..."
+       /etc/bacula/make_mysql_tables
+
+# check to see if we need to upgrade a 1.32 or lower database
+elif [ "$DB_VER" -lt "7" ]; then
+       echo "This release requires an upgrade to your bacula database."
+       echo "Backing up your current database..."
+       mysqldump -f --opt bacula | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+       echo "Upgrading bacula database ..."
+       /etc/bacula/update_mysql_tables
+       echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+
+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
 
-%else
+%endif
+
+%if %{sqlite}
 
-%files sqlite-%{rh_version}
+%files sqlite
 %defattr(-,root,root)
 
-%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
-%attr(0754,root,root) /etc/bacula/fd
-%attr(0754,root,root) /etc/bacula/gconsole
-%attr(0754,root,root) /etc/bacula/create_sqlite_database
-%attr(0754,root,root) /etc/bacula/delete_catalog_backup
-%attr(0754,root,root) /etc/bacula/drop_bacula_tables
-%attr(0754,root,root) /etc/bacula/drop_sqlite_tables
-%attr(0754,root,root) /etc/bacula/make_bacula_tables
-%attr(0754,root,root) /etc/bacula/make_catalog_backup
-%attr(0754,root,root) /etc/bacula/make_sqlite_tables
-%attr(0754,root,root) /etc/bacula/mtx-changer
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-dir
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-fd
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-sd
-
-%attr(0644,root,root) %doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
-%attr(0644,root,root) /usr/man/man1/*
-%attr(0644,root,root) /usr/share/pixmaps/bacula.png
-%attr(0644,root,root) /usr/share/gnome/apps/System/bacula.desktop
-%attr(0644,root,root) /usr/share/applications/bacula.desktop
-%attr(0644,root,root) %config(noreplace) /etc/bacula/gnome-console.conf
-%attr(0644,root,root) /etc/logrotate.d/bacula
-
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-dir.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-fd.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-sd.conf
-%attr(0640,root,root) %config(noreplace) /etc/bacula/console.conf
-%attr(0640,root,root) /etc/bacula/query.sql
-%attr(0640,root,root) /usr/lib/sqlite/libsqlite.a
-%attr(0640,root,root) /usr/lib/sqlite/sqlite.h
-%attr(0640,root,root) %dir /var/bacula
-
-%attr(0750,root,root) /usr/sbin/*
-%attr(0750,root,root) /usr/lib/sqlite/sqlite
-
-%post sqlite-%{rh_version}
-# delete then add our links
-/sbin/chkconfig --del bacula-dir
-/sbin/chkconfig --del bacula-fd
-/sbin/chkconfig --del bacula-sd
+/etc/bacula/bacula
+/etc/bacula/bconsole
+/etc/bacula/fd
+/etc/bacula/gconsole
+/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/init.d/bacula-dir
+/etc/init.d/bacula-fd
+/etc/init.d/bacula-sd
+
+%doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
+/usr/man/man1/*
+/usr/share/pixmaps/bacula.png
+/usr/share/gnome/apps/System/bacula.desktop
+/usr/share/applications/bacula.desktop
+%config(noreplace) /etc/bacula/gnome-console.conf
+/etc/logrotate.d/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
+/etc/bacula/query.sql
+%{sqlite_bindir}/libsqlite.a
+%{sqlite_bindir}/sqlite.h
+%dir %{working_dir}
+
+/usr/sbin/*
+%{sqlite_bindir}/sqlite
+/etc/bacula/btraceback.gdb
+
+%pre sqlite
+# test for bacula database older than version 6
+if [ -s %{working_dir}/bacula.db ];then
+       DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite %{working_dir}/bacula.db | tail -n 1 2>/dev/null`
+       if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "6" ]; then
+               echo "This bacula upgrade will update a bacula database from version 6 to 7."
+               echo "You appear to be running database version $DB_VER. You must first update"
+               echo "your database to version 6 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 6 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 %{working_dir}/bacula.db | tail -n 1 2>/dev/null`
+       # check to see if we need to upgrade a 1.32 or lower database
+       if [ "$DB_VER" -lt "7" ]; then
+               echo "This release requires an upgrade to your bacula database."
+               echo "Backing up your current database..."
+               echo ".dump" | %{sqlite_bindir}/sqlite %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+               echo "Upgrading bacula database ..."
+               /etc/bacula/update_sqlite_tables
+               echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+       fi
+else
+       # create the database and tables
+       echo "Hmm, doesn't look like you have an existing database."
+       echo "Creating SQLite database..."
+       /etc/bacula/create_sqlite_database
+       echo "Creating the SQLite tables..."
+       /etc/bacula/make_sqlite_tables
+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
 
-# add execute permission for console
-chmod 0755 /usr/sbin/gnome-console
+%endif
 
-# create the tables
-/etc/bacula/make_sqlite_tables
+%if %{postgresql}
 
-%preun sqlite-%{rh_version}
+%files postgresql
+%defattr(-,root,root)
+
+/etc/bacula/bacula
+/etc/bacula/bconsole
+/etc/bacula/fd
+/etc/bacula/gconsole
+/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/init.d/bacula-dir
+/etc/init.d/bacula-fd
+/etc/init.d/bacula-sd
+
+%doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
+/usr/man/man1/*
+/usr/share/pixmaps/bacula.png
+/usr/share/gnome/apps/System/bacula.desktop
+/usr/share/applications/bacula.desktop
+%config(noreplace) /etc/bacula/gnome-console.conf
+/etc/logrotate.d/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
+/etc/bacula/query.sql
+%dir %{working_dir}
+
+/usr/sbin/*
+/etc/bacula/btraceback.gdb
+
+%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 | tail -3 | head -1 2>/dev/null`
+
+# grant privileges and create tables if they do not exist
+if [ -z "$DB_VER" ]; then
+       echo "Hmm, doesn't look like you have an existing database."
+       echo "Granting privileges for PostgreSQL user bacula..."
+       /etc/bacula/grant_postgresql_privileges
+       echo "Creating PostgreSQL bacula database..."
+       /etc/bacula/create_postgresql_database
+       echo "Creating bacula tables..."
+       /etc/bacula/make_postgresql_tables
+
+%preun postgresql
 # delete our links
+if [ $1 = 0 ]; then
 /sbin/chkconfig --del bacula-dir
 /sbin/chkconfig --del bacula-fd
 /sbin/chkconfig --del bacula-sd
+fi
 
 %endif
 
-%files client-%{rh_version}
+%files client
 %defattr(-,root,root)
 
-%attr(0754,root,root) /etc/bacula/fd
-%attr(0754,root,root) /etc/rc.d/init.d/bacula-fd
+/etc/bacula/fd
+/etc/bacula/bconsole
+/etc/init.d/bacula-fd
 
-%attr(0644,root,root) %doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
-%attr(0644,root,root) /etc/logrotate.d/bacula
+%doc COPYING ChangeLog INSTALL README ReleaseNotes doc/*
+/etc/logrotate.d/bacula
 
-%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-fd.conf
-%attr(0640,root,root) %dir /var/bacula
+%config(noreplace) /etc/bacula/bacula-fd.conf
+%config(noreplace) /etc/bacula/bconsole.conf
+%dir %{working_dir}
 
-%attr(0750,root,root) /usr/sbin/bacula-fd
-%attr(0750,root,root) /usr/sbin/btraceback
-%attr(0750,root,root) /usr/sbin/btraceback.gdb
-%attr(0750,root,root) /usr/sbin/smtp
+/usr/sbin/bacula-fd
+/usr/sbin/btraceback
+/etc/bacula/btraceback.gdb
+/usr/sbin/bsmtp
+/usr/sbin/bconsole
 
 
-%post client-%{rh_version}
-# delete then add our links
-/sbin/chkconfig --del bacula-fd
+%post client
+# add our link
+if [ "$1" -ge 1 ] ; then
 /sbin/chkconfig --add bacula-fd
+fi
 
-%preun client-%{rh_version}
-# delete our links
+%preun client
+# delete our link
+if [ $1 = 0 ]; then
 /sbin/chkconfig --del bacula-fd
+fi
+
+%files rescue
+%defattr(-,root,root)
+/etc/bacula/rescue/backup.etc.list
+/etc/bacula/rescue/format_floppy
+/etc/bacula/rescue/getdiskinfo
+/etc/bacula/rescue/make_rescue_disk
+/etc/bacula/rescue/restore_bacula
+/etc/bacula/rescue/restore_etc
+/etc/bacula/rescue/run_grub
+/etc/bacula/rescue/run_lilo
+/etc/bacula/rescue/sfdisk.bz2
+/etc/bacula/rescue/bacula-fd
+/etc/bacula/rescue/tomsrtbt/*
+
+%post rescue
+# link our current installed conf file to the rescue directory
+ln -s /etc/bacula-fd.conf /etc/bacula/rescue/bacula-fd.conf
+
+# run getdiskinfo
+echo "Creating rescue files for this system..."
+cd /etc/bacula/rescue
+./getdiskinfo
+
+%preun rescue
+# remove the files created after the initial rpm installation
+rm -f /etc/bacula/rescue/bacula-fd.conf
+rm -f /etc/bacula/rescue/partition.*
+rm -f /etc/bacula/rescue/format.*
+rm -f /etc/bacula/rescue/mount_drives
+rm -f /etc/bacula/rescue/start_network
+rm -f /etc/bacula/rescue/sfdisk
+rm -rf /etc/bacula/rescue/diskinfo/*
+
+%files updatedb
+%defattr(-,root,root)
+/etc/bacula/updatedb/*
+
+%post updatedb
+echo "The database update scripts were installed to /etc/bacula/updatedb"
+
+%files gconsole
+%defattr(-,root,root)
+/usr/sbin/gnome-console
+/etc/bacula/gconsole
+%config(noreplace) /etc/bacula/gnome-console.conf
+/usr/share/pixmaps/bacula.png
+/usr/share/gnome/apps/System/bacula.desktop
+/usr/share/applications/bacula.desktop
+
+%post gconsole
+
 
 %changelog
+* Mon Mar 1 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- replaced all cp commands with cp -p
+- removed addition of a+x permissions on gnome-console
+* Sat Feb 28 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- corrected creation of sqlite_bindir in install from !mysql to sqlite
+-
+- various cleanup patches from Michael K. Johnson:
+- corrected post install routines for nicer chkconfig
+- removed chmod changes in post routines and moved to install section
+- removed interactive nature of post routine for rescue package
+- added description of building rescue disks to the description of rescue package
+- added clean of build root to beginning of install
+- removed specifying attr in all file lists
+* Fri Feb 20 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added bconsole to client package
+- added gconsole package as add-on to client
+- removed spurious dependancies on updatedb package (!cut/paste)
+* Thu Feb 19 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added updatedb package
+* Thu Feb 12 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added postgresql package
+* Wed Feb 11 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- corrected the if else logic in the dependancy sections
+- changes for 1.34 release
+- /etc/bacula/console is now /etc/bacula/bconsole
+- /etc/bacula/console.conf is now /etc/bacula/bconsole.conf
+- /usr/sbin/btraceback.gdb is now /etc/bacula/btraceback.gdb
+- /usr/sbin/smtp is now /usr/sbin/bsmtp
+- added new /etc/bacula/drop_mysql_database
+- added new /etc/bacula/drop_sqlite_database
+- added new /etc/bacula/grant_sqlite_privileges
+- added new generic bacula database scripts in /etc/bacula
+- added pre-install sections to check for database versions older than 6
+- added check for /etc/bacula/console.conf and copy to bconsole.conf
+* Sun Feb 08 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added /etc/bacula/update_sqlite_tables and /etc/bacula/update_mysql_tables for 1.34 release
+- added testing for existing databases before executing any of the database creation scripts
+- added defines working_dir and sqlite_bindir in place of hard coded paths
+* Sat Jan 31 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added build configuration for SuSE.
+- Thanks to Matt Vollmar <matt at panamschool.edu.sv> for his input
+* Sat Jan 24 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added patch for create_sqlite_database to fix the installed bindir
+- added execute of create_sqlite_database to post of sqlite package
+* Sat Jan 10 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- added virtual package Provides bacula-dir, bacula-sd, bacula-fd
+- added bacula-fd as Requires for rescue package
+- added build tag for Fedora Core 1
+- cleaned up dependancies for all builds
+* Thu Jan 1 2004 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- removed rh_version from package names
+- added platform build configuration section to beginning of file
+* Tue Nov 25 2003 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- removed make_static_bacula script from rescue package install
+* Sun Nov 23 2003 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- Added define at top of file for depkgs version
+- Added rescue sub-package
+- Moved requires statements into proper sub-package locations
+* Mon Oct 27 2003 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- Corrected Requires for Gnome 1.4/2.0 builds
+* Fri Oct 24 2003 D. Scott Barninger <barninger at fairfieldcomputers.com>
+- Added separate source declaration for depkgs
+- added patch for make_catalog_backup script
 * Mon May 11 2003 D. Scott Barninger <barninger at fairfieldcomputers.com>
 - Misc changes to mysql/sqlite build and rh7/8 menu differences
 - Added rh_version to sub-package names