The reason I said in debhelper's changelog that, "This change
is mostly useful when using minimal rules files with dh." is because
packages with old-style rules files, especially packages that
only build on limited architectures, will almost certianly use -a -i -s
flags to make debhelper do the right thing. 

The only counterexample I can think of would be an old style rules file
that did something like this:

        dh_installdeb -a # act on all packages, even for wrong arches
        cp debian/foo debian/bar/DEBIAN/ # dir always created by above
        dh_builddeb -s

But, this rules file was not broken by debhelper 7.4.16! No, it was
broken 8 months ago, in debhelper 7.4.0, which made the
-a flag act the same as the -s flag. And noone has complained about that
change. A rules file that left off the "-a" would have kept working
until 7.4.16. Both variants of the rules file seem equally (un)likely to
exist. So, seems safe enough to assume only packages using dh are impacted.

----

So, let's identify source packages that depend on a new enough debhelper
to use dh. In order to be impacted, they must also build more than one
binary package, and cannot be arch: all.

cat 
/var/lib/apt/lists/ftp.us.debian.org_debian_dists_unstable_*Sources|grep-dctrl 
-e -F Build-Depends,Build-Depends-Indep 'debhelper \(>= 7.(0.5[0-9]|[1-9])' | 
grep-dctrl -F Binary ", " | grep-dctrl -v -F Architecture all -s Package|wc -l
531

That can be weeded down further, by pulling the source to those packages,
and finding those where debian/control has multiple, differing Architecture
lines (and at least one line must be more complex than "all" or "any").

for d in $(find . -mindepth 1 -maxdepth 1 -type d); do if [ $(grep 
'^Architecture:' "$d/debian/control" | sed 's/all/any/' | sort | uniq |wc -l) 
!= 1 ]; then echo $d; fi; done
./klibc-1.5.17
./snd-11.4
./libvncserver-0.9.7
./nbd-2.9.15
./spectemu-0.94a
./nauty-2.4
./k3b-1.90.0~rc1
./xmms2-0.7DrNo
./ecore-0.9.9.063
./libdrm-2.4.18
./partconf-1.33
./netcfg-1.52
./sl-modem-2.9.11~20100303

That's few enough to manually review. I found these problems:

- netcfg (of course)
- sl-modem (rules file assumes debian/sl-modem-daemon/DEBIAN always
  exists, which is only true on i386 and amd64. *However*, the only other
  binary package in that source is i386 only, so there is no real FTBFS
  with the new debhelper.)
- partconf (contains workaround for #572077 that can be removed)
- libvncserver (contains workaround for ##572077 that can be removed)

On the other hand, several to most of the other packages listed
fail for some arches with the *old* debhelper. For example, nbd
has binary packages that are only built on linux arches. So
dpkg-buildpackage on eg, kfreebsd will fail, unless the -B flag
is used. The new version fixes this (almost.. I missed one case
involving -N).

So, in balance, this change seems very likely to me to not cause
anything except netcfg to FTBFS. It also clears up a source of build
failures that can easily lurk in packages without anyone likely to
notice until a user, on a little-used arch, tries to build the
package from source.

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature

Reply via email to