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#