1
0
mirror of https://github.com/CumulusNetworks/ifupdown2.git synced 2024-05-06 15:54:50 +00:00

ifupdown2: fixup maintainer scripts

Ticket: CM-5764
Reviewed By: TBA
Testing Done: of course none ;) Will update when I have some time to test

fupdown2's postinst and postrm scripts do not conform to Debian's policy
for maintainer scripts [1]. Specific non-conformance follows:

* fixed maintainer scripts so they only use /bin/sh as other shells are
  non-essential packages and may not exist on the system
* fixed maintainer scripts so only actions specified by $1 are performed
  per run of the script
* fixed maintainer scripts to only support specific values for $1, and
  will otherwise exit with error
* included at the bottom of the postrm script the "#DEBHELPER#" tag as
  during package building debianhelper will inject extra code at this
  location

[1] https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
(cherry picked from commit 2289fe4e90a0134fcb07fe7e2e838de755d73e68)
This commit is contained in:
Jonathan Toppins
2015-04-21 14:07:46 -07:00
parent e308cb8280
commit d1017fec7a
2 changed files with 88 additions and 31 deletions

View File

@@ -1,6 +1,22 @@
#!/bin/bash
#!/bin/sh
# postinst script for ifupdown2
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
MYNAME="${0##*/}"
report() { echo "${MYNAME}: $*" ; }
@@ -9,7 +25,7 @@ report_err() { report "Error: $*" >&2 ; }
case "$1" in
configure)
# Create /etc/network/run
# Create /etc/network/run
[ -d /run/network ] || mkdir -p /run/network
# for backward compatibility
@@ -17,7 +33,8 @@ case "$1" in
ln -sf /run/network /etc/network/run
fi
ln -sf /usr/share/python-ifupdown2/generate_interfaces.py /usr/share/doc/python-ifupdown2/examples/generate_interfaces.py
ln -sf /usr/share/python-ifupdown2/generate_interfaces.py \
/usr/share/doc/python-ifupdown2/examples/generate_interfaces.py
[ -d /etc/network/if-pre-up.d ] || mkdir -p /etc/network/if-pre-up.d
[ -d /etc/network/if-up.d ] || mkdir -p /etc/network/if-up.d
@@ -58,25 +75,29 @@ case "$1" in
(cd /usr/share/man/man8/ && ln -sf /usr/share/man/man8/ifup.8.gz ifdown.8.gz)
mkdir -p /etc/network/interfaces.d/
update-rc.d networking start 40 S . start 35 0 6 . >/dev/null
;;
purge)
# Note: We don't remove /etc/network/interfaces
rm -f /run/network/ifstate
rm -f /sbin/ifquery
rm -f /sbin/ifup
rm -f /sbin/ifdown
rm -f /usr/share/doc/python-ifupdown2/generate_interfaces.py
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
# override default udev bridge and hotplug rules because they interfere with
# networking init script
udev_user_rulesdir=/etc/udev/rules.d/
udev_sys_rulesdir=/lib/udev/rules.d/
if [ -e $udev_user_rulesdir ]; then
udev_ifupdown2_overrides=("80-networking.rules" "60-bridge-network-interface.rules")
for u in ${udev_ifupdown2_overrides[*]}
udev_ifupdown2_overrides="80-networking.rules
60-bridge-network-interface.rules"
for u in ${udev_ifupdown2_overrides}
do
if [ -e ${udev_sys_rulesdir}/$u -a ! -e ${udev_user_rulesdir}/$u ]; then
(cd ${udev_user_rulesdir} && ln -sf /dev/null $u)
@@ -84,10 +105,6 @@ if [ -e $udev_user_rulesdir ]; then
done
fi
if [ -x "/etc/init.d/networking" ]; then
update-rc.d networking start 40 S . start 35 0 6 . >/dev/null || exit $?
fi
#DEBHELPER#
exit 0

View File

@@ -1,20 +1,57 @@
#!/bin/bash
#!/bin/sh
# postrm script for ifupdown2
#
# see: dh_installdeb(1)
set -e
rm -f /sbin/ifup /sbin/ifdown /sbin/ifquery
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
postrm_remove()
{
rm -f /sbin/ifup /sbin/ifdown /sbin/ifquery
update-rc.d networking remove >/dev/null
}
# Note: We don't remove /etc/network/interfaces
postrm_purge()
{
rm -f /var/tmp/network/ifstatenew
if [ -L /etc/network/run ] ; then
rm -f /etc/network/run
elif [ -d /etc/network/run ] ; then
rmdir --ignore-fail-on-non-empty /etc/network/run
fi
}
case "$1" in
purge)
# Note: We don't remove /etc/network/interfaces
rm -f /var/tmp/network/ifstatenew
purge)
postrm_purge
;;
if [ -L /etc/network/run ] ; then
rm -f /etc/network/run
elif [ -d /etc/network/run ] ; then
rmdir --ignore-fail-on-non-empty /etc/network/run
fi
;;
remove)
postrm_remove
;;
upgrade|disappear|failed-upgrade|abort-install|abort-upgrade)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
udevlink=$(readlink /etc/udev/rules.d/80-networking.rules 2>/dev/null || true)
@@ -22,6 +59,9 @@ udevlink=$(readlink /etc/udev/rules.d/80-networking.rules 2>/dev/null || true)
udevlink=$(readlink /etc/udev/rules.d/60-bridge-network-interface.rules 2>/dev/null || true)
[ -n "$udevlink" -a "$udevlink" == "/dev/null" ] && rm -f /etc/udev/rules.d/60-bridge-network-interface.rules
if [ "$1" = "purge" ] ; then
update-rc.d networking remove >/dev/null
fi
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0