jordansissel / fpm

Effing package management! Build packages for multiple platforms (deb, rpm, etc) with great ease and sanity.
http://fpm.readthedocs.io/en/latest/
Other
11.16k stars 1.07k forks source link

Can not package Data::Structure::Util #515

Open romabysen opened 11 years ago

romabysen commented 11 years ago

When I try to package Data::Structure::Util with "fpm -s cpan -t rpm Data::Structure::Util" I get the following error:

! Installing /tmp/package-cpan-build20130806-31164-i8r0u2/module failed. See /home/lars/.cpanm/work/1375775860.31190/build.log for details. Retry with --force to force install it. {:level=>:error, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20130806-31164-i8r0u2/cpan", "/tmp/package-cpan-build20130806-31164-i8r0u2/module"] {:level=>:error, :file=>"fpm/command.rb", :line=>"411"}

Interestingly enough it works fine with "cpanm Data::Structure::Util". This is on CentOS6.

jordansissel commented 11 years ago

The error message comes from cpanm or perl itself.

When I try it, it works for me:

% fpm -s cpan -t deb Data::Structure::Util
--> Working on /tmp/package-cpan-build20130806-3740-15hy4l7/module {:level=>:error}
Configuring Data-Structure-Util-0.15 ... OK {:level=>:error}
==> Found dependencies: Test::Pod {:level=>:error}
--> Working on Test::Pod {:level=>:error}
Fetching http://www.cpan.org/authors/id/D/DW/DWHEELER/Test-Pod-1.48.tar.gz ... OK {:level=>:error}
Configuring Test-Pod-1.48 ... OK {:level=>:error}
Building and testing Test-Pod-1.48 ... OK {:level=>:error}
Successfully installed Test-Pod-1.48 {:level=>:error}
Building and testing Data-Structure-Util-0.15 ... OK {:level=>:error}
Successfully installed Data-Structure-Util-0.15 {:level=>:error}
2 distributions installed {:level=>:error}
Downcasing dependency 'perl-Digest-MD5' because deb packages  don't work so good with uppercase names {:level=>:warn}
Downcasing dependency 'perl-Scalar-List-Utils' because deb packages  don't work so good with uppercase names {:level=>:warn}
Downcasing dependency 'perl-Test-Simple' because deb packages  don't work so good with uppercase names {:level=>:warn}
Downcasing dependency 'perl-Test-Pod' because deb packages  don't work so good with uppercase names {:level=>:warn}
Downcasing dependency 'perl-Test-Simple' because deb packages  don't work so good with uppercase names {:level=>:warn}
Debian tools (dpkg/apt) don't do well with packages that use capital letters in the name. In some cases it will automatically downcase them, in others it will not. It is confusing. Best to not use any capital letters at all. I have downcased the package name for you just to be safe. {:oldname=>"perl-Data-Structure-Util", :fixedname=>"perl-data-structure-util", :level=>:warn}
Created deb package {:path=>"perl-data-structure-util_0.15_amd64.deb"}
jordansissel commented 11 years ago

Can you attach the build log the error message from cpanm reports?

romabysen commented 11 years ago

Yes, it works for me too on Ubuntu creating both deb and rpm's. Must be something with cpanm/perl on CentOS6. Here's the log:

[lars@test1 ~]$ fpm -s cpan -t rpm --verbose Data::Structure::Util
Asking metacpan about a module {:module=>"Data::Structure::Util", :level=>:info}
Downloading perl module {:distribution=>"Data-Structure-Util", :version=>nil, :level=>:info}
Setting package name from 'name' {:name=>"Data-Structure-Util", :level=>:info}
Installing any build or configure dependencies {:level=>:info}
--> Working on /tmp/package-cpan-build20130806-7609-1grtljr/module {:level=>:info}
Configuring Data-Structure-Util-0.15 ... OK {:level=>:info}
==> Found dependencies: Test::Pod {:level=>:info}
--> Working on Test::Pod {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DW/DWHEELER/Test-Pod-1.48.tar.gz ... OK {:level=>:info}
==> Found dependencies: Module::Build {:level=>:info}
--> Working on Module::Build {:level=>:info}
Fetching http://www.cpan.org/authors/id/L/LE/LEONT/Module-Build-0.4007.tar.gz ... OK {:level=>:info}
==> Found dependencies: Module::Build {:level=>:info}
Configuring Module-Build-0.4007 ... OK {:level=>:info}
==> Found dependencies: Module::Metadata, CPAN::Meta, Perl::OSType, ExtUtils::CBuilder, Parse::CPAN::Meta, ExtUtils::ParseXS, version, CPAN::Meta::YAML {:level=>:info}
--> Working on Module::Metadata {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BO/BOBTFISH/Module-Metadata-1.000014.tar.gz ... OK {:level=>:info}
Configuring Module-Metadata-1.000014 ... OK {:level=>:info}
==> Found dependencies: version {:level=>:info}
--> Working on version {:level=>:info}
Fetching http://www.cpan.org/authors/id/J/JP/JPEACOCK/version-0.9902.tar.gz ... OK {:level=>:info}
Configuring version-0.9902 ... OK {:level=>:info}
Building and testing version-0.9902 ... OK {:level=>:info}
Successfully installed version-0.9902 (upgraded from 0.77) {:level=>:info}
Building and testing Module-Metadata-1.000014 ... OK {:level=>:info}
Successfully installed Module-Metadata-1.000014 {:level=>:info}
--> Working on CPAN::Meta {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-2.132140.tar.gz ... OK {:level=>:info}
Configuring CPAN-Meta-2.132140 ... OK {:level=>:info}
==> Found dependencies: Parse::CPAN::Meta, CPAN::Meta::YAML, JSON::PP, CPAN::Meta::Requirements {:level=>:info}
--> Working on Parse::CPAN::Meta {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Parse-CPAN-Meta-1.4405.tar.gz ... OK {:level=>:info}
Configuring Parse-CPAN-Meta-1.4405 ... OK {:level=>:info}
==> Found dependencies: CPAN::Meta::YAML, JSON::PP {:level=>:info}
--> Working on CPAN::Meta::YAML {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-YAML-0.008.tar.gz ... OK {:level=>:info}
Configuring CPAN-Meta-YAML-0.008 ... OK {:level=>:info}
Building and testing CPAN-Meta-YAML-0.008 ... OK {:level=>:info}
Successfully installed CPAN-Meta-YAML-0.008 {:level=>:info}
--> Working on JSON::PP {:level=>:info}
Fetching http://www.cpan.org/authors/id/M/MA/MAKAMAKA/JSON-PP-2.27202.tar.gz ... OK {:level=>:info}
Configuring JSON-PP-2.27202 ... OK {:level=>:info}
Building and testing JSON-PP-2.27202 ... OK {:level=>:info}
Successfully installed JSON-PP-2.27202 {:level=>:info}
Building and testing Parse-CPAN-Meta-1.4405 ... OK {:level=>:info}
Successfully installed Parse-CPAN-Meta-1.4405 {:level=>:info}
--> Working on CPAN::Meta::Requirements {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/CPAN-Meta-Requirements-2.122.tar.gz ... OK {:level=>:info}
Configuring CPAN-Meta-Requirements-2.122 ... OK {:level=>:info}
Building and testing CPAN-Meta-Requirements-2.122 ... OK {:level=>:info}
Successfully installed CPAN-Meta-Requirements-2.122 {:level=>:info}
Building and testing CPAN-Meta-2.132140 ... OK {:level=>:info}
Successfully installed CPAN-Meta-2.132140 {:level=>:info}
--> Working on Perl::OSType {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Perl-OSType-1.003.tar.gz ... OK {:level=>:info}
Configuring Perl-OSType-1.003 ... OK {:level=>:info}
Building and testing Perl-OSType-1.003 ... OK {:level=>:info}
Successfully installed Perl-OSType-1.003 {:level=>:info}
--> Working on ExtUtils::CBuilder {:level=>:info}
Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/ExtUtils-CBuilder-0.280205.tar.gz ... OK {:level=>:info}
Configuring ExtUtils-CBuilder-0.280205 ... OK {:level=>:info}
==> Found dependencies: IPC::Cmd {:level=>:info}
--> Working on IPC::Cmd {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/IPC-Cmd-0.82.tar.gz ... OK {:level=>:info}
Configuring IPC-Cmd-0.82 ... OK {:level=>:info}
==> Found dependencies: Locale::Maketext::Simple, Module::Load::Conditional, Params::Check {:level=>:info}
--> Working on Locale::Maketext::Simple {:level=>:info}
Fetching http://www.cpan.org/authors/id/J/JE/JESSE/Locale-Maketext-Simple-0.21.tar.gz ... OK {:level=>:info}
Configuring Locale-Maketext-Simple-0.21 ... OK {:level=>:info}
Building and testing Locale-Maketext-Simple-0.21 ... OK {:level=>:info}
Successfully installed Locale-Maketext-Simple-0.21 {:level=>:info}
--> Working on Module::Load::Conditional {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/Module-Load-Conditional-0.54.tar.gz ... OK {:level=>:info}
Configuring Module-Load-Conditional-0.54 ... OK {:level=>:info}
==> Found dependencies: Module::Load, Module::CoreList, Params::Check {:level=>:info}
--> Working on Module::Load {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/Module-Load-0.24.tar.gz ... OK {:level=>:info}
Configuring Module-Load-0.24 ... OK {:level=>:info}
Building and testing Module-Load-0.24 ... OK {:level=>:info}
Successfully installed Module-Load-0.24 {:level=>:info}
--> Working on Module::CoreList {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/Module-CoreList-2.94.tar.gz ... OK {:level=>:info}
Configuring Module-CoreList-2.94 ... OK {:level=>:info}
Building and testing Module-CoreList-2.94 ... OK {:level=>:info}
Successfully installed Module-CoreList-2.94 (upgraded from 2.18) {:level=>:info}
--> Working on Params::Check {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/Params-Check-0.38.tar.gz ... OK {:level=>:info}
Configuring Params-Check-0.38 ... OK {:level=>:info}
Building and testing Params-Check-0.38 ... OK {:level=>:info}
Successfully installed Params-Check-0.38 {:level=>:info}
Building and testing Module-Load-Conditional-0.54 ... OK {:level=>:info}
Successfully installed Module-Load-Conditional-0.54 {:level=>:info}
Building and testing IPC-Cmd-0.82 ... OK {:level=>:info}
Successfully installed IPC-Cmd-0.82 {:level=>:info}
Building and testing ExtUtils-CBuilder-0.280205 ... OK {:level=>:info}
Successfully installed ExtUtils-CBuilder-0.280205 (upgraded from 0.2602) {:level=>:info}
--> Working on ExtUtils::ParseXS {:level=>:info}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/ExtUtils-ParseXS-3.18.tar.gz ... OK {:level=>:info}
Configuring ExtUtils-ParseXS-3.18 ... OK {:level=>:info}
Building and testing ExtUtils-ParseXS-3.18 ... OK {:level=>:info}
Successfully installed ExtUtils-ParseXS-3.18 (upgraded from 2.2002) {:level=>:info}
Building and testing Module-Build-0.4007 ... OK {:level=>:info}
Successfully installed Module-Build-0.4007 (upgraded from 0.340201) {:level=>:info}
Configuring Test-Pod-1.48 ... OK {:level=>:info}
Building and testing Test-Pod-1.48 ... OK {:level=>:info}
Successfully installed Test-Pod-1.48 {:level=>:info}
Building and testing Data-Structure-Util-0.15 ... FAIL {:level=>:info}
18 distributions installed {:level=>:info}
! Installing /tmp/package-cpan-build20130806-7609-1grtljr/module failed. See /home/lars/.cpanm/work/1375779027.7707/build.log for details. Retry with --force to force install it. {:level=>:error}
Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20130806-7609-1grtljr/cpan", "/tmp/package-cpan-build20130806-7609-1grtljr/module"] {:level=>:error}
romabysen commented 11 years ago

Wait, that's not the build log. Here's the error from the build log:

...
Files=11, Tests=20,  1 wallclock secs ( 0.05 usr  0.07 sys +  0.43 cusr  0.16 csys =  0.71 CPU)
Result: PASS
Building Test-Pod
Installing /tmp/package-cpan-build20130806-7609-1grtljr/cpan/lib/perl5/Test/Pod.pm
-> OK
Successfully installed Test-Pod-1.48
Installing /tmp/package-cpan-build20130806-7609-1grtljr/cpan/lib/perl5/x86_64-linux-thread-multi/.meta/Test-Pod-1.48/install.json
Installing /tmp/package-cpan-build20130806-7609-1grtljr/cpan/lib/perl5/x86_64-linux-thread-multi/.meta/Test-Pod-1.48/MYMETA.json
Building and testing Data-Structure-Util-0.15
cp lib/Data/Structure/Util.pm blib/lib/Data/Structure/Util.pm
AutoSplitting blib/lib/Data/Structure/Util.pm (blib/lib/auto/Data/Structure/Util)
/usr/bin/perl /usr/share/perl5/ExtUtils/xsubpp  -typemap /usr/share/perl5/ExtUtils/typemap  Util.xs > Util.xsc && mv Util.xsc Util.c
Undefined subroutine &ExtUtils::ParseXS::errors called at /usr/share/perl5/ExtUtils/xsubpp line 44.
make: *** [Util.c] Error 255
-> FAIL Installing /tmp/package-cpan-build20130806-7609-1grtljr/module failed. See /home/lars/.cpanm/work/1375779027.7707/build.log for details. Retry with --force to force install it.
18 distributions installed
romabysen commented 11 years ago

Maybe it's because cpanm (temporarily?) upgrades ExtUtils::ParseXS to 3.18 but the one from the base system is still used?

romabysen commented 11 years ago

Ok, the way I got this working was to do "cpanm ExtUtils::ParseXS" so that its installed in ~/perl5.

hatt commented 11 years ago

This looks like the library path issue that got fixed in #500. Basically path precedence was incorrect so system libs were sometimes used instead, particularly with ExtUtils::MakeMaker built libs. It's already fixed in code but I'm not sure if there has been a new gem release since then.

satoshi commented 10 years ago

I have the same issue on CentOS 7 fresh install (GNOME desktop). I just installed cpanm, ruby-devel, gcc and installed fpm via gem install:

[root@localhost ~]# fpm --version
1.2.0
[root@localhost ~]# cpanm --version
cpanm (App::cpanminus) version 1.6922 (/bin/cpanm)
perl version 5.016003 (/usr/bin/perl)

  %Config:
    archname=x86_64-linux-thread-multi
    installsitelib=/usr/local/share/perl5
    installsitebin=/usr/local/bin
    installman1dir=/usr/share/man/man1
    installman3dir=/usr/share/man/man3
    sitelibexp=/usr/local/share/perl5
    archlibexp=/usr/lib64/perl5
    privlibexp=/usr/share/perl5
  %ENV:
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5

For some reason, it is not finding ExtUtil::MakeMaker, even though I have it installed:

[root@localhost ~]# perldoc -l ExtUtils::MakeMaker
/usr/share/perl5/vendor_perl/ExtUtils/MakeMaker.pm

[root@localhost ~]# rpm -qf /usr/share/perl5/vendor_perl/ExtUtils/MakeMaker.pm
perl-ExtUtils-MakeMaker-6.68-3.el7.noarch

[root@localhost ~]# fpm --verbose -s cpan -t rpm Parallel::ForkManager
Asking metacpan about a module {:module=>"Parallel::ForkManager", :level=>:info}
Downloading perl module {:distribution=>"Parallel-ForkManager", :version=>nil, :level=>:info}
Setting package name from 'name' {:name=>"Parallel-ForkManager", :level=>:info}
Installing any build or configure dependencies {:level=>:info}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info}
--> Working on ExtUtils::MakeMaker {:level=>:info}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz ... OK {:level=>:info}
Configuring ExtUtils-MakeMaker-6.98 ... OK {:level=>:info}
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man {:level=>:info}
--> Working on Data::Dumper {:level=>:info}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz ... OK {:level=>:info}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info}
! Bailing out the installation for Data-Dumper-2.151. {:level=>:info}
--> Working on File::Spec {:level=>:info}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz ... OK {:level=>:info}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info}
! Bailing out the installation for PathTools-3.47. {:level=>:info}
--> Working on Pod::Man {:level=>:info}
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz ... OK {:level=>:info}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info}
! Bailing out the installation for podlators-v2.5.3. {:level=>:info}
! Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed {:level=>:info}
! Bailing out the installation for ExtUtils-MakeMaker-6.98. {:level=>:info}
--> Working on /tmp/package-cpan-build20140803-5141-u0e5iq/module {:level=>:info}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info}
! Bailing out the installation for Parallel-ForkManager-1.06. {:level=>:info}
Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20140803-5141-u0e5iq/cpan", "/tmp/package-cpan-build20140803-5141-u0e5iq/module", "-n"] {:level=>:error}

Any idea how to fix the problem? I recollect being able to build cpan packages into RPM in the past, so I'm not quite sure what has changed. It could be the way RedHat packages Perl.

Here is the build.log, although there isn't much to it:

[root@localhost .cpanm]# pwd
/root/.cpanm

[root@localhost .cpanm]# cat build.log 
cpanm (App::cpanminus) 1.6922 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1407045910.5194
You have make /bin/make
You have LWP 6.05
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /bin/unzip
miked63017 commented 10 years ago

I would try to rebuild the extutils makemaker rpm. I ran across similar issues with fpm and perl modules from the EL6 repo not working right. I rebuilt the rpms with fpm by make install with a DESTDIR flag and fpm -s dir -t rpm -n whatever -v newerversionthanrepo -C DESTDIR lib. Then installed my homemade rpm in favor of the EL6 one, afterwards fpm with the cpanm plugin worked fine. I believe it was EL6.5 and I had to manually build 2 or 3 perl modules for fpm to build Moose. On Aug 6, 2013 3:06 AM, "Lars Hansson" notifications@github.com wrote:

When I try to package Data::Structure::Util with "fpm -s cpan -t rpm Data::Structure::Util" I get the following error:

! Installing /tmp/package-cpan-build20130806-31164-i8r0u2/module failed. See /home/lars/.cpanm/work/1375775860.31190/build.log for details. Retry with --force to force install it. {:level=>:error, :file=>"cabin/mixins/pipe.rb", :line=>"46"} Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20130806-31164-i8r0u2/cpan", "/tmp/package-cpan-build20130806-31164-i8r0u2/module"] {:level=>:error, :file=>"fpm/command.rb", :line=>"411"}

Interestingly enough it works fine with "cpanm Data::Structure::Util". This is on CentOS6.

— Reply to this email directly or view it on GitHub https://github.com/jordansissel/fpm/issues/515.

satoshi commented 10 years ago

I see, let me try that and see what happens. I rebuilt from source rpm to no avail, but your approach may work.

satoshi commented 10 years ago

No dice. I downloaded ExtUtils::MakeMaker 6.98 from CPAN, ran configure make then make installed with DESTDIR, packaged it up as rpm from fpm, installed it forcibly (as it had conflicts with perl-lib).

That did not fix the detection of ExtUtils::MakeMaker, however.

[root@localhost ~]# perldoc -l ExtUtils::MakeMaker
/usr/local/share/perl5/ExtUtils/MakeMaker.pm

[root@localhost ~]# rpm -qa | grep MakeMaker
perl-ExtUtils-MakeMaker-6.98-1.el7.x86_64

One thing interesting is the build log:

cpanm (App::cpanminus) 1.6922 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1407104134.6059
You have make /bin/make
You have LWP 6.05
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /bin/unzip
Checking if you have ExtUtils::MakeMaker 6.31 ... No
Checking if you have ExtUtils::Install 1.46 ... Yes (1.58)
==> Found dependencies: ExtUtils::MakeMaker
Searching ExtUtils::MakeMaker on cpanmetadb ...
--> Working on ExtUtils::MakeMaker
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz
-> OK
Unpacking ExtUtils-MakeMaker-6.98.tar.gz
Entering ExtUtils-MakeMaker-6.98
Checking configure dependencies from META.json
Configuring ExtUtils-MakeMaker-6.98
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::MakeMaker
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have Data::Dumper 0 ... No
Checking if you have File::Spec 0.8 ... No
Checking if you have Pod::Man 0 ... No
Checking if you have File::Basename 0 ... Yes (2.84)
Checking if you have DirHandle 0 ... Yes (1.04)
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man
Searching Data::Dumper on cpanmetadb ...
--> Working on Data::Dumper
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz
-> OK
Unpacking Data-Dumper-2.151.tar.gz
Entering Data-Dumper-2.151
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Data-Dumper-2.151.
Searching File::Spec on cpanmetadb ...
--> Working on File::Spec
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz
-> OK
Unpacking PathTools-3.47.tar.gz
Entering PathTools-3.47
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for PathTools-3.47.
Searching Pod::Man on cpanmetadb ...
--> Working on Pod::Man
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz
-> OK
Unpacking podlators-2.5.3.tar.gz
Entering podlators-2.5.3
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for podlators-v2.5.3.
-> FAIL Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed
-> FAIL Bailing out the installation for ExtUtils-MakeMaker-6.98.
--> Working on /tmp/package-cpan-build20140803-6053-5xy3h5/module
Entering /tmp/package-cpan-build20140803-6053-5xy3h5/module
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Parallel-ForkManager-1.06.

So cpanm is somehow not finding ExtUtils::MakeMaker, and that's probably where the problem is. Pretty much everything depends on it.

hatt commented 10 years ago

@satoshi thanks for the info, are you able to dump the cpanm build log and provide the same run as above but with --verbose --debug passed to FPM? It looks like path precedence is wrong, this seems to happen when the build root isn't what is expected. Also, are you using standard system Perl or a custom one from perlbrew/plenv/similar?

satoshi commented 10 years ago

Sure, let me do another run and provide the latest logs as you requested. I am using system Perl on CentOS 7 fresh install with GNOME Desktop package selected.

satoshi commented 10 years ago

Here is the fpm log:

[root@localhost ~]# fpm -s cpan -t rpm --verbose --debug Parallel::ForkManager
Setting attribute {:output_type=>"rpm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:input_type=>"cpan", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:chdir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:package=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:force?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:name=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:verbose?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:debug?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:debug_workspace?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:version=>1.0, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:iteration=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:epoch=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:license=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:vendor=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:category=>"none", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:dependencies=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:no_depends?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:no_auto_depends?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:provides=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:conflicts=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:replaces=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:config_files=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:directories=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:architecture=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:maintainer=>"<root@localhost.localdomain>", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:package_name_suffix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:edit?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:excludes=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:description=>"no description", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:url=>"http://example.com/no-uri-given", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:inputs=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:post_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pre_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:post_uninstall=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pre_uninstall=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:after_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:before_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:after_remove=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:before_remove=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:template_scripts?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:template_value_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:workdir=>"/tmp", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_bin_path=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_package_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_package_name_prefix=>"rubygem", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_gem=>"gem", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_fix_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_fix_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_env_shebang?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_prerelease?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_disable_dependencies=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_version_bins?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_ignore_iteration_in_dependencies?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_build_depends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_pre_depends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_compression=>"gz", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_custom_control=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_config=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_templates=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_installed_size=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_priority=>"extra", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_use_file_permissions?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_user=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_group=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_changelog=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_recommends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_suggests=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_meta_file=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_interest=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_activate=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_field=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_shlibs=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_init_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_default_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_upstart_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_bin=>"npm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_package_name_prefix=>"node", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_registry=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_use_file_permissions?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_user=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_group=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_defattrfile=>"-", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_defattrdir=>"-", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_rpmbuild_define=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_digest=>"md5", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_compression=>"gzip", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_os=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_changelog=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_sign?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_auto_add_directories?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:auto_add_exclude_directories=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoreqprov?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoreq?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoprov?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:attrs=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_filter_from_provides=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_filter_from_requires=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_ignore_iteration_in_dependencies?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_verbatim_gem_dependencies?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_verifyscript=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_pretrans=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_posttrans=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_perl_bin=>"perl", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_cpanm_bin=>"cpanm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_mirror=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_mirror_only?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_package_name_prefix=>"perl", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_test?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_perl_lib_path=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_package_name_prefix=>"php-pear", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_channel=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_channel_update?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_bin_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_php_bin=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_php_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_data_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_bin=>"python", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_easyinstall=>"easy_install", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_pip=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_pypi=>"http://pypi.python.org/simple", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_package_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_package_name_prefix=>"python", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_fix_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_fix_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_downcase_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_downcase_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_bin=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_lib=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_data=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_obey_requirements_txt?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_scripts_executable=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_identifier_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_payload_free?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_ownership=>"recommended", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_postinstall_action=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_dont_obsolete=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:solaris_user=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:solaris_group=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Asking metacpan about a module {:module=>"Parallel::ForkManager", :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"301"}
Downloading perl module {:distribution=>"Parallel-ForkManager", :version=>nil, :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"246"}
Fetching perl module {:url=>"http://www.cpan.org//authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz", :level=>:debug, :file=>"fpm/package/cpan.rb", :line=>"282"}
Running command {:args=>["tar", "-C", "/tmp/package-cpan-build20140804-2421-8pbzhu/module", "-zxf", "/tmp/package-cpan-build20140804-2421-8pbzhu/Parallel-ForkManager-1.06.tar.gz", "--strip-components", "1"], :level=>:debug, :file=>"fpm/util.rb", :line=>"59"}
Process is running {:pid=>2423, :level=>:debug, :file=>"fpm/util.rb", :line=>"72"}
Setting package name from 'name' {:name=>"Parallel-ForkManager", :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"80"}
Installing any build or configure dependencies {:level=>:info, :file=>"fpm/package/cpan.rb", :line=>"95"}
Running command {:args=>["cpanm", "-L", "/tmp/package-cpan-build20140804-2421-8pbzhu/cpan", "/tmp/package-cpan-build20140804-2421-8pbzhu/module", "-n"], :level=>:debug, :file=>"fpm/util.rb", :line=>"59"}
Process is running {:pid=>2427, :level=>:debug, :file=>"fpm/util.rb", :line=>"72"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Configuring ExtUtils-MakeMaker-6.98 ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on Data::Dumper {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for Data-Dumper-2.151. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on File::Spec {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for PathTools-3.47. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on Pod::Man {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for podlators-v2.5.3. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for ExtUtils-MakeMaker-6.98. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on /tmp/package-cpan-build20140804-2421-8pbzhu/module {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for Parallel-ForkManager-1.06. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20140804-2421-8pbzhu/cpan", "/tmp/package-cpan-build20140804-2421-8pbzhu/module", "-n"] {:level=>:error, :file=>"fpm/command.rb", :line=>"439"}

Here is the cpanm build.log:

[root@localhost .cpanm]# cat build.log 
cpanm (App::cpanminus) 1.6922 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1407126166.2427
You have make /bin/make
You have LWP 6.05
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /bin/unzip
Checking if you have ExtUtils::MakeMaker 6.31 ... No
Checking if you have ExtUtils::Install 1.46 ... Yes (1.58)
==> Found dependencies: ExtUtils::MakeMaker
Searching ExtUtils::MakeMaker on cpanmetadb ...
--> Working on ExtUtils::MakeMaker
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz
-> OK
Unpacking ExtUtils-MakeMaker-6.98.tar.gz
Entering ExtUtils-MakeMaker-6.98
Checking configure dependencies from META.json
Configuring ExtUtils-MakeMaker-6.98
Running Makefile.PL
Using included version of JSON::PP::Compat5006 (1.09) because it is not already installed.
Using included version of JSON::PP (2.27203) as it is newer than the installed version (2.27202).
Using included version of File::Copy::Recursive (0.38) because it is not already installed.
Using included version of Parse::CPAN::Meta (1.4405) as it is newer than the installed version (1.4404).
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::MakeMaker
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have Data::Dumper 0 ... No
Checking if you have File::Spec 0.8 ... No
Checking if you have Pod::Man 0 ... No
Checking if you have File::Basename 0 ... Yes (2.84)
Checking if you have DirHandle 0 ... Yes (1.04)
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man
Searching Data::Dumper on cpanmetadb ...
--> Working on Data::Dumper
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz
-> OK
Unpacking Data-Dumper-2.151.tar.gz
Entering Data-Dumper-2.151
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Data-Dumper-2.151.
Searching File::Spec on cpanmetadb ...
--> Working on File::Spec
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz
-> OK
Unpacking PathTools-3.47.tar.gz
Entering PathTools-3.47
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for PathTools-3.47.
Searching Pod::Man on cpanmetadb ...
--> Working on Pod::Man
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz
-> OK
Unpacking podlators-2.5.3.tar.gz
Entering podlators-2.5.3
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for podlators-v2.5.3.
-> FAIL Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed
-> FAIL Bailing out the installation for ExtUtils-MakeMaker-6.98.
--> Working on /tmp/package-cpan-build20140804-2421-8pbzhu/module
Entering /tmp/package-cpan-build20140804-2421-8pbzhu/module
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Parallel-ForkManager-1.06.

Thanks for looking into this, much appreciated.

hatt commented 10 years ago

@satoshi it looks like cpanm didn't find your system perl lib path when installing MM, I think what's happening is that since you have a custom PERL5LIB path (/usr/local/share), you'll need to override the env var for it. Can you show me the output of echo $PERL5LIB?

satoshi commented 10 years ago

Sure, it's not set to anything. I undid the ExtUtils::MakeMaker change I made earlier, so my current environment is pretty much stock CentOS7 out of the box, using system Perl with no gimmicks.

[root@localhost ~]# echo $PERL5LIB

[root@localhost ~]# perl -V
Summary of my perl5 (revision 5 version 16 subversion 3) configuration:

  Platform:
    osname=linux, osvers=2.6.32-220.17.1.el6.x86_64, archname=x86_64-linux-thread-multi
    uname='linux worker1.bsys.centos.org 2.6.32-220.17.1.el6.x86_64 #1 smp wed may 16 00:01:37 bst 2012 x86_64 x86_64 x86_64 gnulinux '
    config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Dccdlflags=-Wl,--enable-new-dtags -Dlddlflags=-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches   -m64 -mtune=generic -Wl,-z,relro  -DDEBUGGING=-g -Dversion=5.16.3 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dprefix=/usr -Dvendorprefix=/usr -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl5 -Dsitearch=/usr/local/lib64/perl5 -Dprivlib=/usr/share/perl5 -Dvendorlib=/usr/share/perl5/vendor_perl -Darchlib=/usr/lib64/perl5 -Dvendorarch=/usr/lib64/perl5/vendor_perl -Darchname=x86_64-linux-thread-multi -Dlibpth=/usr/local/lib64 /lib64 /usr/lib64 -Duseshrplib -Dusethreads -Duseithreads -Dusedtrace=/usr/bin/dtrace -Duselargefiles -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dscriptdir=/usr/bin -Dusesitecustomize'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.8.2 20140120 (Red Hat 4.8.2-16)', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -fstack-protector'
    libpth=/usr/local/lib64 /lib64 /usr/lib64
    libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc -lgdbm_compat
    perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.17'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,--enable-new-dtags -Wl,-rpath,/usr/lib64/perl5/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wl,-z,relro '

Characteristics of this binary (from libperl): 
  Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
                        PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
                        PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_ALL
                        USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                        USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API USE_SITECUSTOMIZE
  Locally applied patches:
    Fedora Patch1: Removes date check, Fedora/RHEL specific
    Fedora Patch3: support for libdir64
    Fedora Patch4: use libresolv instead of libbind
    Fedora Patch5: USE_MM_LD_RUN_PATH
    Fedora Patch6: Skip hostname tests, due to builders not being network capable
    Fedora Patch7: Dont run one io test due to random builder failures
    Fedora Patch9: Fix find2perl to translate ? glob properly (RT#113054)
    Fedora Patch10: Fix broken atof (RT#109318)
    Fedora Patch13: Clear $@ before "do" I/O error (RT#113730)
    Fedora Patch14: Do not truncate syscall() return value to 32 bits (RT#113980)
    Fedora Patch15: Override the Pod::Simple::parse_file (CPANRT#77530)
    Fedora Patch16: Do not leak with attribute on my variable (RT#114764)
    Fedora Patch17: Allow operator after numeric keyword argument (RT#105924)
    Fedora Patch18: Extend stack in File::Glob::glob, (RT#114984)
    Fedora Patch19: Do not crash when vivifying $|
    Fedora Patch20: Fix misparsing of maketext strings (CVE-2012-6329)
    Fedora Patch21: Add NAME headings to CPAN modules (CPANRT#73396)
    Fedora Patch22: Fix leaking tied hashes (RT#107000) [1]
    Fedora Patch23: Fix leaking tied hashes (RT#107000) [2]
    Fedora Patch24: Fix leaking tied hashes (RT#107000) [3]
    Fedora Patch25: Fix dead lock in PerlIO after fork from thread (RT#106212)
    Fedora Patch26: Make regexp safe in a signal handler (RT#114878)
    Fedora Patch27: Update h2ph(1) documentation (RT#117647)
    Fedora Patch28: Update pod2html(1) documentation (RT#117623)
    Fedora Patch29: Document Math::BigInt::CalcEmu requires Math::BigInt (CPAN RT#85015)
  Built under linux
  Compiled at Jun 17 2014 17:36:59
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5
    .

[root@localhost ~]# perldoc -l ExtUtils::MakeMaker
/usr/share/perl5/vendor_perl/ExtUtils/MakeMaker.pm

[root@localhost ~]# rpm -qf /usr/share/perl5/vendor_perl/ExtUtils/MakeMaker.pm
perl-ExtUtils-MakeMaker-6.68-3.el7.noarch
hatt commented 10 years ago

How about cpanm --version? Somewhere along the line, @INC is getting ignored or read incorrectly.

satoshi commented 10 years ago

Here it is.

[root@localhost ~]# cpanm --version
cpanm (App::cpanminus) version 1.6922 (/bin/cpanm)
perl version 5.016003 (/usr/bin/perl)

  %Config:
    archname=x86_64-linux-thread-multi
    installsitelib=/usr/local/share/perl5
    installsitebin=/usr/local/bin
    installman1dir=/usr/share/man/man1
    installman3dir=/usr/share/man/man3
    sitelibexp=/usr/local/share/perl5
    archlibexp=/usr/lib64/perl5
    privlibexp=/usr/share/perl5
  %ENV:
  @INC:
    /usr/local/lib64/perl5
    /usr/local/share/perl5
    /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
    /usr/share/perl5
    .
hatt commented 10 years ago

Ok, that all looks fine, weird. Can you run FPM with --cpan-perl-lib-path /usr/share/perl5? From looking at the code and my commits, I only confirmed this works properly with MB and not MM. That should set a custom LIB variable into cpanm. It also might be worth installing local::lib just in case. The system requirements for this were never well documented on our side tbh.

satoshi commented 10 years ago

Sure thing. I installed local::lib via yum install perl-local-lib.

[root@localhost ~]# perldoc -l local::lib
/usr/share/perl5/vendor_perl/local/lib.pm

[root@localhost ~]# fpm -s cpan -t rpm --debug --verbose --cpan-perl-lib-path /usr/share/perl5 Parallel::ForkManager
Setting attribute {:output_type=>"rpm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:input_type=>"cpan", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:chdir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:package=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:force?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:name=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:verbose?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:debug?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:debug_workspace?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:version=>1.0, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:iteration=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:epoch=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:license=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:vendor=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:category=>"none", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:dependencies=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:no_depends?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:no_auto_depends?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:provides=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:conflicts=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:replaces=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:config_files=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:directories=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:architecture=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:maintainer=>"<root@localhost.localdomain>", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:package_name_suffix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:edit?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:excludes=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:description=>"no description", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:url=>"http://example.com/no-uri-given", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:inputs=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:post_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pre_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:post_uninstall=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pre_uninstall=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:after_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:before_install=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:after_remove=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:before_remove=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:template_scripts?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:template_value_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:workdir=>"/tmp", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_bin_path=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_package_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_package_name_prefix=>"rubygem", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_gem=>"gem", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_fix_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_fix_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_env_shebang?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_prerelease?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_disable_dependencies=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:gem_version_bins?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_ignore_iteration_in_dependencies?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_build_depends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_pre_depends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_compression=>"gz", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_custom_control=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_config=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_templates=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_installed_size=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_priority=>"extra", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_use_file_permissions?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_user=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_group=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_changelog=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_recommends=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_suggests=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_meta_file=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_interest=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_activate=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_field=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_shlibs=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_init_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_default_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:deb_upstart_list=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_bin=>"npm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_package_name_prefix=>"node", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:npm_registry=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_use_file_permissions?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_user=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_group=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_defattrfile=>"-", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_defattrdir=>"-", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_rpmbuild_define=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_digest=>"md5", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_compression=>"gzip", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_os=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_changelog=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_sign?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_auto_add_directories?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:auto_add_exclude_directories=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoreqprov?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoreq?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_autoprov?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:attrs=>[], :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_filter_from_provides=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_filter_from_requires=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_ignore_iteration_in_dependencies?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_verbatim_gem_dependencies?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_verifyscript=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_pretrans=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:rpm_posttrans=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_perl_bin=>"perl", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_cpanm_bin=>"cpanm", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_mirror=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_mirror_only?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_package_name_prefix=>"perl", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_test?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:cpan_perl_lib_path=>"/usr/share/perl5", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_package_name_prefix=>"php-pear", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_channel=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_channel_update?=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_bin_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_php_bin=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_php_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:pear_data_dir=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_bin=>"python", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_easyinstall=>"easy_install", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_pip=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_pypi=>"http://pypi.python.org/simple", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_package_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_package_name_prefix=>"python", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_fix_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_fix_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_downcase_name?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_downcase_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_bin=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_lib=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_install_data=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_dependencies?=>true, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_obey_requirements_txt?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:python_scripts_executable=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_identifier_prefix=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_payload_free?=>false, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_ownership=>"recommended", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_postinstall_action=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:osxpkg_dont_obsolete=>nil, :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:solaris_user=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Setting attribute {:solaris_group=>"root", :level=>:debug, :file=>"fpm/command.rb", :line=>"293"}
Asking metacpan about a module {:module=>"Parallel::ForkManager", :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"301"}
Downloading perl module {:distribution=>"Parallel-ForkManager", :version=>nil, :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"246"}
Fetching perl module {:url=>"http://www.cpan.org//authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz", :level=>:debug, :file=>"fpm/package/cpan.rb", :line=>"282"}
Running command {:args=>["tar", "-C", "/tmp/package-cpan-build20140804-3383-1su2i5t/module", "-zxf", "/tmp/package-cpan-build20140804-3383-1su2i5t/Parallel-ForkManager-1.06.tar.gz", "--strip-components", "1"], :level=>:debug, :file=>"fpm/util.rb", :line=>"59"}
Process is running {:pid=>3385, :level=>:debug, :file=>"fpm/util.rb", :line=>"72"}
Setting package name from 'name' {:name=>"Parallel-ForkManager", :level=>:info, :file=>"fpm/package/cpan.rb", :line=>"80"}
Installing any build or configure dependencies {:level=>:info, :file=>"fpm/package/cpan.rb", :line=>"95"}
Running command {:args=>["cpanm", "-L", "/tmp/package-cpan-build20140804-3383-1su2i5t/cpan", "/tmp/package-cpan-build20140804-3383-1su2i5t/module", "-n"], :level=>:debug, :file=>"fpm/util.rb", :line=>"59"}
Process is running {:pid=>3389, :level=>:debug, :file=>"fpm/util.rb", :line=>"72"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Configuring ExtUtils-MakeMaker-6.98 ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on Data::Dumper {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for Data-Dumper-2.151. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on File::Spec {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for PathTools-3.47. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on Pod::Man {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz ... OK {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for podlators-v2.5.3. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for ExtUtils-MakeMaker-6.98. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
--> Working on /tmp/package-cpan-build20140804-3383-1su2i5t/module {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
==> Found dependencies: ExtUtils::MakeMaker {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
! Bailing out the installation for Parallel-ForkManager-1.06. {:level=>:info, :file=>"cabin/mixins/pipe.rb", :line=>"46"}
Process failed: cpanm failed (exit code 1). Full command was:["cpanm", "-L", "/tmp/package-cpan-build20140804-3383-1su2i5t/cpan", "/tmp/package-cpan-build20140804-3383-1su2i5t/module", "-n"] {:level=>:error, :file=>"fpm/command.rb", :line=>"439"}
satoshi commented 10 years ago

Here is the cpanm build log in case you might be interested:

[root@localhost ~]# cat .cpanm/build.log 
cpanm (App::cpanminus) 1.6922 on perl 5.016003 built for x86_64-linux-thread-multi
Work directory is /root/.cpanm/work/1407131295.3389
You have make /bin/make
You have LWP 6.05
You have /bin/tar: tar (GNU tar) 1.26
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
You have /bin/unzip
Checking if you have ExtUtils::MakeMaker 6.31 ... No
Checking if you have ExtUtils::Install 1.46 ... Yes (1.58)
==> Found dependencies: ExtUtils::MakeMaker
Searching ExtUtils::MakeMaker on cpanmetadb ...
--> Working on ExtUtils::MakeMaker
Fetching http://www.cpan.org/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-6.98.tar.gz
-> OK
Unpacking ExtUtils-MakeMaker-6.98.tar.gz
Entering ExtUtils-MakeMaker-6.98
Checking configure dependencies from META.json
Configuring ExtUtils-MakeMaker-6.98
Running Makefile.PL
Using included version of JSON::PP::Compat5006 (1.09) because it is not already installed.
Using included version of JSON::PP (2.27203) as it is newer than the installed version (2.27202).
Using included version of File::Copy::Recursive (0.38) because it is not already installed.
Using included version of Parse::CPAN::Meta (1.4405) as it is newer than the installed version (1.4404).
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::MakeMaker
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have Data::Dumper 0 ... No
Checking if you have File::Spec 0.8 ... No
Checking if you have Pod::Man 0 ... No
Checking if you have File::Basename 0 ... Yes (2.84)
Checking if you have DirHandle 0 ... Yes (1.04)
==> Found dependencies: Data::Dumper, File::Spec, Pod::Man
Searching Data::Dumper on cpanmetadb ...
--> Working on Data::Dumper
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/Data-Dumper-2.151.tar.gz
-> OK
Unpacking Data-Dumper-2.151.tar.gz
Entering Data-Dumper-2.151
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Data-Dumper-2.151.
Searching File::Spec on cpanmetadb ...
--> Working on File::Spec
Fetching http://www.cpan.org/authors/id/S/SM/SMUELLER/PathTools-3.47.tar.gz
-> OK
Unpacking PathTools-3.47.tar.gz
Entering PathTools-3.47
Checking configure dependencies from META.yml
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for PathTools-3.47.
Searching Pod::Man on cpanmetadb ...
--> Working on Pod::Man
Fetching http://www.cpan.org/authors/id/R/RR/RRA/podlators-2.5.3.tar.gz
-> OK
Unpacking podlators-2.5.3.tar.gz
Entering podlators-2.5.3
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for podlators-v2.5.3.
-> FAIL Installing the dependencies failed: Module 'Data::Dumper' is not installed, Module 'File::Spec' is not installed, Module 'Pod::Man' is not installed
-> FAIL Bailing out the installation for ExtUtils-MakeMaker-6.98.
--> Working on /tmp/package-cpan-build20140804-3383-1su2i5t/module
Entering /tmp/package-cpan-build20140804-3383-1su2i5t/module
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... No
==> Found dependencies: ExtUtils::MakeMaker
Already tried ExtUtils::MakeMaker. Skipping.
-> FAIL Installing the dependencies failed: Module 'ExtUtils::MakeMaker' is not installed
-> FAIL Bailing out the installation for Parallel-ForkManager-1.06.
hatt commented 10 years ago

Something is very wrong with the environment here but I can't tell what. I'll try to find some time to install a CentOS 7 VM and give it a go. MM is generally packaged with Perl so it seems weird for cpanm to not find it at all, then get stuck in a dependency loop (MM requires DD, DD wants MM). Somewhere in there cpanm isn't reading the env properly but I think it's due to FPM overriding something incorrectly. Will see how I go after work some time this week then, thanks for your patience.

satoshi commented 10 years ago

No problem at all. From what I understand, I see the same issue with CentOS 6.5 and Fedora 20 as well.

I appreciate that you're looking into this, as I'd like to be able to build CPAN packages using system Perl binary shipped with CentOS 6 / 7. You should be able to reproduce what I've reported here on a VM, as I am using VMWare player instance myself.

satoshi commented 10 years ago

You're right about the dependency loop. EU::MM is a very core module and pretty much every Perl installation has that installed. I am baffled as much as you are on why cpanm says it is not found.

hatt commented 10 years ago

One thing I noticed, we're using the LIB variable instead of PERL5LIB, and the cpanm -L flag which sets local::lib to be self contained. I wonder if it thinks MM isn't core, say due to missing perl-devel package or something, and then tries to install it due to that. Will see soon.

hatt commented 10 years ago

So it looks like two things are going on. Firstly, CentOS packages Perl things into non-standard directories, so cpanm (which we use to pull all our dependencies) can't find several core modules. The second issue is that ExtUtils::MakeMaker has a circular dependency with Data::Dumper. From what I can tell, this is an issue for the entire RHEL family of Perl modules.

When I disable self containment for module installation, works as expected, however that is due to it thinking MM isn't a core module so ignore installing it since it shows up elsewhere. This causes other problems, such as missing non-core modules which is entirely the point of packaging together in the first place. I think the only way we can fix this is either a custom Perl installation, or otherwise setting some weird mix of local::lib flags to change core directories. I have no idea how to do that however. Anyone got more experience than me in local::lib hacks?

satoshi commented 10 years ago

Thanks for looking into this.

Firstly, CentOS packages Perl things into non-standard directories, so cpanm (which we use to pull all our dependencies) can't find several core modules.

Which directories are 'standard directories' and how are they defined? I'm puzzled that cpanm cannot find modules under @INC path, which we've identified as clean.

hatt commented 10 years ago

It finds modules under @INC no problem, what it doesn't do is identify them as core. See https://miyagawa/cpanminus/blob/devel/lib/App/cpanminus/script.pm#L930 for the actual code, it basically uses lib::core::only to do it. The particular entries of interest are the paths for $privlibexp and $archlibexp.

What happens is RHEL family distros don't install ExtUtils::MakeMaker into the configured $privlibexp (/usr/share/perl5) but instead a subdirectory, vendor_perl. Since dependency resolution doesn't look in nested directories not directly related to the module name, it won't find modules installed there. There should be some environment variables we can override to change most things in local::lib, but I think these particular paths are set at compile time for the installation. Will try to test tonight and see how I go.

satoshi commented 10 years ago

Yeah seems like $privlibexp and $archlibexp are set at compile time. Perhaps @miked63017's solution would be the quickest workaround. I probably did it wrong because my custom-made MakeMaker went to /usr/local/share/perl5 rather than /usr/share/perl5. Let me try installing into /usr/share/perl5 and see how it goes.

hatt commented 10 years ago

I wonder how Perl would cope with different installs in the global namespace though. CentOS itself already comes with ExtUtils::MakeMaker packaged, so you'd need to replace that with the same version and higher iteration number, or a new version inside version dependency requirements. Having two at once probably won't be a good idea. I still think FPM would fail to package ExtUtils::MakeMaker unless Data::Dumper is installed to the correct directory. It may also be possible to override the cpanm commands via $PERL_CPANM_OPT to use -l instead of -L, which will load non-core modules outside of local::lib. This breaks packaging dependencies, however if we don't intend to build fat packages, this is acceptable behavior. Maybe we can add a flag to not package dependencies? It would mean this behavior only works in non-RHEL distributions, but at least it would always work for thin packages.

satoshi commented 10 years ago

Right, the simplest thing to do here is to remove the RPM providing ExtUtils::MakeMaker. I think I have identified the RPM in this thread somewhere.

Silly me was actually stuck trying make install the CPAN tarball version of ExtUtils::MakeMaker. I ran make install with DESTDIR, but it creates a directory structure with usr/local/lib in the target directory - this is not what I want.

hatt commented 10 years ago

I'd grab the spec file and just rebuild it with the small fix to not use custom dirs for core modules.

satoshi commented 10 years ago

I just installed EU::MM into /usr/share/perl5. Now the build log no longer complains about it (though not sure where 6.63_02 came from - I installed 6.98).

However, other core modules still remain undetected so this didn't really do a trick. At this point I'm kinda tilting toward filing a bug on RedHat side, as it seems like their packaging of Perl has a lot of room to be desired.

Written by John Gilmore and Jay Fenlason.
You have /usr/bin/unzip
Checking if you have ExtUtils::MakeMaker 6.31 ... Yes (6.63_02)
Checking if you have ExtUtils::Install 1.46 ... Yes (1.58)
--> Working on /tmp/package-cpan-build20140805-3512-t94lyx/module
Entering /tmp/package-cpan-build20140805-3512-t94lyx/module
Checking configure dependencies from META.json
Checking if you have ExtUtils::MakeMaker 0 ... Yes (6.63_02)
Configuring Parallel-ForkManager-1.06
Running Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Parallel::ForkManager
Writing MYMETA.yml and MYMETA.json
-> OK
Checking dependencies from MYMETA.json ...
Checking if you have Test::More 0.80 ... No
Checking if you have POSIX 0 ... Yes (1.30)
Checking if you have File::Spec 0 ... No
Checking if you have File::Temp 0 ... No
Checking if you have File::Path 2 ... No
Checking if you have Storable 0 ... No
hatt commented 10 years ago

I don't think they'll see it as a bug since it's a conscious decision on RedHat's part to split vendor modules from other default modules. The relevant code from the Perl SPEC file is as follows.

# use "lib", not %%{_lib}, for privlib, sitelib, and vendorlib
# To build production version, we would need -DDEBUGGING=-g
# Perl INC path (perl -V) in search order:
# - /usr/local/share/perl5            -- for CPAN     (site lib)
# - /usr/local/lib[64]/perl5          -- for CPAN     (site arch)
# - /usr/share/perl5/vendor_perl      -- 3rd party    (vendor lib)
# - /usr/lib[64]/perl5/vendor_perl    -- 3rd party    (vendor arch)
# - /usr/share/perl5                  -- Fedora       (priv lib)
# - /usr/lib[64]/perl5                -- Fedora       (arch lib)

You can see there is a clear definition of what goes where, while cpanm expects all core to be in the priv lib and arch lib labelled directories. From what I can tell, the only way to fix this is a complete rebuild and reinstall of Perl and all packaged modules. It seems RedHat split vendor stuff for 3rd party modules while using /usr/local for CPAN installed modules. The problem is when 3rd party modules are part of core. I think they need to revise their listing of core modules and fix those specific packages. @satoshi, if you submit the bug report please link it back here, or otherwise I can try to do so.

hatt commented 10 years ago

I also want to note that after investigation, this later update to the issue is a separate problem. I guess we can't move parts of a thread to another issue, so I'll create a new issue. The initial reported problem here was about path precedence where FPM was using system modules instead of the preferred sandboxed modules. The second report concerns a bug introduced by RedHat's packaging methods. These are unrelated.

jordansissel commented 10 years ago

@hatt thanks for the summary! Let me know what I can help with. I'm mostly just watching the discussion, so if I need to do any code changes, just point me in the right direction :P

hatt commented 10 years ago

Thanks @jordansissel! These values are built into perl at compile time so I don't think we can override them in FPM itself at this stage. As far as I know, the only fix is a full rebuild of perl, so hopefully the guys at RedHat can solve the issue. I've created #748 to track it separately since it isn't really related to the initial bug report for this issue.

satoshi commented 10 years ago

@hatt Thanks for your awesome investigation on this matter. My apologies that it turned out to be unrelated to the original issue discussed here. I have not filed a bug with RedHat yet, my understanding is that new discussion will take place on #748.

hatt commented 10 years ago

@jordansissel given that the actual issue here was fixed by the path precedence PR and the discussion for the secondary issue was moved to a dedicated thread, can we close this issue now? I think it's safe to assume that in the year since this issue was opened with no feedback after the patches I put through, it's now solved with the subsequent gem updates.