CC: | szabgab [...] gmail.com |
Subject: | Shipwright breaks importing modules that use Module::Install |
Hi! First of all, thanks for bringing shipwright to the world and
maintaining it for the community - it's looking more promising every day!
We're trying to build a packaged Padre with shipwright and it but
getting the following error:
----------8<----------
$ shipwright create -r fs:shipwright-padre
created with success
$ shipwright import -r fs:shipwright-padre/ cpan:Padre
CPAN related output will be at /tmp/shipwright_cpan.log
Fetching with LWP:
http://www.mirrorspace.org/cpan/authors/id/G/GA/GARU/Padre-0.40.tar.gz
something wrong when execute /usr/bin/perl shipwright_makefile.pl: 6400
the output is: Found locale en_US.UTF-8
Found wxWidgets 2.8.8
Found Wx.pm 0.91
Writing Makefile for Padre
the error is: Can't locate object method "Dump" via package
"Data::Dumper" at shipwright_makefile.pl line 102.
END failed--call queue aborted.
at /usr/local/share/perl/5.10.0/Shipwright/Util.pm line 72
Shipwright::Util::run('Shipwright::Util', 'ARRAY(0x9cf56d8)') called at
/usr/local/share/perl/5.10.0/Shipwright/Source/Base.pm line 303
Shipwright::Source::Base::_follow('Shipwright::Source::Compressed=HASH(0xb7b065b8)', '/tmp/shipwright_source_O6LBas/cpan-Padre') called at /usr/local/share/perl/5.10.0/Shipwright/Source/Compressed.pm line 33
Shipwright::Source::Compressed::run('Shipwright::Source::Compressed=HASH(0xb7b065b8)', 'copy', 'HASH(0x98c4868)') called at /usr/local/share/perl/5.10.0/Shipwright/Source/CPAN.pm line 87
Shipwright::Source::CPAN::run('Shipwright::Source::CPAN=HASH(0xa121968)', 'copy', 'HASH(0x98c4868)') called at /usr/local/share/perl/5.10.0/Shipwright/Script/Import.pm line 157
Shipwright::Script::Import::run('Shipwright::Script::Import=HASH(0x982cf10)', 'cpan:Padre') called at /usr/local/share/perl/5.10.0/App/CLI/Command.pm line 53
App::CLI::Command::run_command('Shipwright::Script::Import=HASH(0x982cf10)', 'cpan:Padre') called at /usr/local/share/perl/5.10.0/App/CLI.pm line 79
App::CLI::dispatch('Shipwright::Script') called at
/usr/local/bin/shipwright line 16
cannot remove path when cwd is /tmp/shipwright_source_O6LBas/cpan-Padre
for /tmp/shipwright_source_O6LBas: at
/usr/local/share/perl/5.10.0/File/Temp.pm line 902
$
---------->8----------
We got a chance to narrow it down, adding one dependency at a time, and
found that Test::ClassAPI (a package on Padre's dependency list) gives
the error (that we're assuming is related to the previous one):
----------8<----------
$ shipwright create -r fs:sw-test
created with success
$ shipwright import -r fs:sw-test cpan:Test::ClassAPI
CPAN related output will be at /tmp/shipwright_cpan.log
Fetching with LWP:
http://www.mirrorspace.org/cpan/authors/id/A/AD/ADAMK/Test-ClassAPI-1.06.tar.gz
eval error: at /usr/local/share/perl/5.10.0/Shipwright/Source/Base.pm
line 307
Shipwright::Source::Base::_follow('Shipwright::Source::Compressed=HASH(0xb7bed4a8)', '/tmp/shipwright_source_ghUhmA/cpan-Test-ClassAPI') called at /usr/local/share/perl/5.10.0/Shipwright/Source/Compressed.pm line 33
Shipwright::Source::Compressed::run('Shipwright::Source::Compressed=HASH(0xb7bed4a8)', 'copy', 'HASH(0xa28b800)') called at /usr/local/share/perl/5.10.0/Shipwright/Source/CPAN.pm line 87
Shipwright::Source::CPAN::run('Shipwright::Source::CPAN=HASH(0xaae8a90)', 'copy', 'HASH(0xa28b800)') called at /usr/local/share/perl/5.10.0/Shipwright/Script/Import.pm line 157
Shipwright::Script::Import::run('Shipwright::Script::Import=HASH(0xa1f3ef0)', 'cpan:Test::ClassAPI') called at /usr/local/share/perl/5.10.0/App/CLI/Command.pm line 53
App::CLI::Command::run_command('Shipwright::Script::Import=HASH(0xa1f3ef0)', 'cpan:Test::ClassAPI') called at /usr/local/share/perl/5.10.0/App/CLI.pm line 79
App::CLI::dispatch('Shipwright::Script') called at
/usr/local/bin/shipwright line 16
cannot remove path when cwd is
/tmp/shipwright_source_ghUhmA/cpan-Test-ClassAPI for
/tmp/shipwright_source_ghUhmA: at
/usr/local/share/perl/5.10.0/File/Temp.pm line 902
---------->8----------
Taking a look at Test::ClassAPI's Makefile.PL, we found that it's very
small and filled with Module::Install magic:
----------8<----------
use inc::Module::Install::DSL 0.91;
all_from lib/Test/ClassAPI.pm
requires_from lib/Test/ClassAPI.pm
---------->8----------
Sure enough, replacing it with an equivalent ExtUtils::MakeMaker version
(setting the PREREQ_PM hash with appropriate dependencies), turned out ok:
----------8<----------
$ shipwright import -r fs:sw-test
dir:Test-ClassAPI-1.06-with-replaced-makefile/
importing Test-ClassAPI
imported with success
---------->8----------
Which point to the problem being that shipwright's magic isn't mixing
very well with M:I's magic. It might be worth noticing that Padre's
Makefile.PL also has some dense M:I stuff that might yield even
different compatibility issues.
Hope this helps. We're really looking to being able to pack Padre with
Shipwright :)
Thanks!