Bug#547046: espeakup: Incorrect dependencies and runlevels in init.d script?
Package: espeakup
Version: 3.0.3+git20090303.dfsg.1-1
Severity: serious
Tags: patch
User: initscripts-ng-devel@lists.alioth.debian.org
Usertags: incorrect-dependency incorrect-runlevels
With dependency based boot sequencing, I discovered what I believe is
a bug in the init.d script. The script have a hard dependency on the
module-init-tools script, but do not depend on the module-init-tools
package. This make the package fail to install if the
module-init-tools package isn't installed. Next, the runlevel list do
not match the update-rc.d call used in the postinst. I assume the
update-rc.d arguments are correct and the header is wrong. Finally,
the script depend on files in /usr/, and should depend on $remote_fs.
I discovered the problem by reading
<URL: http://piuparts.debian.org/sid/fail/espeakup_3.1.3-1.log >.
<URL: http://refspecs.freestandards.org/LSB_2.1.0/LSB-generic/LSB-generic/initscrcomconv.html >
documents the LSB header format. Some debian notes are available from
<URL: http://wiki.debian.org/LSBInitScripts >.
This patch should fix the issues. Setting severity serious, as the
script would run to early in the boot and fail to find the files it
need.
diff -urN ../speakup-3.1.3/debian/espeakup.init ../speakup-3.1.3-pere/debian/espeakup.init
--- ../speakup-3.1.3/debian/espeakup.init 2009-09-16 23:04:28.000000000 +0200
+++ ../speakup-3.1.3-pere/debian/espeakup.init 2009-09-16 23:17:29.000000000 +0200
@@ -22,12 +22,10 @@
#
### BEGIN INIT INFO
# Provides: espeakup
-# Required-Start: module-init-tools
-# Required-Stop:
-# Should-Start:
-# Should-Stop:
-# Default-Start: S
-# Default-Stop:
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Default-Start: 2 3 4 5
+# Default-Stop: 0 1 6
# Short-Description: Speakup/espeak connector
# Description: Daemon that makes speakup use the espeak
# software speech synthesizer
diff -urN ../speakup-3.1.3/debian/espeakup.postinst ../speakup-3.1.3-pere/debian/espeakup.postinst
--- ../speakup-3.1.3/debian/espeakup.postinst 1970-01-01 01:00:00.000000000 +0100
+++ ../speakup-3.1.3-pere/debian/espeakup.postinst 2009-09-16 23:22:04.000000000 +0200
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+# Those using dependency based boot sequencing with sysv-rc and
+# installing espeakup version 3.1.3-1 or earlier would have wrong
+# runlevel symlinks. Recover from this.
+if [ "$1" = "configure" ] && dpkg --compare-versions "$2" le "3.1.3-1" \
+ && [ -f /etc/rcS.d/S[0-9][0-9]espeakup ] && [ ! -f /etc/rc2.d/S[0-9][0-9]espeakup ]
+then
+ update-rc.d -f espeakup remove
+fi
+
+#DEBHELPER#
Happy hacking,
--
Petter Reinholdtsen
Reply to: