Subject: | Can't locate FindBin/libs.pm (code order in Makefile.PL) (2.017014) |
The test suite fails on some of my smokers:
...
# Failed test 'use FindBin::libs;'
# at t/01-use-ok.t line 7.
# Tried to use 'FindBin::libs'.
# Error: Can't locate FindBin/libs.pm in @INC (you may need to install the FindBin::libs module) (@INC contains: /home/cpansand/.cpan/build/2018042006/FindBin-libs-2.017014-v4JqEO/blib/lib /home/cpansand/.cpan/build/2018042006/FindBin-libs-2.017014-v4JqEO/blib/arch /home/cpansand/.cpan/build/2018042006/PathTools-3.74-NQamrg/blib/arch /home/cpansand/.cpan/build/2018042006/PathTools-3.74-NQamrg/blib/lib /home/cpansand/.cpan/build/2018042006/File-Copy-Recursive-Reduced-0.005-FuueEl/blib/arch /home/cpansand/.cpan/build/2018042006/File-Copy-Recursive-Reduced-0.005-FuueEl/blib/lib /home/cpansand/.cpan/build/2018042006/PathTools-3.74-NQamrg/blib/arch /home/cpansand/.cpan/build/2018042006/PathTools-3.74-NQamrg/blib/lib /home/cpansand/.cpan/build/2018042006/File-Copy-Recursive-Reduced-0.005-FuueEl/blib/arch /home/cpansand/.cpan/build/2018042006/File-Copy-Recursive-Reduced-0.005-FuueEl/blib/lib /usr/perl5.20.1Dp/lib/site_perl/5.20.1/amd64-freebsd-ld /usr/perl5.20.1Dp/lib/site_perl/5.20.1 /usr/perl5.20.1Dp/lib/5.20.1/amd64-freebsd-ld /usr/perl5.20.1Dp/lib/5.20.1 .) at t/01-use-ok.t line 7.
# BEGIN failed--compilation aborted at t/01-use-ok.t line 7.
# Looks like you failed 1 test of 1.
t/01-use-ok.t .................
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/1 subtests
... (etc) ...
Probably this happens if FindBin::libs is not already installed.
I think this happens because the dircopy-using section in Makefile.PL comes after the WriteMakefile() call. Here's the output when running Makefile.PL manually:
$ rm -rf lib/; perl5.27.10 Makefile.PL
Generating a Unix-style Makefile
Writing Makefile for FindBin::libs
Writing MYMETA.yml and MYMETA.json
# Version directory: version/v5.14 (5.027010).
-> That is: the Makefile is first written, then comes the version directory copying, but this is too late: the generated Makefile is missing an important part:
$ grep -A 3 '^pm_to_blib' Makefile
pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
$(NOECHO) $(TOUCH) pm_to_blib
But it should look like this:
pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
'lib/FindBin/libs.pm' 'blib/lib/FindBin/libs.pm'
$(NOECHO) $(TOUCH) pm_to_blib
So nothing is copied to blib/lib, and the test suite fails (unles there's already an older FindBin::libs installed).