X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fplatforms%2Fredhat%2Fbacula.spec;h=1a6363a198f6433d04d530bbc9fa64117207010a;hb=206c03fd59bf724b977cc2ee9aea0f5afffae4d2;hp=7c5627420c0bfab02e0c354297c13e4fb3c0fe90;hpb=171caaa81ba61f4a4da042076fd81bf175cd9491;p=bacula%2Fbacula diff --git a/bacula/platforms/redhat/bacula.spec b/bacula/platforms/redhat/bacula.spec index 7c5627420c..1a6363a198 100644 --- a/bacula/platforms/redhat/bacula.spec +++ b/bacula/platforms/redhat/bacula.spec @@ -18,7 +18,6 @@ %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 @@ -31,7 +30,6 @@ %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 @@ -83,7 +81,7 @@ # choose database backend here # postgres, mysql, sqlite -%define build_postgresql 1 +%define build_mysql 1 # Build Service: Determine Distribution @@ -222,7 +220,12 @@ Packager: %{_packager} 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 @@ -347,6 +350,7 @@ Source2: bacula-2.2.7-postgresql.patch %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.} @@ -415,7 +419,29 @@ exit 1 %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 @@ -476,23 +502,18 @@ BuildRequires: glibc-static-devel 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} @@ -681,15 +702,18 @@ Group: System Environment/Daemons 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 @@ -701,18 +725,18 @@ patch -p3 src/cats/postgresql.c < %SOURCE5 # 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} @@ -772,8 +796,12 @@ export LDFLAGS="${LDFLAGS} -L/usr/lib64/python%{pyver}" --with-mysql \ %endif %if %{sqlite} +%if %{su9} || %{su10} + --with-sqlite \ +%else --with-sqlite3 \ %endif +%endif # sqlite? %if %{postgresql} --with-postgresql \ %endif @@ -819,10 +847,6 @@ mkdir -p $RPM_BUILD_ROOT/etc/pam.d 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} @@ -845,6 +869,7 @@ rm -f $RPM_BUILD_ROOT%{script_dir}/gconsole # 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 @@ -915,7 +940,12 @@ rm -f $RPM_BUILD_ROOT%{_sbindir}/bacula %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 @@ -932,6 +962,17 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt %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 @@ -940,11 +981,11 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt %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) @@ -954,9 +995,17 @@ rm -f $RPM_BUILD_DIR/Release_Notes-%{version}-%{release}.txt %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 @@ -1037,31 +1086,10 @@ DB_VER=`mysql 2>/dev/null bacula -e 'select * from Version;'|tail -n 1` %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} @@ -1081,9 +1109,6 @@ if [ -n "$DB_VER" ] && [ "$DB_VER" -lt "10" ]; then fi %endif -%if %{sqlite} -fi -%endif %if ! %{client_only} # check for and copy %{sysconf_dir}/console.conf to bconsole.conf @@ -1151,10 +1176,15 @@ fi %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 @@ -1162,6 +1192,10 @@ fi %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` @@ -1185,18 +1219,19 @@ elif [ "$DB_VER" -lt "11" ]; then %{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" @@ -1213,6 +1248,9 @@ fi %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` @@ -1236,6 +1274,7 @@ elif [ "$DB_VER" -lt "11" ]; then %{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 @@ -1245,26 +1284,21 @@ if [ -d %{sysconf_dir} ]; then 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 @@ -1283,20 +1317,20 @@ if [ $1 = 0 ]; then /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) @@ -1325,7 +1359,8 @@ fi %{_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 @@ -1361,27 +1396,21 @@ if [ -d %{sysconf_dir} ]; then 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 @@ -1395,6 +1424,8 @@ fi %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