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

Alexander Golovko alexandro at ankalagon.ru
Sat Oct 6 22:30:24 UTC 2012


The following commit has been merged in the master branch:
commit a4b9477a1578dc89938e788b07e5515e91cef997
Author: Alexander Golovko <alexandro at ankalagon.ru>
Date:   Sat Oct 6 19:17:40 2012 +0400

    add functions for manage config files with ucf

diff --git a/debian/additions/common-functions.dpkg b/debian/additions/common-functions.dpkg
index 32e88cd..e074421 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 -e 's/-(mysql|pgsql|sqlite3)$//')
+  regex="^$CONFIG:$base_package_name-(mysql|pgsql|sqlite3):"
+
+  ucfq -w "$CONFIG" |grep -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 | \
+    sed -n -e "\' $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> $@"

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



More information about the pkg-bacula-commits mailing list