[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: