[pkg-bacula-commits] [SCM] Bacula, a network backup, recovery and verification program branch, master, updated. debian/5.2.6+dfsg-6-21-gbbe70c0

Alexander Golovko alexandro at ankalagon.ru
Wed Jan 2 19:01:49 UTC 2013


The following commit has been merged in the master branch:
commit 58aa76be6ec3fed19f432930e4a0d830712b9861
Author: Alexander Golovko <alexandro at ankalagon.ru>
Date:   Thu Nov 8 11:48:24 2012 +0400

    switch delete_catalog_backup script under ucf control
    
    Backported commits:
      a4b9477a1578dc89938e788b07e5515e91cef997
      345e49e15c5ba64820c32cac4e34ea7faf6ccfd1
      94740d85b9082d25906f9e1c9b45ae528f8b9403
      e51cbd56c6519611ab29ffdd91925ce9861912ec
      d4a161e802503625895d0fad0bd4f996808310c7

diff --git a/debian/additions/common-functions.dpkg b/debian/additions/common-functions.dpkg
index 065566f..fee5916 100644
--- a/debian/additions/common-functions.dpkg
+++ b/debian/additions/common-functions.dpkg
@@ -44,6 +44,104 @@ EOF
 }
 
 
+
+#
+# Function for substitute variables into template
+# Usage: substitute <template> <output>
+#
+# will replace all occurance of XXX_var_XXX to value of environment variable `var'
+#
+
+substitute() {
+  local TEMPLATE DEST HOSTNAME SUBST_VARIABLES SEDCMD
+  TEMPLATE="$1"
+  DEST="$2"
+
+  HOSTNAME="${HOSTNAME:-`hostname --fqdn 2>/dev/null || hostname`}"
+
+  SUBST_VARIABLES="${SUBST_VARIABLES:-HOSTNAME DBNAME DBUSER DBPASS \
+    DIRPASSWD DIRMPASSWD SDPASSWD SDMPASSWD FDPASSWD FDMPASSWD}"
+
+  SEDCMD="sed"
+  for var in $SUBST_VARIABLES; do
+    value=$(eval echo "\$$var" |sed -e 's/[\/&]/\\&/g')
+    SEDCMD="$SEDCMD -e s/XXX_${var}_XXX/$value/g"
+  done
+
+  $SEDCMD "$TEMPLATE" >"$DEST"
+}
+
+
+
+#
+# Function for check if config already registered by the same package for 
+# other database type.
+# Usage: config_from_other_dbtype <package> <config>
+#
+
+config_from_other_dbtype() {
+  local PACKAGE CONFIG base_package_name regex
+  PACKAGE="$1"
+  CONFIG="$2"
+
+  base_package_name=$(echo "$PACKAGE" |sed -Ee 's/-(mysql|pgsql|sqlite3)$//')
+  regex="^$CONFIG:$base_package_name-(mysql|pgsql|sqlite3):"
+
+  ucfq -w "$CONFIG" |egrep -q "$regex"
+}
+
+
+
+#
+# Function for install config file from template
+# Usage: install_config <package> <config name> [ <template> ]
+#
+# use substitute() for generate config
+# use config_from_other_dbtype() for force reregister file with ucf
+# install and register generated file with ucf
+# 
+
+install_config() {
+  local PACKAGE CONFIG OLD_VERSION TEMPLATEa tempfile
+  PACKAGE="$1"
+  if [ $# -ge 3 ]; then
+    TEMPLATE="$2"
+    CONFIG="$3"
+  else
+    TEMPLATE="/usr/share/bacula-common/defconfig/$(basename '$CONFIG')"
+    CONFIG="$3"
+  fi
+  tempfile=`tempfile`
+
+
+  dpkg_conffile_md5sum="$(dpkg-query -W -f='${Conffiles}' \"$PACKAGE\" \
+    2>/dev/null |sed -ne "\' $CONFIG ' { s/ obsolete$//; s/.* //; p }")"
+
+  if [ -n "$dpkg_conffile_md5sum" ]; then
+    echo "$dpkg_conffile_md5sum default" >"$tempfile.md5sum"
+  fi
+
+  if [ -f "$TEMPLATE.md5sum" ]; then
+    cat "$TEMPLATE.md5sum" >>"$tempfile.md5sum"
+  fi
+
+
+  substitute "$TEMPLATE" "$tempfile"
+  ucf --debconf-ok --three-way "$tempfile" "$CONFIG"
+
+  # if config installed by the same package for other
+  # database type, we need force reregister it.
+  if config_from_other_dbtype "$PACKAGE" "$CONFIG"; then
+    ucfr -f "$PACKAGE" "$CONFIG"
+  else
+    ucfr "$PACKAGE" "$CONFIG"
+  fi
+
+  rm -f "$tempfile" "$tempfile.md5sum"
+}
+
+
+
 #
 # Function for setup /etc/default/*
 # Usage: call from postins script "setup_etc_default <package> $@"
diff --git a/debian/additions/sqlite3/delete_catalog_backup.md5sum b/debian/additions/sqlite3/delete_catalog_backup.md5sum
new file mode 100644
index 0000000..eddbd20
--- /dev/null
+++ b/debian/additions/sqlite3/delete_catalog_backup.md5sum
@@ -0,0 +1 @@
+4046822bde52b5b6926d33b20b7e7b07  5.2.6+dfsg-[2345]
diff --git a/debian/bacula-director-db.postrm.in b/debian/bacula-director-db.postrm.in
index af9608e..a51fab2 100644
--- a/debian/bacula-director-db.postrm.in
+++ b/debian/bacula-director-db.postrm.in
@@ -22,20 +22,28 @@ case "$1" in
 	purge)
 		rm -f $CONFFILE $CONFFILE.dist
 
-		# purge /etc/default/bacula-dir if there was not installed package
+
+    UCF_CONFIG_FILES="/etc/default/bacula-dir \
+      /etc/bacula/scripts/delete_catalog_backup"
+
+		# purge configs if there are no installed package
 		# for other database type
-		if ! which ucfq >/dev/null || ucfq -w "/etc/default/bacula-dir" \
-			|egrep -q "^[^:]*:bacula-director-$THISDB:"; 
-		then
-			rm -f /etc/default/bacula-dir /etc/default/bacula-dir.ucf-old \
-				/etc/default/bacula-dir.ucf-new /etc/default/bacula-dir.ucf-dist
+    for CONF in $UCF_CONFIG_FILES; do
+      if which ucfq >/dev/null && \
+        ! (ucfq -w "$CONF" |egrep -q "^$CONF:bacula-director-$THISDB:");
+      then
+        continue
+      fi
+
+			rm -f "$CONF" "$CONF.ucf-old" "$CONF.ucf-new" "$CONF.ucf-dist"
+
 			if which ucf >/dev/null; then
-				ucf --purge /etc/default/bacula-dir
+				ucf --purge "$CONF"
 			fi
 			if which ucfr >/dev/null; then
-				ucfr --purge bacula-director-$THISDB /etc/default/bacula-dir
+				ucfr --purge bacula-director-$THISDB "$CONF"
 			fi
-		fi
+		done
 	;;
 esac
 
diff --git a/debian/bacula-director-mysql.install b/debian/bacula-director-mysql.install
index 77fc949..66ece38 100644
--- a/debian/bacula-director-mysql.install
+++ b/debian/bacula-director-mysql.install
@@ -1,6 +1,7 @@
 etc/bacula/scripts/make_mysql_tables usr/share/bacula-director
 etc/bacula/scripts/update_mysql* usr/share/bacula-director
-etc/bacula/scripts/*catalog_backup
+etc/bacula/scripts/make_catalog_backup
+etc/bacula/scripts/delete_catalog_backup usr/share/bacula-common/defconfig/scripts
 etc/bacula/scripts/*catalog_backup.pl
 debian/additions/mysql/make_catalog_backup_awk      etc/bacula/scripts
 usr/sbin/bacula-dir
diff --git a/debian/bacula-director-mysql.postinst b/debian/bacula-director-mysql.postinst
index 59b4c65..f3fab5c 100644
--- a/debian/bacula-director-mysql.postinst
+++ b/debian/bacula-director-mysql.postinst
@@ -66,7 +66,14 @@ configure)
 	-e s~XXX_FDPASSWORD_XXX~$FDPASSWD~ \
 		$DEFCONFIG/bacula-dir.conf > $TARGET
 
-	sed -i -e "s/XXX_DBNAME_XXX/$dbc_dbname/" /etc/bacula/scripts/delete_catalog_backup
+
+  DBNAME="$dbc_dbname"
+  SUBST_VARIABLES=DBNAME
+  install_config \
+    bacula-director-mysql \
+    /usr/share/bacula-common/defconfig/scripts/delete_catalog_backup \
+    /etc/bacula/scripts/delete_catalog_backup
+
 
 	sh $POSTINST_COMMON
 
diff --git a/debian/bacula-director-pgsql.install b/debian/bacula-director-pgsql.install
index 5c7fdbd..7368210 100644
--- a/debian/bacula-director-pgsql.install
+++ b/debian/bacula-director-pgsql.install
@@ -1,7 +1,8 @@
 etc/bacula/scripts/make_postgresql_tables	usr/share/bacula-director
 etc/bacula/scripts/grant_postgresql_privileges usr/share/bacula-director
 etc/bacula/scripts/update_postgres* usr/share/bacula-director
-etc/bacula/scripts/*catalog_backup
+etc/bacula/scripts/make_catalog_backup
+etc/bacula/scripts/delete_catalog_backup usr/share/bacula-common/defconfig/scripts
 etc/bacula/scripts/*catalog_backup.pl
 debian/additions/pgsql/make_catalog_backup_awk      etc/bacula/scripts
 usr/sbin/bacula-dir
diff --git a/debian/bacula-director-pgsql.postinst b/debian/bacula-director-pgsql.postinst
index c6b7ef5..05b453b 100644
--- a/debian/bacula-director-pgsql.postinst
+++ b/debian/bacula-director-pgsql.postinst
@@ -75,7 +75,14 @@ configure)
                 $DEFCONFIG/bacula-dir.conf > $TARGET
         fi
 
-	sed -i -e "s/XXX_DBNAME_XXX/$dbc_dbname/" /etc/bacula/scripts/delete_catalog_backup
+
+  DBNAME="$dbc_dbname"
+  SUBST_VARIABLES=DBNAME
+  install_config \
+    bacula-director-pgsql \
+    /usr/share/bacula-common/defconfig/scripts/delete_catalog_backup \
+    /etc/bacula/scripts/delete_catalog_backup
+
 
 	sh $POSTINST_COMMON
 	echo "Ok."
diff --git a/debian/bacula-director-sqlite3.install b/debian/bacula-director-sqlite3.install
index b7ed49a..3f6b4eb 100644
--- a/debian/bacula-director-sqlite3.install
+++ b/debian/bacula-director-sqlite3.install
@@ -1,6 +1,8 @@
 etc/bacula/scripts/make_sqlite*tables usr/share/bacula-director
 etc/bacula/scripts/update_sqlite* usr/share/bacula-director
-etc/bacula/scripts/*catalog_backup
+etc/bacula/scripts/make_catalog_backup
+debian/additions/sqlite3/delete_catalog_backup.md5sum usr/share/bacula-common/defconfig/scripts
+etc/bacula/scripts/delete_catalog_backup usr/share/bacula-common/defconfig/scripts
 etc/bacula/scripts/*catalog_backup.pl
 debian/additions/sqlite3/make_catalog_backup_awk      etc/bacula/scripts
 usr/sbin/bacula-dir
diff --git a/debian/bacula-director-sqlite3.postinst b/debian/bacula-director-sqlite3.postinst
index e1feca1..87de84d 100644
--- a/debian/bacula-director-sqlite3.postinst
+++ b/debian/bacula-director-sqlite3.postinst
@@ -69,8 +69,15 @@ configure)
 		-e s~XXX_DBUSER_XXX~~ \
 		-e s~XXX_DBPASSWORD_XXX~~ \
 			$DEFCONFIG/bacula-dir.conf > $TARGET
-        
-	sed -i -e "s/XXX_DBNAME_XXX/$dbc_dbname/" /etc/bacula/scripts/delete_catalog_backup
+ 
+
+  DBNAME="$BACULADBNAME"
+  SUBST_VARIABLES=DBNAME
+  install_config \
+    bacula-director-sqlite3 \
+    /usr/share/bacula-common/defconfig/scripts/delete_catalog_backup \
+    /etc/bacula/scripts/delete_catalog_backup
+
 
 	sh $POSTINST_COMMON
 
diff --git a/debian/changelog b/debian/changelog
index 08dcdd8..745bdbe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -37,6 +37,10 @@ bacula (5.2.6+dfsg-2+deb7u1) testing; urgency=high
     + Fix bacula-fd crash on saving xattr on btrfs.
   * debian/patches/fix-save-only-one-xattr.patch, debian/patches/series:
     + Save all file xattrs, not only first (Closes: #688732).
+  * debian/bacula-director-*.{install,postinst},
+    debian/additions/sqlite3/delete_catalog_backup.md5sum,
+    debian/additions/common-functions.dpkg (Closes: #688199):
+    + switch /etc/bacula/scripts/delete_catalog_backup undef ucf control.
 
   [ Bart Swedrowski ]
   * debian/bacula-console.postinst,debian/bacula-console-qt.postinst,

-- 
Bacula, a network backup, recovery and verification program



More information about the pkg-bacula-commits mailing list