[Reproducible-builds] Bug#798882: libmodule-build-perl: change for #797709 breaks (at least) libdevice-cdio-perl build

Niko Tyni ntyni at debian.org
Sun Sep 13 19:53:38 UTC 2015

Package: libmodule-build-perl
Version: 0.421400-2 
Severity: serious
User: reproducible-builds at lists.alioth.debian.org
Usertags: ftbfs
X-Debbugs-Cc: reproducible-builds at lists.alioth.debian.org
Control: affects -1 libdevice-cdio-perl

The libdevice-cdio-perl package fails to build on current sid because
of the libmodule-build-perl change in 0.421400-2 that sorts results of
Module::Build::Base::rscan_dir() [see #797709].

The libdevice-cdio-perl Build.PL contains this:

            my $cfiles = $self->rscan_dir('./',qr/\.c$/);

and later it basically looks at the basename of the file and
skips it if one by that name has already been compiled.

Now, the rscan_dir() call finds files like

and the Module::Build change moves those up on the list so they get
compiled first, spectacularly breaking the build of course. See
for the results.

So the libdevice-cdio-perl build relies on ./perlmmc_wrap.c coming before
./.pc/07_fix_perl_5.16_ftbfs.patch/perlmmc_wrap.c in the rscan_dir()
results, and our change breaks that.

It turns out I was wrong with my patch for #797709 in that I assumed
that the order of the File::Find::find() return list is altogether
undeterministic, while it apparently takes care to process regular files
first and only then recurses into subdirectories. This isn't particularly
well (if at all) documented, but the code (or at least the comments; my
eyes bleed already from the actual code) at
or thereabouts seems to confirm it.

So we need to sort more smartly, and I don't have patch right now.
I suggest to revert the patch and reopen #797709 for the time being.
Niko Tyni   ntyni at debian.org

More information about the Reproducible-builds mailing list