summaryrefslogtreecommitdiff
path: root/waterfox/debian/waterfox.preinst
diff options
context:
space:
mode:
Diffstat (limited to 'waterfox/debian/waterfox.preinst')
-rw-r--r--waterfox/debian/waterfox.preinst88
1 files changed, 88 insertions, 0 deletions
diff --git a/waterfox/debian/waterfox.preinst b/waterfox/debian/waterfox.preinst
new file mode 100644
index 0000000..b314cea
--- /dev/null
+++ b/waterfox/debian/waterfox.preinst
@@ -0,0 +1,88 @@
+#!/bin/sh
+
+set -e
+
+APP_DIR="/etc/apparmor.d"
+APP_PROFILE="usr.bin.waterfox"
+APP_CONFFILE="$APP_DIR/$APP_PROFILE"
+APP_DISABLE="$APP_DIR/disable/$APP_PROFILE"
+MOZ_PKG_NAME=waterfox
+MOZ_LIBDIR=/usr/lib/waterfox
+
+# Prepare to move a conffile without triggering a dpkg question
+prepare_mv_conffile() {
+ local PKGNAME="$1"
+ local CONFFILE="$2"
+
+ [ -e "$CONFFILE" ] || return 0
+
+ local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')"
+ local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PKGNAME | \
+ sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+ #'
+ if [ "$md5sum" = "$old_md5sum" ]; then
+ mv -f "$CONFFILE" "$CONFFILE.dpkg-remove"
+ fi
+}
+
+prepare_rm_conffile() {
+ local PACKAGE="$1"
+ local CONFFILE="$2"
+
+ [ -e "$CONFFILE" ] || return 0
+
+ local md5sum="$(md5sum $CONFFILE | sed -e 's/ .*//')"
+ local old_md5sum="$(dpkg-query -W -f='${Conffiles}' $PACKAGE | \
+ sed -n -e "\' $CONFFILE ' { s/ obsolete$//; s/.* //; p }")"
+ if [ "$md5sum" != "$old_md5sum" ]; then
+ echo "Obsolete conffile $CONFFILE has been modified by you."
+ echo "Saving as $CONFFILE.dpkg-bak ..."
+ mv -f "$CONFFILE" "$CONFFILE.dpkg-backup"
+ else
+ echo "Moving obsolete conffile $CONFFILE out of the way..."
+ mv -f "$CONFFILE" "$CONFFILE.dpkg-remove"
+ fi
+}
+
+disable_profile() {
+ # Create a symlink to the yet-to-be-unpacked profile
+ if [ ! -e "$APP_CONFFILE" ]; then
+ mkdir -p `dirname $APP_DISABLE` 2>/dev/null || true
+ ln -sf $APP_CONFFILE $APP_DISABLE
+ fi
+}
+
+if [ "$1" = "install" ] || [ "$1" = "upgrade" ] ; then
+ if [ "$1" = "install" ]; then
+ # Disable AppArmor profile on install, unless the last profile they
+ # modified is enabled.
+ base=`echo $APP_PROFILE | cut -d '-' -f 1`
+ last_modified=`ls -rt $APP_DIR/$base* 2>/dev/null | grep -v '\.dpkg' | tail -n1`
+ if [ -s "$last_modified" ]; then
+ if [ -e "$APP_DIR/disable/`basename $last_modified`" ]; then
+ disable_profile
+ fi
+ else
+ # Fresh install and no other waterfox profiles exist, so disable.
+ disable_profile
+ fi
+ elif [ "$1" = "upgrade" ]; then
+ # Disable AppArmor on upgrade from earlier than when we first shipped
+ # the profile if the user does not already have a profile defined.
+ if dpkg --compare-versions "$2" lt "56.2.5-0" ; then
+ disable_profile
+ fi
+ fi
+
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/bookmarks.html"
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/localstore.rdf"
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/mimeTypes.rdf"
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/prefs.js"
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/chrome/userChrome-example.css"
+ prepare_rm_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/profile/chrome/userContent-example.css"
+
+ prepare_mv_conffile "${MOZ_PKG_NAME}" "/etc/${MOZ_PKG_NAME}/pref/waterfox.js"
+
+fi
+
+#DEBHELPER#
bgstack15