Package: dh-make-perl Version: 0.68-1 Severity: normal When refreshing the packaging for libnet-ident-perl, dh-make-perl failed to find the "Config" module anywhere:
chr...@crispylappy:~/src/Packages/pkg-perl/libnet-ident-perl$ dh-make-perl-dev refresh --pkg-perl --source-format '3.0 (quilt)' Engaging refresh mode in . Found: Net-Ident 1.22 (libnet-ident-perl arch=all) Found docs: README debian/TODO.Debian debian/rules already uses DH7 tiny rules W: overwriting debian/copyright.bak Using cached Contents from Mon May 31 15:40:36 2010 = Fcntl is in core = vars is in core = Socket is in core = FileHandle is in core = Exporter is in core - Config not found in any package Going to read '/home/chrisb/.cpan/Metadata' Database was generated on Sun, 13 Jun 2010 14:27:40 GMT - it seems it is not available even via CPAN = Carp is in core Needs the following debian packages: perl = IO::Socket is in core = ExtUtils::MakeMaker is in core Needs the following debian packages during building: perl Needs the following modules for which there are no debian packages available: - Config W: overwriting debian/control.bak --- Done However, the Config module is included in perl core (in the perl-base package). I think the problem is that Module::CoreList does include 'Config', but not its version number (it's in the version hash as "undef"), which indicates that module is present in that perl version, but the version number is not known/specified. Interestingly, DhMakePerl::Utils::is_core_module correctly returns the perl version that includes the module, but "core_module_perls" returns an empty result. The attached patch (against current SVN) fixes the problem, by only performing a version check if the version passed into core_module_perls is defined and non-zero (previously it was checking the version iff it was defined). In addition, I had to make core_module_perls skip over a version key in Module::CoreList::version if it was simply a "family" entry (i.e. "5") rather than a full version entry, otherwise find_core_perl_dependency died complaining about a strange version. -- System Information: Debian Release: squeeze/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32-4-amd64 (SMP w/2 CPU cores) Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_GB.UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages dh-make-perl depends on: ii debhelper 7.4.20 helper programs for debian/rules ii dpkg-dev 1.15.7.2 Debian package development tools ii fakeroot 1.14.4-1 Gives a fake root environment ii libapt-pkg-perl 0.1.24 Perl interface to libapt-pkg ii libarray-unique-perl 0.08-1 Tie-able array that allows only un ii libclass-accessor-perl 0.34-1 Perl module that automatically gen ii libdpkg-perl 1.15.7.2 Dpkg perl modules ii libemail-date-format-perl 1.002-1 Module to generate RFC-2822-valid ii liblist-moreutils-perl 0.25~02-1 Perl module with additional list f ii libmodule-depends-perl 0.14-3 identify the dependencies of a dis ii libparse-debcontrol-perl 2.005-2 Easy OO parsing of Debian control- ii libparse-debianchangelog-perl 1.1.1-2 parse Debian changelogs and output ii libtie-ixhash-perl 1.21-2 ordered associative arrays for Per ii libwww-mechanize-perl 1.62-1 module to automate interaction wit ii libyaml-perl 0.71-1 YAML Ain't Markup Language ii make 3.81-8 An utility for Directing compilati ii perl 5.10.1-13 Larry Wall's Practical Extraction ii perl-modules [libmodule-corel 5.10.1-13 Core Perl modules Versions of packages dh-make-perl recommends: ii apt-file 2.3.4 search for files within Debian pac dh-make-perl suggests no packages. -- no debconf information -- Chris Butler <chr...@debian.org> GnuPG Key ID: 4096R/49E3ACD3
Index: lib/DhMakePerl/Utils.pm =================================================================== --- lib/DhMakePerl/Utils.pm (revision 59334) +++ lib/DhMakePerl/Utils.pm (working copy) @@ -143,12 +143,16 @@ for my $v( sort keys %Module::CoreList::version ){ + # Module::CoreList::version includes families (i.e. "5") as well as + # full versions, skip the families. + next unless ($v =~ /^\d+\.\d+(?:\.|$)/); + next unless exists $Module::CoreList::version{$v}{$module}; my $found = $Module::CoreList::version{$v}{$module}; push @ret, $v - if not defined($version) + if not $version or $found and version->new($found) >= $version; }