Author: arekm                        Date: Sat Nov 24 19:03:57 2007 GMT
Module: SPECS                         Tag: HEAD
---- Log message:
- post dir procedure is +- safe for sqlite/sqlite3 only

---- Files affected:
SPECS:
   bacula.spec (1.77 -> 1.78) 

---- Diffs:

================================================================
Index: SPECS/bacula.spec
diff -u SPECS/bacula.spec:1.77 SPECS/bacula.spec:1.78
--- SPECS/bacula.spec:1.77      Sat Nov 24 19:16:45 2007
+++ SPECS/bacula.spec   Sat Nov 24 20:03:51 2007
@@ -589,47 +589,43 @@
 
 %post dir
 umask 077
+
+# XXX: Most of this upgrade procedure is safe for sqlite only. Other databases 
would require knowledge
+#      about currently used version so we can't easily support these :(
+
+if %{with sqlite} || %{with sqlite3}
 [ -s %{_localstatedir}/bacula.db ] && \
        DB_VER=`echo "select * from Version;" | \
        %{_bindir}/sqlite%{?with_sqlite3:3} %{_localstatedir}/bacula.db | tail 
-n 1 2>/dev/null`
+
 if [ -z "$DB_VER" ]; then
 # grant privileges and create tables
        %{_libexecdir}/%{name}/grant_bacula_privileges > dev/null
        %{_libexecdir}/%{name}/create_bacula_database > dev/null
        %{_libexecdir}/%{name}/make_bacula_tables > dev/null
-elif [ "$DB_VER" -lt "9" ]; then
+else
        echo "Backing up bacula tables"
        echo ".dump" | sqlite%{?with_sqlite3:3} %{_localstatedir}/bacula.db | 
bzip2 > %{_localstatedir}/bacula_backup.sql.bz2
-       echo "Upgrading bacula tables"
-       %if %{with sqlite3}
-               type=sqlite3
-               if [ "$DB_VER" -lt "9" ]; then
-                       %{_libexecdir}/%{name}/update_${type}_tables_8_to_9
-               fi
-       %endif
-       %if %{with sqlite}
-               type=sqlite
-               if [ "$DB_VER" -lt "9" ]; then
-                       if [ "$DB_VER" -lt "8" ]; then
-                               if [ "$DB_VER" -lt "7" ]; then
-                                       if [ "$DB_VER" -lt "6" ]; then
-                                               if [ "$DB_VER" -lt "5" ]; then
-                                                       
%{_libexecdir}/%{name}/update_${type}_tables_4_to_5
-                                               fi
-                                               
%{_libexecdir}/%{name}/update_${type}_tables_5_to_6
-                                       fi
-                                       
%{_libexecdir}/%{name}/update_${type}_tables_6_to_7
-                               fi
-                               
%{_libexecdir}/%{name}/update_${type}_tables_7_to_8
-                       fi
-                       %{_libexecdir}/%{name}/update_${type}_tables_8_to_9
+
+       db_type="%{_database}"
+
+       next_ver=$(($DB_VER + 1))
+       # support up to version 30; increase this if needed
+       for ver in $(seq $next_ver 30); do
+               prev_ver=$(($ver - 1))
+
+               if [ -x 
%{_libexecdir}/%{name}/update_${type}_tables_${prev_ver}_to_${ver} ]; then
+                       echo "Upgrading bacula database: db=${db_type} from 
${prev_ver} to ${ver}..."
+                       
%{_libexecdir}/%{name}/update_${type}_tables_${prev_ver}_to_${ver}
                fi
-       %endif
+       done
+
        %{_libexecdir}/%{name}/update_bacula_tables
        echo "If bacula works correctly you can remove the backup file 
%{_localstatedir}/bacula_backup.sql.bz2"
 fi
 chown -R bacula:bacula %{_localstatedir}
 chmod -R u+rX,go-rwx %{_localstatedir}/*
+%endif
 
 echo "Updating Bacula passwords and names..."
 cd /etc/bacula
@@ -933,6 +929,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.78  2007-11-24 19:03:51  arekm
+- post dir procedure is +- safe for sqlite/sqlite3 only
+
 Revision 1.77  2007-11-24 18:16:45  arekm
 - rel 2; switch to mysql (it's recommended for serious tasks); fix 
mysql/wxwidgets detection; enable batch-insert
 
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SPECS/bacula.spec?r1=1.77&r2=1.78&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to