Control: reassign -1 src:sysvinit 2.88dsf-43
Control: retitle -1 service incorrectly handles console-screen.service
Control: affects console-tools -1
On Wed, Oct 16, 2013 at 09:50:15AM +0200, David Weinehall wrote:
When upgrading to the latest version of console-tools, I received the
following error message:
Setting up console-tools (2:0.2.3-71) ...
update-rc.d: warning: start and stop actions are no longer supported;
falling back to defaults
Failed to issue method call: Unit console-screen.sh.service failed to
load: No such file or directory. See system logs and 'systemctl status
console-screen.sh.service' for details.
“/etc/init.d/console-screen.sh start” works fine but neither “service
console-screen.sh start” nor the equivalent invoke-rc.d does.
The difference is that /lib/lsb/init-functions.d/40-systemd correctly
trims the .sh off the service name while service does not. The attached
patch addresses the issue in both service and invoke-rc.d
James
diff -Nru sysvinit-2.88dsf/debian/changelog sysvinit-2.88dsf/debian/changelog
--- sysvinit-2.88dsf/debian/changelog 2013-07-16 16:10:10.0 -0400
+++ sysvinit-2.88dsf/debian/changelog 2013-10-17 09:47:20.0 -0400
@@ -1,3 +1,12 @@
+sysvinit (2.88dsf-43.1) UNRELEASED; urgency=low
+
+ * Non-maintainer upload.
+ * sysv-rc:
+- Update invoke-rc.d and service to trim .sh from service names when
+ calling systemctl.
+
+ -- James McCoy james...@debian.org Thu, 17 Oct 2013 09:42:55 -0400
+
sysvinit (2.88dsf-43) unstable; urgency=low
[ Roger Leigh ]
diff -Nru sysvinit-2.88dsf/debian/service/service sysvinit-2.88dsf/debian/service/service
--- sysvinit-2.88dsf/debian/service/service 2013-07-14 16:57:26.0 -0400
+++ sysvinit-2.88dsf/debian/service/service 2013-10-17 09:40:50.0 -0400
@@ -163,9 +163,10 @@
# systemctl calls.
if [ -n $is_systemd ]
then
+ UNIT=${SERVICE%.sh}.service
case ${ACTION} in
restart|status)
- exec systemctl ${ACTION} ${SERVICE}.service
+ exec systemctl ${ACTION} ${UNIT}
;;
start|stop)
# Follow the principle of least surprise for SysV people:
@@ -173,32 +174,32 @@
# has one or more .socket files, we also stop the .socket units.
# Users who need more control will use systemctl directly.
for unit in $(systemctl list-unit-files --full --type=socket 2/dev/null | sed -ne 's/\.socket\s*[a-z]*\s*$/.socket/p'); do
- if [ $(systemctl -p Triggers show $unit) = Triggers=${SERVICE}.service ]; then
+ if [ $(systemctl -p Triggers show $unit) = Triggers=${UNIT} ]; then
systemctl ${ACTION} $unit
fi
done
- exec systemctl ${ACTION} ${SERVICE}.service
+ exec systemctl ${ACTION} ${UNIT}
;;
reload)
- _canreload=$(systemctl -p CanReload show ${SERVICE}.service 2/dev/null)
+ _canreload=$(systemctl -p CanReload show ${UNIT} 2/dev/null)
if [ $_canreload = CanReload=no ]; then
# The reload action falls back to the sysv init script just in case
# the systemd service file does not (yet) support reload for a
# specific service.
run_via_sysvinit
else
-exec systemctl reload ${SERVICE}.service
+exec systemctl reload ${UNIT}
fi
;;
force-stop)
- exec systemctl --signal=KILL kill ${SERVICE}.service
+ exec systemctl --signal=KILL kill ${UNIT}
;;
force-reload)
- _canreload=$(systemctl -p CanReload show ${SERVICE}.service 2/dev/null)
+ _canreload=$(systemctl -p CanReload show ${UNIT} 2/dev/null)
if [ $_canreload = CanReload=no ]; then
-exec systemctl restart ${SERVICE}.service
+exec systemctl restart ${UNIT}
else
-exec systemctl reload ${SERVICE}.service
+exec systemctl reload ${UNIT}
fi
;;
*)
diff -Nru sysvinit-2.88dsf/debian/src/sysv-rc/sbin/invoke-rc.d sysvinit-2.88dsf/debian/src/sysv-rc/sbin/invoke-rc.d
--- sysvinit-2.88dsf/debian/src/sysv-rc/sbin/invoke-rc.d 2013-07-14 16:57:26.0 -0400
+++ sysvinit-2.88dsf/debian/src/sysv-rc/sbin/invoke-rc.d 2013-10-17 09:42:46.0 -0400
@@ -276,6 +276,7 @@
is_upstart=1
elif test -d /run/systemd/system ; then
is_systemd=1
+UNIT=${INITSCRIPTID%.sh}.service
elif test ! -f ${INITDPREFIX}${INITSCRIPTID} ; then
## Verifies if the given initscript ID is known
## For sysvinit, this error is critical
@@ -390,7 +391,7 @@
if [ -n $is_upstart ]; then
_executable=1
elif [ -n $is_systemd ]; then
-_state=$(systemctl -p LoadState show ${INITSCRIPTID}.service 2/dev/null)
+_state=$(systemctl -p LoadState show ${UNIT} 2/dev/null)
if [ $_state != LoadState=masked ]; then
_executable=1
fi
@@ -519,25 +520,25 @@
fi
case $saction in