%define _sbindir /opt/bacula/bin
%define _bindir /opt/bacula/bin
%define _subsysdir /opt/bacula/working
-%define sqlite_bindir /opt/bacula/sqlite
%define _mandir /usr/share/man
%define sysconf_dir /opt/bacula/etc
%define script_dir /opt/bacula/scripts
%define _sbindir %_prefix/sbin
%define _bindir %_prefix/bin
%define _subsysdir /var/lock/subsys
-%define sqlite_bindir %_libdir/bacula/sqlite
%define _mandir %_prefix/share/man
%define sysconf_dir /etc/bacula
%define script_dir %_libdir/bacula
# choose database backend here
# postgres, mysql, sqlite
-%define build_postgresql 1
+%define build_mysql 1
# Build Service: Determine Distribution
Prefix: %{_prefix}
Source0: http://www.prdownloads.sourceforge.net/bacula/%{name}-%{version}.tar.gz
+# opensuse build service changes the release itself
+%if 0%{?opensuse_bs}
+Source1: Release_Notes-%{version}-1.tar.gz
+%else
Source1: Release_Notes-%{version}-%{release}.tar.gz
+%endif
Source2: bacula-2.2.7-postgresql.patch
# define the basic package description
%define scil 1
%endif
+
# test for a platform definition
%if !%{rhat} && !%{rhel} && !%{fed} && !%{wb3} && !%{suse} && !%{mdk}
%{error: You must specify a platform. Please examine the spec file.}
%define _dist %(grep Mand /etc/mandrake-release)
%endif
%{?DISTNAME:%define _dist %{DISTNAME}}
+
+# only set Disribution if not in opensuse build service, as it sets it itself
+%if ! 0%{?opensuse_bs}
+%{?DISTNAME:%define _dist %{DISTNAME}}
Distribution: %{_dist}
+%endif
+
+%if 0%{?opensuse_bs} && %{mysql} && %{suse}
+# needed in opensuse_bs, as rpm is installed during build process
+BuildRequires: libmysqlclient-devel
+BuildRequires: mysql-client
+BuildRequires: mysql
+%endif
+%if 0%{?opensuse_bs} && %{suse} && %{postgresql}
+BuildRequires: postgresql
+BuildRequires: postgresql-server
+%endif
+BuildRequires: openssl
+
+%if 0%{?opensuse_bs} && %{suse}
+BuildRequires: pwdutils
+BuildRequires: sysconfig
+%endif
# should we turn on python support
%define python 0
BuildRequires: libtermcap-devel
%endif
%if !%{rh7} && !%{su9} && !%{su10} && !%{su102} && !%{su103} && !%{su110} && !%{su111} && !%{mdk} && !%{fc3} && !%{fc4} && !%{fc5} && !%{fc6} && !%{fc7} && !%{fc8} && !%{fc9}
-BuildRequires: libtermcap-devel
-%endif
-
-%if %{sqlite}
-BuildRequires: sqlite-devel
+#BuildRequires: libtermcap-devel
%endif
-%if %{mysql} && ! %{mysql4} && ! %{mysql5}
-BuildRequires: mysql-devel >= 3.23
+%if %{sqlite} && %{su10}
+BuildRequires: sqlite2-devel
%endif
-
-%if %{mysql} && %{mysql4}
-BuildRequires: mysql-devel >= 4.0
+%if %{sqlite} && ! %{su10}
+BuildRequires: sqlite-devel
%endif
-%if %{mysql} && %{mysql5}
-BuildRequires: mysql-devel >= 5.0
+%if %{mysql}
+BuildRequires: mysql-devel
%endif
%if %{postgresql} && %{wb3}
This package installs the Bacula pdf and html documentation.
# Must explicitly enable debug pkg on SuSE
+# but not in opensuse_bs
+%if ! 0%{?opensuse_bs}
%if %{suse}
%debug_package
export LDFLAGS="${LDFLAGS} -L/usr/lib/termcap"
%endif
+%endif
%prep
%setup
%setup -T -D -b 1
-%setup -T -D -b 2
+#%setup -T -D -b 2
%build
# patch the make_sqlite_tables script for installation bindir
#patch src/cats/make_sqlite_tables.in src/cats/make_sqlite_tables.in.patch
-patch src/cats/make_sqlite3_tables.in src/cats/make_sqlite3_tables.in.patch
+#patch src/cats/make_sqlite3_tables.in src/cats/make_sqlite3_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 src/cats/create_sqlite3_database.in src/cats/create_sqlite3_database.in.patch
+#patch src/cats/create_sqlite3_database.in src/cats/create_sqlite3_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 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
-patch src/cats/update_sqlite3_tables.in src/cats/update_sqlite3_tables.in.patch
+#patch src/cats/update_sqlite3_tables.in src/cats/update_sqlite3_tables.in.patch
# patch the bacula-dir init script to remove sqlite service
%if %{sqlite} && %{su9}
--with-mysql \
%endif
%if %{sqlite}
+%if %{su9} || %{su10}
+ --with-sqlite \
+%else
--with-sqlite3 \
%endif
+%endif # sqlite?
%if %{postgresql}
--with-postgresql \
%endif
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
#mkdir -p $RPM_BUILD_ROOT%{_bindir}
-%if %{sqlite}
-mkdir -p $RPM_BUILD_ROOT%{sqlite_bindir}
-%endif
-
make DESTDIR=$RPM_BUILD_ROOT install
%if %{client_only}
# fixme - make installs the mysql scripts for sqlite build
%if %{sqlite}
+rm -f $RPM_BUILD_ROOT%{script_dir}/startmysql
rm -f $RPM_BUILD_ROOT%{script_dir}/stopmysql
rm -f $RPM_BUILD_ROOT%{script_dir}/grant_mysql_privileges
%endif
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
+%if 0%{?opensuse_bs}
+rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-1.txt
+%else
rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt
+%endif
+
%if %{mysql}
# MySQL specific files
%endif
%if %{sqlite}
+%if %{su9} || %{su10}
+# use sqlite2 on SLE_10 and SLES9
+%files sqlite
+%defattr(-,root,root)
+%attr(-, root, %{daemon_group}) %{script_dir}/create_sqlite_database
+%attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite_database
+%attr(-, root, %{daemon_group}) %{script_dir}/grant_sqlite_privileges
+%attr(-, root, %{daemon_group}) %{script_dir}/make_sqlite_tables
+%attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite_tables
+%attr(-, root, %{daemon_group}) %{script_dir}/update_sqlite_tables
+%else
%files sqlite
%defattr(-,root,root)
%attr(-, root, %{daemon_group}) %{script_dir}/create_sqlite3_database
%attr(-, root, %{daemon_group}) %{script_dir}/make_sqlite3_tables
%attr(-, root, %{daemon_group}) %{script_dir}/drop_sqlite3_tables
%attr(-, root, %{daemon_group}) %{script_dir}/update_sqlite3_tables
-%{sqlite_bindir}/libsqlite3.a
-%{sqlite_bindir}/sqlite3.h
-%{sqlite_bindir}/sqlite3
+%endif # sqlite?
%endif
+
+
%if %{postgresql}
%files postgresql
%defattr(-,root,root)
%attr(-, root, %{daemon_group}) %{script_dir}/drop_postgresql_tables
%attr(-, root, %{daemon_group}) %{script_dir}/update_postgresql_tables
%attr(-, root, %{daemon_group}) %{script_dir}/grant_postgresql_privileges
+# The rest is DB backend independent
%endif
+# opensuse_bs: directories not owned by any package
+/etc/bacula
+/etc/log.d
+/etc/log.d/conf
+/etc/log.d/conf/logfiles
+/etc/log.d/conf/services
+/etc/log.d/scripts
+/etc/log.d/scripts/services
-# The rest is DB backend independent
%if ! %{client_only}
%attr(-, root, %{daemon_group}) %dir %{script_dir}
%attr(-, root, %{daemon_group}) %{script_dir}/bacula
%if %{sqlite}
%pre sqlite
-# are we upgrading from sqlite to sqlite3?
-if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite ];then
- echo "This version of bacula-sqlite involves an upgrade to sqlite3."
- echo "Your catalog database file is not compatible with sqlite3, thus"
- echo "you will need to dump the data, delete the old file, and re-run"
- echo "this rpm upgrade."
- echo ""
- echo "Backing up your current database..."
- echo ".dump" | %{sqlite_bindir}/sqlite %{working_dir}/bacula.db > %{working_dir}/bacula_backup.sql
- mv %{working_dir}/bacula.db %{working_dir}/bacula.db.old
- echo "Your catalog data has been saved in %{working_dir}/bacula_backup.sql and your"
- echo "catalog file has been renamed %{working_dir}/bacula.db.old."
- echo ""
- echo "Please re-run this rpm package upgrade."
- echo "After the upgrade is complete, restore your catalog"
- echo "with the following commands:"
- echo "%{script_dir}/drop_sqlite3_tables"
- echo "cd %{working_dir}"
- echo "%{sqlite_bindir}/sqlite3 $* bacula.db < bacula_backup.sql"
- echo "chown bacula.bacula bacula.db"
- exit 1
-fi
# test for bacula database older than version 10 and sqlite3
-if [ -s %{working_dir}/bacula.db ] && [ -s %{sqlite_bindir}/sqlite3 ];then
- DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
+if [ -s %{working_dir}/bacula.db ]; then
+ DB_VER=`echo "select * from Version;" | sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
+fi
%endif
%if %{postgresql}
fi
%endif
-%if %{sqlite}
-fi
-%endif
%if ! %{client_only}
# check for and copy %{sysconf_dir}/console.conf to bconsole.conf
%if %{postgresql}
%post postgresql
%endif
-
%if ! %{client_only}
# add our links
if [ "$1" -ge 1 ] ; then
+%if %{suse} && %{mysql}
+ /sbin/chkconfig --add mysql
+%endif
+%if %{suse} && %{postgresql}
+ /sbin/chkconfig --add postgresql
+%endif
/sbin/chkconfig --add bacula-dir
/sbin/chkconfig --add bacula-fd
/sbin/chkconfig --add bacula-sd
%endif
%if %{mysql}
+
+#check, if mysql can be called successfully at all
+if mysql 2>/dev/null bacula -e 'select * from Version;' ; then
+
# 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`
%{script_dir}/update_mysql_tables
echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+fi
fi
%endif
%if %{sqlite}
# test for an existing database
if [ -s %{working_dir}/bacula.db ]; then
- DB_VER=`echo "select * from Version;" | %{sqlite_bindir}/sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
+ DB_VER=`echo "select * from Version;" | sqlite3 2>/dev/null %{working_dir}/bacula.db | tail -n 1`
# check to see if we need to upgrade a 2.x database
if [ "$DB_VER" -lt "11" ] && [ "$DB_VER" -ge "10" ]; then
echo "This release requires an upgrade to your bacula database."
echo "Backing up your current database..."
- echo ".dump" | %{sqlite_bindir}/sqlite3 %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
+ echo ".dump" | sqlite3 %{working_dir}/bacula.db | bzip2 > %{working_dir}/bacula_backup.sql.bz2
echo "Upgrading bacula database ..."
%{script_dir}/update_sqlite3_tables
echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
%endif
%if %{postgresql}
+# check if psql can be called successfully at all
+if echo 'select * from Version;' | psql bacula 2>/dev/null; then
+
# 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`
%{script_dir}/update_postgresql_tables
echo "If bacula works correctly you can remove the backup file %{working_dir}/bacula_backup.sql.bz2"
+fi
fi
%endif
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
pass=`openssl rand -base64 33`
for file in *.conf; do
- need_password=`grep ${string} $file 2>/dev/null`
- if [ -n "$need_password" ]; then
- sed "s@${string}@${pass}@g" $file > $file.new
- cp -f $file.new $file; rm -f $file.new
- fi
+ sed "s@${string}@${pass}@g" $file > $file.new
+ cp -f $file.new $file; rm -f $file.new
done
done
# put actual hostname in conf file
host=`hostname`
string="XXX_HOSTNAME_XXX"
for file in *.conf; do
- need_host=`grep ${string} $file 2>/dev/null`
- if [ -n "$need_host" ]; then
- sed "s@${string}@${host}@g" $file >$file.new
- cp -f $file.new $file; rm -f $file.new
- fi
+ sed "s@${string}@${host}@g" $file >$file.new
+ cp -f $file.new $file; rm -f $file.new
done
fi
-/sbin/ldconfig
%endif
+/sbin/ldconfig
+exit 0 # always exit successfull, as otherwise opensuse build service complains
%if %{mysql}
%preun mysql
/sbin/chkconfig --del bacula-fd
/sbin/chkconfig --del bacula-sd
fi
+/sbin/ldconfig
%endif
+# added: run ldconfig in postun
%if %{mysql}
%postun mysql
-/sbin/ldconfig
%endif
%if %{sqlite}
%postun sqlite
-/sbin/ldconfig
%endif
%if %{postgresql}
%postun postgresql
-/sbin/ldconfig
%endif
+/sbin/ldconfig
%files client
%defattr(-,root,root)
%{_libdir}/libbacfind.*
%{_libdir}/libbacpy.*
/usr/share/doc/*
-
+#opensuse_bs: directories not owned by any package
+/etc/bacula
%pre client
# create the daemon group and user
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
pass=`openssl rand -base64 33`
for file in *.conf; do
- need_password=`grep ${string} $file 2>/dev/null`
- if [ -n "$need_password" ]; then
- sed "s@${string}@${pass}@g" $file > $file.new
- cp -f $file.new $file; rm -f $file.new
- fi
+ sed "s@${string}@${pass}@g" $file > $file.new
+ cp -f $file.new $file; rm -f $file.new
done
done
# put actual hostname in conf file
host=`hostname`
string="XXX_HOSTNAME_XXX"
for file in *.conf; do
- need_host=`grep ${string} $file 2>/dev/null`
- if [ -n "$need_host" ]; then
- sed "s@${string}@${host}@g" $file >$file.new
- cp -f $file.new $file; rm -f $file.new
- fi
+ sed "s@${string}@${host}@g" $file >$file.new
+ cp -f $file.new $file; rm -f $file.new
done
fi
/sbin/ldconfig
-
+exit 0
%preun client
# delete our link
if [ $1 = 0 ]; then
%files updatedb
%defattr(-,root,%{daemon_group})
%{script_dir}/updatedb/*
+#oensuse_bs: directories not owned by any package
+%{script_dir}/updatedb
%pre updatedb
# create the daemon group
%endif
%changelog
+* Mon Aug 10 2009 Philipp Storz <philipp.storz@dass-it.de>
+- changes to work with opensuse build service
* Sat Jun 20 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>
- Fix bat install which is now handled by make and uses shared libs
* Sat May 16 2009 D. Scott Barninger <barninger@fairfieldcomputers.com>