http://www.perlmonks.org?node_id=992424


in reply to Re^3: Module packlists vs. vendors
in thread Module packlists vs. vendors

Thanks, that's a neat way to test a minimal setup! I always just traced the build process for some popular CPAN modules. Something weird is going on, I do the exact same thing and get no packlists, both on Gentoo and on Ubuntu:

$ mkdir tempjunk $ cd tempjunk $ h2xs -AX Foo Defaulting to backwards compatibility with perl 5.14.2 If you intend this module to be compatible with earlier perl versions, + please specify a minimum perl version with the -b option. Writing Foo/lib/Foo.pm Writing Foo/Makefile.PL Writing Foo/README Writing Foo/t/Foo.t Writing Foo/Changes Writing Foo/MANIFEST $ cd Foo $ perl Makefile.PL INSTALL_BASE=.. Checking if your kit is complete... Looks good Writing Makefile for Foo Writing MYMETA.yml and MYMETA.json $ make install_vendor cp lib/Foo.pm blib/lib/Foo.pm Manifying blib/man3/Foo.3pm Installing ../lib/perl5/Foo.pm Installing ../man/man3/Foo.3pm $ tree -f -a .. .. |-- ../Foo | |-- ../Foo/blib | | |-- ../Foo/blib/arch | | | |-- ../Foo/blib/arch/auto | | | | `-- ../Foo/blib/arch/auto/Foo | | | | `-- ../Foo/blib/arch/auto/Foo/.exists | | | `-- ../Foo/blib/arch/.exists | | |-- ../Foo/blib/bin | | | `-- ../Foo/blib/bin/.exists | | |-- ../Foo/blib/lib | | | |-- ../Foo/blib/lib/auto | | | | `-- ../Foo/blib/lib/auto/Foo | | | | `-- ../Foo/blib/lib/auto/Foo/.exists | | | |-- ../Foo/blib/lib/.exists | | | `-- ../Foo/blib/lib/Foo.pm | | |-- ../Foo/blib/man1 | | | `-- ../Foo/blib/man1/.exists | | |-- ../Foo/blib/man3 | | | |-- ../Foo/blib/man3/.exists | | | `-- ../Foo/blib/man3/Foo.3pm | | `-- ../Foo/blib/script | | `-- ../Foo/blib/script/.exists | |-- ../Foo/Changes | |-- ../Foo/lib | | `-- ../Foo/lib/Foo.pm | |-- ../Foo/Makefile | |-- ../Foo/Makefile.PL | |-- ../Foo/MANIFEST | |-- ../Foo/MYMETA.json | |-- ../Foo/MYMETA.yml | |-- ../Foo/pm_to_blib | |-- ../Foo/README | `-- ../Foo/t | `-- ../Foo/t/Foo.t |-- ../lib | `-- ../lib/perl5 | `-- ../lib/perl5/Foo.pm `-- ../man `-- ../man/man3 `-- ../man/man3/Foo.3pm 18 directories, 22 files

Whereas install_site does the right thing:

$ make install_site Appending installation info to ../lib/perl5/x86_64-linux-thread-multi/ +perllocal.pod $ find .. -name .packlist ../lib/perl5/x86_64-linux-thread-multi/auto/Foo/.packlist

Which seems logical when I compare the respective sections in the Makefile:

pure_site_install :: all $(NOECHO) $(MOD_INSTALL) \ read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \ write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist + \ $(INST_LIB) $(DESTINSTALLSITELIB) \ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ $(INST_BIN) $(DESTINSTALLSITEBIN) \ $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ $(PERL_ARCHLIB)/auto/$(FULLEXT) pure_vendor_install :: all $(NOECHO) $(MOD_INSTALL) \ $(INST_LIB) $(DESTINSTALLVENDORLIB) \ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ $(INST_BIN) $(DESTINSTALLVENDORBIN) \ $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)

How do these parts look in your Makefile? Mine seem to come almost verbatim (modulo some path concatenation rituals) from MM_Unix.pm and as far as I can see, MM_Win32 just inherits these.

Replies are listed 'Best First'.
Re^5: Module packlists vs. vendors
by Anonymous Monk on Sep 08, 2012 at 06:18 UTC

    Something weird is going on, I do the exact same thing and get no packlists, both on Gentoo and on Ubuntu:

    Upgrade, See https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/58ec782413fdfb03f30c0de39131e7eb228f8bc9

    How do these parts look in your Makefile?

    Pretty much as you'd expect
    pure_site_install :: all $(NOECHO) $(MOD_INSTALL) \ read $(SITEARCHEXP)\auto\$(FULLEXT)\.packlist \ write $(DESTINSTALLSITEARCH)\auto\$(FULLEXT)\.packlist \ $(INST_LIB) $(DESTINSTALLSITELIB) \ $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \ $(INST_BIN) $(DESTINSTALLSITEBIN) \ $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \ $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR) $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ $(PERL_ARCHLIB)\auto\$(FULLEXT)
    pure_vendor_install :: all $(NOECHO) $(MOD_INSTALL) \ read $(VENDORARCHEXP)\auto\$(FULLEXT)\.packlist \ write $(DESTINSTALLVENDORARCH)\auto\$(FULLEXT)\.packlist \ $(INST_LIB) $(DESTINSTALLVENDORLIB) \ $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \ $(INST_BIN) $(DESTINSTALLVENDORBIN) \ $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \ $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \ $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)

        which means someone edited your MM_Unix.pm to remove that

        Baaah, nasty! But thanks very much, you're absolutely right: I found the patch and as it appears, Gentoo (of all systems!) modifies ExtUtils::MM the same bullshit way as all the Debians :(

        Time to complain on some mailing list ...