summaryrefslogtreecommitdiffstats
path: root/debian/open-infrastructure-container-tools.postinst
diff options
context:
space:
mode:
Diffstat (limited to 'debian/open-infrastructure-container-tools.postinst')
-rwxr-xr-xdebian/open-infrastructure-container-tools.postinst191
1 files changed, 191 insertions, 0 deletions
diff --git a/debian/open-infrastructure-container-tools.postinst b/debian/open-infrastructure-container-tools.postinst
new file mode 100755
index 0000000..02dd0ff
--- /dev/null
+++ b/debian/open-infrastructure-container-tools.postinst
@@ -0,0 +1,191 @@
+#!/bin/sh
+
+set -e
+
+CONFFILE="/etc/compute-tools/container.conf"
+
+Install ()
+{
+ DEFAULT="${1}"
+ TARGET="${2}"
+
+ mkdir -p "${DEFAULT}" > /dev/null 2>&1 || true
+ mkdir -p "${TARGET}" > /dev/null 2>&1 || true
+
+ if [ "${TARGET}" != "${DEFAULT}" ]
+ then
+ if [ -h "${DEFAULT}" ]
+ then
+ rm -f "${DEFAULT}"
+ ln -s "${TARGET}" "${DEFAULT}"
+ else
+ if [ -e "${DEFAULT}" ] && [ -z "$(ls -A ${DEFAULT})" ]
+ then
+ rmdir "${DEFAULT}"
+ ln -s "${TARGET}" "${DEFAULT}"
+ fi
+ fi
+ fi
+
+ if ! dpkg-statoverride --list "${DEFAULT}" > /dev/null 2>&1 &&
+ ! dpkg-statoverride --list "${TARGET}" > /dev/null 2>&1
+ then
+ chmod ${DIRECTORY_PERMISSIONS} "${TARGET}"
+ chown root:root "${TARGET}"
+
+ chmod ${DIRECTORY_PERMISSIONS} "${DEFAULT}"
+ chown root:root "${DEFAULT}"
+ fi
+}
+
+Upgrade ()
+{
+ # upgrade from buster: conffile
+ if [ -e /etc/open-infrastructure/container.conf ] && [ ! -e "${CONFFILE}" ]
+ then
+ mv /etc/open-infrastructure/container.conf "${CONFFILE}"
+ rmdir /etc/open-infrastructure > /dev/null 2>&1 || true
+ fi
+
+ # upgrade from buster: hooks
+ for HOOK in ${HOOKS}/*
+ do
+ NAME="$(basename ${HOOK})"
+ TARGET="$(readlink -m ${HOOK})"
+
+ case "${TARGET}" in
+ /usr/share/open-infrastructure/container/hooks/pre-create.git-pull.sh)
+ rm -f "${HOOKS}/${NAME}"
+ ln -sf /usr/share/compute-tools/hooks/pre-get.git-pull.sh "${HOOKS}/pre-get.git-pull.sh"
+ ln -sf /usr/share/compute-tools/hooks/pre-build.git-pull.sh "${HOOKS}/pre-build.git-pull.sh"
+ ;;
+
+ /usr/share/open-infrastructure/container/hooks/*)
+ ln -sf "$(echo ${TARGET} | sed -e 's|/usr/share/open-infrastructure/container/hooks/|/usr/share/compute-tools/hooks/|')" "${HOOKS}/${NAME}"
+ ;;
+
+ *)
+ if [ -e "/usr/share/compute-tools/hooks/${NAME}" ]
+ then
+ rm -f "${HOOKS}/${NAME}"
+ ln -sf "/usr/share/compute-tools/hooks/${NAME}" "${HOOKS}/${NAME}"
+ fi
+ ;;
+ esac
+ done
+
+ # upgrade from buster: keys
+ if [ -e /etc/open-infrastructure/container/keys ]
+ then
+ mv /etc/open-infrastructure/container/keys/* "${KEYS}" > /dev/null 2>&1 || true
+ rmdir /etc/open-infrastructure/container/keys > /dev/null 2>&1 || true
+ rm -f /etc/open-infrastructure/container/keys > /dev/null 2>&1 || true
+ rmdir -p /etc/open-infrastructure/container > /dev/null 2>&1 || true
+ fi
+
+ # upgrade from buster: logfiles
+ if ls /var/log/open-infrastructure/container.log* > /dev/null 2>&1
+ then
+ if [ -e /var/log/compute-tools ]
+ then
+ mv /var/log/open-infrastructure/* /var/log/compute-tools 2>&1 || true
+ rmdir /var/log/open-infrastructure > /dev/null 2>&1 || true
+ else
+ mv /var/log/open-infrastructure /var/log/compute-tools
+ fi
+ fi
+}
+
+case "${1}" in
+ configure)
+ . /usr/share/debconf/confmodule
+
+ db_get open-infrastructure-container-tools/machines-directory
+ MACHINES_DIRECTORY="${RET:-/var/lib/machines}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/config-directory
+ CONFIG_DIRECTORY="${RET:-/etc/compute-tools/config}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/debconf-directory
+ DEBCONF_DIRECTORY="${RET:-/etc/compute-tools/debconf}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/hooks-directory
+ HOOKS_DIRECTORY="${RET:-/etc/compute-tools/hooks}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/keys-directory
+ KEYS_DIRECTORY="${RET:-/etc/compute-tools/keys}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/cache-directory
+ CACHE_DIRECTORY="${RET:-/var/cache/container}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/directory-permissions
+ DIRECTORY_PERMISSIONS="${RET}" # select (w/o empty)
+
+ db_get open-infrastructure-container-tools/build-script
+ SCRIPT="${RET:-debian}" # string (w/o empty)
+
+ db_get open-infrastructure-container-tools/irc
+ IRK_TARGETS="${RET}" # string (w/ empty)
+
+ db_stop
+
+ Install "/var/lib/machines" "${MACHINES_DIRECTORY}"
+ Install "/etc/compute-tools/config" "${CONFIG_DIRECTORY}"
+ Install "/etc/compute-tools/debconf" "${DEBCONF_DIRECTORY}"
+ Install "/etc/compute-tools/hooks" "${HOOKS_DIRECTORY}"
+ Install "/etc/compute-tools/keys" "${KEYS_DIRECTORY}"
+ Install "/var/cache/container" "${CACHE_DIRECTORY}"
+
+ Upgrade
+
+ if [ ! -e "${CONFFILE}" ]
+ then
+
+cat > "${CONFFILE}" << EOF
+# ${CONFFILE}
+
+IRK_TARGETS="${IRK_TARGETS}"
+EOF
+
+ fi
+
+ cp -a -f "${CONFFILE}" "${CONFFILE}.tmp"
+
+ # If the admin deleted or commented some variables but then set
+ # them via debconf, (re-)add them to the config file.
+
+ test -z "${IRK_TARGETS}" || \
+ grep -Eq '^ *IRK_TARGETS=' "${CONFFILE}" || \
+ echo "IRK_TARGETS=" >> "${CONFFILE}"
+
+ sed -e "s|^ *IRK_TARGETS=.*|IRK_TARGETS=\"${IRK_TARGETS}\"|" \
+ < "${CONFFILE}" > "${CONFFILE}.tmp"
+
+ mv -f "${CONFFILE}.tmp" "${CONFFILE}"
+
+ if command -v sysctl > /dev/null 2>&1
+ then
+ sysctl -q -p /etc/sysctl.d/zz-container.conf
+ fi
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`${1}'" >&2
+ exit 1
+ ;;
+esac
+
+#DEBHELPER#
+
+case "${1}" in
+ configure)
+ # run after debhelper update-alternative scripts
+ update-alternatives --quiet --set container_build-script "/usr/share/compute-tools/build-scripts/${SCRIPT}"
+ ;;
+esac
+
+exit 0