%define depkgs ../depkgs
%define depkgs_version 24Jul03
%define tomsrtbt tomsrtbt-2.0.103
+%define sqlite_bindir /usr/lib/sqlite
+%define working_dir /var/bacula
# platform defines - set one below or define the build_xxx on the command line
# RedHat builds
BuildRequires: ORBit-devel
BuildRequires: bonobo-devel
BuildRequires: GConf-devel
-%else if %{su9}
+%endif
+%if %{su9}
BuildRequires: termcap
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: bonobo-activation-devel
BuildRequires: gconf2-devel
BuildRequires: linc-devel
-%else
+%endif
+%if ! %{rh7} && ! %{su9}
BuildRequires: libtermcap-devel
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
Requires: bonobo
Requires: GConf
Requires: libtermcap
-%else if %{su9}
+%endif
+%if %{su9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
Requires: gconf2
Requires: linc
Requires: termcap
-%else
+%endif
+%if ! %{rh7} && ! %{su9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
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 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 \
%else
--with-sqlite=${cwd}/../depkgs/sqlite \
%endif
- --with-working-dir=/var/bacula \
+ --with-working-dir=%{working_dir} \
--with-pid-dir=/var/run \
--with-subsys-dir=/var/lock/subsys
make
mkdir -p $RPM_BUILD_ROOT/etc/bacula/rescue/tomsrtbt
%if ! %{mysql}
-mkdir -p $RPM_BUILD_ROOT/usr/lib/sqlite
+mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
%endif
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}
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}
# 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
+cp ../depkgs/sqlite/sqlite $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite
+cp ../depkgs/sqlite/sqlite.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite.h
+cp ../depkgs/sqlite/libsqlite.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite.a
%endif
# install the logrotate file
%defattr(-,root,root)
%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
+%attr(0754,root,root) /etc/bacula/bconsole
%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_database
+%attr(0754,root,root) /etc/bacula/make_mysql_tables
%attr(0754,root,root) /etc/bacula/drop_mysql_tables
+%attr(0754,root,root) /etc/bacula/update_mysql_tables
+%attr(0754,root,root) /etc/bacula/grant_mysql_privileges
+%attr(0754,root,root) /etc/bacula/create_bacula_database
+%attr(0754,root,root) /etc/bacula/drop_bacula_database
+%attr(0754,root,root) /etc/bacula/grant_bacula_privileges
%attr(0754,root,root) /etc/bacula/make_bacula_tables
+%attr(0754,root,root) /etc/bacula/drop_bacula_tables
+%attr(0754,root,root) /etc/bacula/update_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/delete_catalog_backup
%attr(0754,root,root) /etc/bacula/startmysql
%attr(0754,root,root) /etc/bacula/stopmysql
%attr(0754,root,root) /etc/bacula/mtx-changer
%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) %config(noreplace) /etc/bacula/bconsole.conf
%attr(0640,root,root) /etc/bacula/query.sql
-%attr(0640,root,root) %dir /var/bacula
+%attr(0640,root,root) %dir %{working_dir}
%attr(0750,root,root) /usr/sbin/*
+%attr(0750,root,root) /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 /etc/bacula/console.conf /etc/bacula/bconsole.conf
+fi
%post mysql
# delete then add our links
# 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
+# 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
%defattr(-,root,root)
%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
+%attr(0754,root,root) /etc/bacula/bconsole
%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/create_bacula_database
+%attr(0754,root,root) /etc/bacula/drop_bacula_database
+%attr(0754,root,root) /etc/bacula/grant_bacula_privileges
+%attr(0754,root,root) /etc/bacula/make_bacula_tables
%attr(0754,root,root) /etc/bacula/drop_bacula_tables
+%attr(0754,root,root) /etc/bacula/update_bacula_tables
+%attr(0754,root,root) /etc/bacula/create_sqlite_database
+%attr(0754,root,root) /etc/bacula/drop_sqlite_database
+%attr(0754,root,root) /etc/bacula/grant_sqlite_privileges
+%attr(0754,root,root) /etc/bacula/make_sqlite_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/update_sqlite_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/delete_catalog_backup
%attr(0754,root,root) /etc/bacula/mtx-changer
%attr(0754,root,root) /etc/init.d/bacula-dir
%attr(0754,root,root) /etc/init.d/bacula-fd
%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) %config(noreplace) /etc/bacula/bconsole.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(0640,root,root) %{sqlite_bindir}/libsqlite.a
+%attr(0640,root,root) %{sqlite_bindir}/sqlite.h
+%attr(0640,root,root) %dir %{working_dir}
%attr(0750,root,root) /usr/sbin/*
-%attr(0750,root,root) /usr/lib/sqlite/sqlite
+%attr(0750,root,root) %{sqlite_bindir}/sqlite
+%attr(0750,root,root) /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 /etc/bacula/console.conf /etc/bacula/bconsole.conf
+fi
%post sqlite
# delete then add our links
# add execute permission for console
chmod 0755 /usr/sbin/gnome-console
-# create the database and tables
-echo "Creating SQLite database..."
-/etc/bacula/create_sqlite_database
-echo "Creating the SQLite tables..."
-/etc/bacula/make_sqlite_tables
+# 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
%attr(0644,root,root) /etc/logrotate.d/bacula
%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-fd.conf
-%attr(0640,root,root) %dir /var/bacula
+%attr(0640,root,root) %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
+%attr(0750,root,root) /etc/bacula/btraceback.gdb
+%attr(0750,root,root) /usr/sbin/bsmtp
%post client
rm -rf /etc/bacula/rescue/diskinfo/*
%changelog
+* 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
%define depkgs ../depkgs
%define depkgs_version 24Jul03
%define tomsrtbt tomsrtbt-2.0.103
+%define sqlite_bindir /usr/lib/sqlite
+%define working_dir /var/bacula
# platform defines - set one below or define the build_xxx on the command line
# RedHat builds
BuildRequires: ORBit-devel
BuildRequires: bonobo-devel
BuildRequires: GConf-devel
-%else if %{su9}
+%endif
+%if %{su9}
BuildRequires: termcap
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
BuildRequires: bonobo-activation-devel
BuildRequires: gconf2-devel
BuildRequires: linc-devel
-%else
+%endif
+%if ! %{rh7} && ! %{su9}
BuildRequires: libtermcap-devel
BuildRequires: gtk2-devel >= 2.0
BuildRequires: libgnomeui-devel >= 2.0
Requires: bonobo
Requires: GConf
Requires: libtermcap
-%else if %{su9}
+%endif
+%if %{su9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
Requires: gconf2
Requires: linc
Requires: termcap
-%else
+%endif
+%if ! %{rh7} && ! %{su9}
Requires: gtk2 >= 2.0
Requires: libgnomeui >= 2.0
Requires: glibc >= 2.3
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 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 \
%else
--with-sqlite=${cwd}/../depkgs/sqlite \
%endif
- --with-working-dir=/var/bacula \
+ --with-working-dir=%{working_dir} \
--with-pid-dir=/var/run \
--with-subsys-dir=/var/lock/subsys
make
mkdir -p $RPM_BUILD_ROOT/etc/bacula/rescue/tomsrtbt
%if ! %{mysql}
-mkdir -p $RPM_BUILD_ROOT/usr/lib/sqlite
+mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
%endif
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}
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}
# 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
+cp ../depkgs/sqlite/sqlite $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite
+cp ../depkgs/sqlite/sqlite.h $RPM_BUILD_ROOT%{sqlite_bindir}/sqlite.h
+cp ../depkgs/sqlite/libsqlite.a $RPM_BUILD_ROOT%{sqlite_bindir}/libsqlite.a
%endif
# install the logrotate file
%defattr(-,root,root)
%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
+%attr(0754,root,root) /etc/bacula/bconsole
%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_database
+%attr(0754,root,root) /etc/bacula/make_mysql_tables
%attr(0754,root,root) /etc/bacula/drop_mysql_tables
+%attr(0754,root,root) /etc/bacula/update_mysql_tables
+%attr(0754,root,root) /etc/bacula/grant_mysql_privileges
+%attr(0754,root,root) /etc/bacula/create_bacula_database
+%attr(0754,root,root) /etc/bacula/drop_bacula_database
+%attr(0754,root,root) /etc/bacula/grant_bacula_privileges
%attr(0754,root,root) /etc/bacula/make_bacula_tables
+%attr(0754,root,root) /etc/bacula/drop_bacula_tables
+%attr(0754,root,root) /etc/bacula/update_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/delete_catalog_backup
%attr(0754,root,root) /etc/bacula/startmysql
%attr(0754,root,root) /etc/bacula/stopmysql
%attr(0754,root,root) /etc/bacula/mtx-changer
%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) %config(noreplace) /etc/bacula/bconsole.conf
%attr(0640,root,root) /etc/bacula/query.sql
-%attr(0640,root,root) %dir /var/bacula
+%attr(0640,root,root) %dir %{working_dir}
%attr(0750,root,root) /usr/sbin/*
+%attr(0750,root,root) /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 /etc/bacula/console.conf /etc/bacula/bconsole.conf
+fi
%post mysql
# delete then add our links
# 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
+# 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
%defattr(-,root,root)
%attr(0754,root,root) /etc/bacula/bacula
-%attr(0754,root,root) /etc/bacula/console
+%attr(0754,root,root) /etc/bacula/bconsole
%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/create_bacula_database
+%attr(0754,root,root) /etc/bacula/drop_bacula_database
+%attr(0754,root,root) /etc/bacula/grant_bacula_privileges
+%attr(0754,root,root) /etc/bacula/make_bacula_tables
%attr(0754,root,root) /etc/bacula/drop_bacula_tables
+%attr(0754,root,root) /etc/bacula/update_bacula_tables
+%attr(0754,root,root) /etc/bacula/create_sqlite_database
+%attr(0754,root,root) /etc/bacula/drop_sqlite_database
+%attr(0754,root,root) /etc/bacula/grant_sqlite_privileges
+%attr(0754,root,root) /etc/bacula/make_sqlite_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/update_sqlite_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/delete_catalog_backup
%attr(0754,root,root) /etc/bacula/mtx-changer
%attr(0754,root,root) /etc/init.d/bacula-dir
%attr(0754,root,root) /etc/init.d/bacula-fd
%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) %config(noreplace) /etc/bacula/bconsole.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(0640,root,root) %{sqlite_bindir}/libsqlite.a
+%attr(0640,root,root) %{sqlite_bindir}/sqlite.h
+%attr(0640,root,root) %dir %{working_dir}
%attr(0750,root,root) /usr/sbin/*
-%attr(0750,root,root) /usr/lib/sqlite/sqlite
+%attr(0750,root,root) %{sqlite_bindir}/sqlite
+%attr(0750,root,root) /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 /etc/bacula/console.conf /etc/bacula/bconsole.conf
+fi
%post sqlite
# delete then add our links
# add execute permission for console
chmod 0755 /usr/sbin/gnome-console
-# create the database and tables
-echo "Creating SQLite database..."
-/etc/bacula/create_sqlite_database
-echo "Creating the SQLite tables..."
-/etc/bacula/make_sqlite_tables
+# 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
%attr(0644,root,root) /etc/logrotate.d/bacula
%attr(0640,root,root) %config(noreplace) /etc/bacula/bacula-fd.conf
-%attr(0640,root,root) %dir /var/bacula
+%attr(0640,root,root) %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
+%attr(0750,root,root) /etc/bacula/btraceback.gdb
+%attr(0750,root,root) /usr/sbin/bsmtp
%post client
rm -rf /etc/bacula/rescue/diskinfo/*
%changelog
+* 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
< echo ".dump" | @SQL_BINDIR@/sqlite bacula.db >bacula.sql
---
> echo ".dump" | /usr/lib/sqlite/sqlite bacula.db >bacula.sql
-11c11
-< @SQL_BINDIR@/mysqldump $* -f --opt bacula >bacula.sql
+12c12
+< @SQL_BINDIR@/mysqldump $* -f --opt bacula >bacula.sql
---
-> /usr/bin/mysqldump $* -f --opt bacula >bacula.sql
-16c16
+> /usr/bin/mysqldump $* -f --opt bacula >bacula.sql
+14c14
+< @SQL_BINDIR@/pg_dump $* bacula >bacula.sql
+---
+> /usr/bin/pg_dump $* bacula >bacula.sql
+20c20
< # rm -f @SQL_BINDIR@/../var/bacula/*
---
> # rm -f /var/lib/mysql/bacula/*
-22c22
-< # sqlite bacula.db <bacula.sql
----
-> # /usr/lib/sqlite/sqlite bacula.db <bacula.sql