Bug#668638: dh-make-perl: Incorrect dependency detection (because Module::Depends is used)
Slaven Rezic
slaven at rezic.de
Thu Aug 8 20:26:17 UTC 2013
Damyan Ivanov <dmn at debian.org> writes:
> Control: -1 tags confirmed
>
> -=| Slaven Rezic, 13.04.2012 21:02:05 +0200 |=-
>> Package: dh-make-perl
>> Version: 0.70-1
>> Severity: normal
>>
>> When trying to build Tk::Wizard with dh-make-perl using
>>
>> dh-make-perl --cpan=Tk::Wizard --build
>>
>> an obviously wrong dependecy was detected:
>>
>> - Win32::TieRegistry not found in any package
>> CPAN contains it in Win32-TieRegistry
>> substituting package name of libwin32-tieregistry-perl
>>
>> Problem is very probably that META.yml is used for
>> dependency detection. This is wrong unless dynamic_config:0 is
>> set in the META file. If dynamic_config is not defined or
>> set to 1, then Makefile.PL or Build.PL must be run and
>> the created Makefile or Build must be inspected for the
>> correct dependencies (in newer Perls one can use the created
>> MYMETA* files instead).
>
> Thanks for the explanation and sorry for replaying more than an year
> later.
>
>> I can point you to the correct dependency detection code in
>> CPAN.pm.
>
> That would be very helpful indeed. Hopefully there is a way to just
> use some CPAN.pm-provided method to obtain this information.
>
>> Maybe using Module::Depends::Intrusive *always* would also do the
>> right thing.
>
> Tried that, but for this package M:D:Intrusive returns an empty hash
> :/
With Debian now shipping perl 5.14.x, we have now the easier option to
fix the problem. Modern ExtUtils::MakeMaker and Module::Build write a
"MYMETA.yml" (and MYMETA.json) file when executing "perl Makefile.PL"
resp. "perl Build.PL", and this file contains all fields as META.yml,
but dynamically evaluated.
In the case of Tk::Wizard the requires field in MYMETA.yml looks like
this:
requires:
Carp: 0
Cwd: 0
ExtUtils::testlib: 0
File::Copy: 0
File::Path: 0
File::Spec: 0
FileHandle: 0
IO::Handle: 0
LWP::UserAgent: 0
Scalar::Util: 0
Test::More: 0
Tk: 0
Tk::After: 0
Tk::DialogBox: 0
Tk::DirTree: 0
Tk::ErrorDialog: 0
Tk::Frame: 0
Tk::LabFrame: 0
Tk::MainWindow: 0
Tk::ProgressBar: 0
Tk::ROText: 0
That is, the Win32* modules are gone.
So probably the fix is: run Makefile.PL/Build.PL, and if there was a
MYMETA.yml file written, use this, else fallback to META.yml (the
fallback probably should never happen, so is worth a warning).
Regards,
Slaven
--
Slaven Rezic - slaven <at> rezic <dot> de
BBBike - route planner for cyclists in Berlin
WWW version: http://www.bbbike.de
Perl/Tk version for Unix and Windows: http://bbbike.sourceforge.net
More information about the pkg-perl-maintainers
mailing list