Package: libmodule-build-perl Version: 0.421400-2 Severity: serious User: reproducible-bui...@lists.alioth.debian.org Usertags: ftbfs X-Debbugs-Cc: reproducible-bui...@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 ./.pc/07_fix_perl_5.16_ftbfs.patch/perlmmc_wrap.c and the Module::Build change moves those up on the list so they get compiled first, spectacularly breaking the build of course. See https://reproducible.debian.net/rb-pkg/unstable/amd64/libdevice-cdio-perl.html 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 https://sources.debian.net/src/perl/5.20.2-6/ext/File-Find/lib/File/Find.pm/#L763 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 nt...@debian.org