From 3ce3a48572b780c9ee3162d117762725bdf325d8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Graber?= Date: Sun, 10 Jan 2016 12:31:15 +0100 Subject: [PATCH] Add 01-upstart-lsb from the upstart package, and make executing rc.d scripts no-op if there is an upstart job for that script Changed-By: Dimitri John Ledkov Fri, 30 May 2014 11:38:47 +0200 --- debian/control | 2 ++ debian/lsb-base.install | 1 + init-functions.d/01-upstart-lsb | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 init-functions.d/01-upstart-lsb diff --git a/debian/control b/debian/control index 85eb103..5c2b65f 100644 --- a/debian/control +++ b/debian/control @@ -20,6 +20,8 @@ Architecture: all Multi-Arch: foreign Depends: ${misc:Depends} Pre-Depends: ${misc:Pre-Depends} +Replaces: upstart (<< 1.12.1-0ubuntu8) +Breaks: upstart (<< 1.12.1-0ubuntu8) Priority: required Description: Linux Standard Base init script functionality The Linux Standard Base (http://www.linuxbase.org/) is a standard diff --git a/debian/lsb-base.install b/debian/lsb-base.install index 66dc0df..a60c86d 100644 --- a/debian/lsb-base.install +++ b/debian/lsb-base.install @@ -1,2 +1,3 @@ init-functions /lib/lsb +init-functions.d/01-upstart-lsb /lib/lsb/init-functions.d init-functions.d/20-left-info-blocks /lib/lsb/init-functions.d diff --git a/init-functions.d/01-upstart-lsb b/init-functions.d/01-upstart-lsb new file mode 100644 index 0000000..92205ce --- /dev/null +++ b/init-functions.d/01-upstart-lsb @@ -0,0 +1,31 @@ +# Allow executing init.d scripts as upstart jobs + +# Operate against system upstart, not session +unset UPSTART_SESSION + +# Bail if there is an upstart job, and called via RC +_RC_SCRIPT=${0#/etc/rc?.d/[KS]??*} +if [ -r "/etc/init/${_RC_SCRIPT}.conf" ] && which initctl >/dev/null \ + && initctl version 2>/dev/null | grep -q upstart +then + exit 0 +fi + +_UPSTART_JOB=${0#/etc/init.d/} +if [ -r "/etc/init/${_UPSTART_JOB}.conf" ] && which initctl >/dev/null \ + && initctl version 2>/dev/null | grep -q upstart \ + && initctl status ${_UPSTART_JOB} 2>/dev/null 1>/dev/null +then + # Upstart configuration exists for this job and we're running under upstart + case "${1:-}" in + start|stop|status|reload) + # Action is a valid upstart action + exec ${1} ${_UPSTART_JOB} + ;; + restart|force-reload) + # Map restart to the usual sysvinit behavior. + stop ${_UPSTART_JOB} || : + exec start ${_UPSTART_JOB} + ;; + esac +fi -- 2.30.2