From fe39148d0cd6ec9020883e8e2af9376412f8da86 Mon Sep 17 00:00:00 2001 From: B Stack Date: Wed, 6 Mar 2019 15:23:42 -0500 Subject: WIP: waterfox dpkg --- waterfox/debian/waterfox.preinst | 88 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 waterfox/debian/waterfox.preinst (limited to 'waterfox/debian/waterfox.preinst') 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# -- cgit