summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphaël Hertzog <hertzog@debian.org>2016-09-20 18:52:30 +0200
committerRaphaël Hertzog <hertzog@debian.org>2016-09-21 11:10:31 +0200
commitc5b62eaddedcb3d46d28cddb76c10e8c24612704 (patch)
tree71454c9f469063cc184891e7eddecbe37f87c86b
parent53bda30687048663706cb04a8d728e61e356368b (diff)
downloadapache2-c5b62eaddedcb3d46d28cddb76c10e8c24612704.tar.gz
Update apache-htcacheclean.init to have sensible Default-Start values
With the old value, "systemctl enable apache-htcacheclean" would fail like this: Synchronizing state of apache-htcacheclean.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable apache-htcacheclean update-rc.d: error: apache-htcacheclean Default-Start contains no runlevels, aborting. So we add meta-data to make the script enabled by default but we actually disable it immediately in the postinst. And we can clean up some hacks that we introduced to cover for the Default-Start value being empty.
-rwxr-xr-xdebian/a2enmod4
-rwxr-xr-xdebian/apache2.apache-htcacheclean.init4
-rw-r--r--debian/apache2.postinst49
-rw-r--r--debian/changelog3
-rwxr-xr-xdebian/rules9
5 files changed, 46 insertions, 23 deletions
diff --git a/debian/a2enmod b/debian/a2enmod
index 3116688f..2656a2e4 100755
--- a/debian/a2enmod
+++ b/debian/a2enmod
@@ -593,9 +593,7 @@ sub special_module_handling {
$command = "systemctl $act $htc_service";
} else {
info("$verb external service $htc\n");
- # The init script has no Default-Start runlevels, so we need to
- # specify them explicitly.
- $command = "update-rc.d $htc $act 2 3 4 5";
+ $command = "update-rc.d $htc $act";
}
my $res = system($command);
if ($res == 0) {
diff --git a/debian/apache2.apache-htcacheclean.init b/debian/apache2.apache-htcacheclean.init
index 026aec90..a7043212 100755
--- a/debian/apache2.apache-htcacheclean.init
+++ b/debian/apache2.apache-htcacheclean.init
@@ -7,8 +7,8 @@ fi
# Provides: apache-htcacheclean
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
-# Default-Start:
-# Default-Stop: 0 1 2 3 4 5 6
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
# Short-Description: Cache cleaner process for Apache2 web server
# Description: Start the htcacheclean helper
# This script will start htcacheclean which will periodically scan the
diff --git a/debian/apache2.postinst b/debian/apache2.postinst
index 7063dfa8..f4944340 100644
--- a/debian/apache2.postinst
+++ b/debian/apache2.postinst
@@ -147,26 +147,36 @@ start_htcacheclean ()
fi
}
+disable_htcacheclean()
+{
+ if deb-systemd-helper debian-installed apache-htcacheclean.service; then
+ deb-systemd-helper disable apache-htcacheclean.service >/dev/null || true
+ fi
+ update-rc.d apache-htcacheclean disable >/dev/null
+}
+
# The apache-htcacheclean service is disabled by default. Can't use
-# debhelper. The update-rc.d 'enable' call must come after the 'defaults'
+# debhelper. The update-rc.d 'disable' call must come after the 'defaults'
# call, or the former will fail.
handle_htcacheclean ()
{
- if [ -x "/etc/init.d/apache-htcacheclean" ]; then
- update-rc.d apache-htcacheclean defaults >/dev/null
+ if dpkg --compare-versions "$2" lt "2.4.18-2~"; then
+ # Disable on initial installation or when upgrading from an old
+ # version without that init script and with the module disabled
+ # (or when configured to run from cron)
+ if [ ! -e "/etc/apache2/mods-enabled/cache_disk.load" ]; then
+ disable_htcacheclean
+ return
+ elif (. /etc/default/apache-htcacheclean && [ "$HTCACHECLEAN_MODE" = "cron" ]); then
+ disable_htcacheclean
+ return
+ fi
fi
- if dpkg --compare-versions "$2" gt "2.4.18-2~" ||
- [ ! -e "/etc/apache2/mods-enabled/cache_disk.load" ] ; then
- return 0
- fi
- if ( . /etc/default/apache-htcacheclean &&
- [ "$HTCACHECLEAN_MODE" != "cron" ] &&
- [ "$HTCACHECLEAN_RUN" != "no" ] )
- then
- update-rc.d apache-htcacheclean enable 2 3 4 5
+ # Restart it if applicable
+ if [ -e "/etc/apache2/mods-enabled/cache_disk.load" ]; then
+ start_htcacheclean
fi
- start_htcacheclean
}
msg ()
@@ -269,13 +279,12 @@ case "$1" in
enable_default_modules $@
enable_default_conf $@
install_default_site $@
- handle_htcacheclean $@
execute_deferred_actions
;;
abort-upgrade)
- start_htcacheclean $@
+
;;
abort-remove|abort-deconfigure)
@@ -290,6 +299,16 @@ esac
#DEBHELPER#
+# Deal with htcacheclean after debhelper's initial init script handling
+case "$1" in
+ configure)
+ handle_htcacheclean $@
+ ;;
+ abort-upgrade)
+ start_htcacheclean $@
+ ;;
+esac
+
exit 0
# vim: syntax=sh ts=4 sw=4 sts=4 sr noet
diff --git a/debian/changelog b/debian/changelog
index 35d6988d..cac4b24e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -13,6 +13,9 @@ apache2 (2.4.23-5) UNRELEASED; urgency=medium
multi-instance support.
* Drop /lib/systemd/system/apache2.service.d/forking.conf now that we have
proper native systemd support.
+ * Modify handling of /etc/init.d/apache-htcacheclean to have a usual
+ Default-Start value but instead we disable it manually in the postinst.
+ That way "systemctl enable apache-htcacheclean" works.
-- Stefan Fritsch <sf@debian.org> Sat, 13 Aug 2016 13:38:30 +0200
diff --git a/debian/rules b/debian/rules
index 00dff14b..5a96c953 100755
--- a/debian/rules
+++ b/debian/rules
@@ -148,13 +148,16 @@ override_dh_fixperms-indep:
override_dh_installinit:
dh_installinit --error-handler=true
- dh_installinit --name apache-htcacheclean --noscripts
+ # We enable apache-htcacheclean but we don't start it, some
+ # custom postinst code will then manually either disable it or
+ # start the service
+ dh_installinit --name apache-htcacheclean --no-start
override_dh_systemd_enable:
dh_systemd_enable -papache2 apache2.service
dh_systemd_enable -papache2 --name=apache2@ apache2@.service
- dh_systemd_enable -papache2 --no-enable --name=apache-htcacheclean apache-htcacheclean.service
- dh_systemd_enable -papache2 --no-enable --name=apache-htcacheclean@ apache-htcacheclean@.service
+ dh_systemd_enable -papache2 --name=apache-htcacheclean apache-htcacheclean.service
+ dh_systemd_enable -papache2 --name=apache-htcacheclean@ apache-htcacheclean@.service
override_dh_installdocs-indep:
# TODO: So, did anyone check convert_docs needs an update? ;)