Package: libraw1394
Version: 2.1.1-1
Severity: grave
Tags: patch
Justification: renders package unusable
User: ubuntu-de...@lists.ubuntu.com
Usertags: origin-ubuntu xenial ubuntu-patch

Hi Guus,

With the recent change to debhelper to no longer call ldconfig from
maintainer scripts but from triggers instead (debhelper 9.20151004), a bug
has been exposed in the postinst of libraw1394-11 that will make the package
uninstallable after a rebuild with new debhelper.

The maintainer script looks for /dev/MAKEDEV, which is long obsolete.  If it
finds it, it calls a series of commands:

  [ -x /dev/MAKEDEV ] && cd /dev && echo -n "Creating device node 
/dev/raw1394... " && ./MAKEDEV raw1394 && echo "done."

If it *doesn't* find it, the above chain will exit non-zero.

Because this non-zero exit code is part of an && command list, it does *not*
trigger an immediate non-zero exit of the shell, in spite of using set -e.
So with the current build of the package, the maintainer script succeeds,
*because this is not the last command in the script* (it's followed by the
debhelper-provided call to ldconfig).

On a simple rebuild of the package in unstable, this command list *does*
become the last command in the script.  The script therefore gets the exit
code of the last command, which is non-zero, and the package fails to
install.

This bug was discovered as part of the bootstrap of Ubuntu xenial for the
s390x architecture, where because libraw1394-11 is a newly-built package
using a current toolchain, it fails to install.

Since makedev is for all intents and purposes obsoleted by udev, I've
applied the attached patch in Ubuntu, which you are welcome to include in
Debian as well.  I remember seeing some discussion in years past on
debian-devel about how to continue supporting makedev properly for those who
don't want to use udev; if you want to do mailing list archaeology I guess
that's still an option, but Ubuntu doesn't support running without udev so
for us it's sufficient to drop the maintainer script.

Marking this as 'grave' since the package becomes uninstallable on a
no-change rebuild.

The patch has been uploaded to Ubuntu with the following changelog
explanation:

  * Drop buggy call to obsolete /dev/MAKEDEV in the maintainer script, which
    if it's the last command (which it is now that ldconfig is being handled
    by trigger from debhelper) causes the package to fail to install.


Thanks for considering the patch.
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slanga...@ubuntu.com                                     vor...@debian.org
diff -Nru libraw1394-2.1.1/debian/libraw1394-11.postinst libraw1394-2.1.1/debian/libraw1394-11.postinst
--- libraw1394-2.1.1/debian/libraw1394-11.postinst	2009-07-25 07:39:58.000000000 -0700
+++ libraw1394-2.1.1/debian/libraw1394-11.postinst	1969-12-31 16:00:00.000000000 -0800
@@ -1,7 +0,0 @@
-#!/bin/sh -e
-
-if [ "$1" = "configure" ]; then
-	[ -x /dev/MAKEDEV ] && cd /dev && echo -n "Creating device node /dev/raw1394... " && ./MAKEDEV raw1394 && echo "done."
-fi
-
-#DEBHELPER#
diff -Nru libraw1394-2.1.1/debian/libraw1394.postinst.in libraw1394-2.1.1/debian/libraw1394.postinst.in
--- libraw1394-2.1.1/debian/libraw1394.postinst.in	2009-07-25 07:39:58.000000000 -0700
+++ libraw1394-2.1.1/debian/libraw1394.postinst.in	1969-12-31 16:00:00.000000000 -0800
@@ -1,10 +0,0 @@
-#!/bin/sh -e
-
-. /usr/share/debconf/confmodule
-db_version 2.0
-
-if [ "$1" = "configure" ]; then
-	[ -x /dev/MAKEDEV ] && cd /dev && echo -n "Creating device node /dev/raw1394... " && ./MAKEDEV raw1394 && echo "done."
-fi
-
-#DEBHELPER#

Reply via email to