[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