Subject: | poor diagnostic if no C compiler on install |
If the installation fails because there is no C compiler on the machine,
the error message is somewhat obscure. IMHO, it would be better if it
also produced a specific test failure. Perhaps something like this:
#!/usr/bin/perl
use strict;
use Test::More tests => 1;
my $cc = `which cc`;
chomp $cc;
ok( $cc eq '/usr/bin/cc', 'c compiler present');
Extract from failing install below:
...
PAR-Packer-0.978/lib/PAR/Filter/Bleach.pm
PAR-Packer-0.978/lib/PAR/Filter/PodStrip.pm
PAR-Packer-0.978/lib/PAR/Filter/PatchContent.pm
PAR-Packer-0.978/lib/PAR/Filter/Obfuscate.pm
PAR-Packer-0.978/lib/PAR/Filter/Bytecode.pm
PAR-Packer-0.978/lib/PAR/Packer.pm
PAR-Packer-0.978/lib/PAR/StrippedPARL/
PAR-Packer-0.978/lib/PAR/StrippedPARL/Base.pm
PAR-Packer-0.978/lib/PAR/StrippedPARL/Static.pm
PAR-Packer-0.978/lib/PAR/StrippedPARL/Dynamic.pm
PAR-Packer-0.978/lib/pp.pm
PAR-Packer-0.978/lib/App/
PAR-Packer-0.978/lib/App/Packer/
PAR-Packer-0.978/lib/App/Packer/PAR.pm
PAR-Packer-0.978/t/
PAR-Packer-0.978/t/00-foo.t
PAR-Packer-0.978/t/test-proc
PAR-Packer-0.978/t/00-pod.t
PAR-Packer-0.978/t/20-pp.t
PAR-Packer-0.978/t/30-current_exec.t
PAR-Packer-0.978/t/10-parl-generation.t
PAR-Packer-0.978/contrib/
PAR-Packer-0.978/contrib/automated_pp_test/
PAR-Packer-0.978/contrib/automated_pp_test/test_in_further_subdir.pm
PAR-Packer-0.978/contrib/automated_pp_test/pipe_a_command.pm
PAR-Packer-0.978/contrib/automated_pp_test/automated_pp_test.pl.orig
PAR-Packer-0.978/contrib/automated_pp_test/hi.ico
PAR-Packer-0.978/contrib/automated_pp_test/patch.diff
PAR-Packer-0.978/contrib/automated_pp_test/prior_to_test.pm
PAR-Packer-0.978/contrib/automated_pp_test/hello_tk.pl
PAR-Packer-0.978/contrib/automated_pp_test/remove_file_and_try_executable_again.pm
PAR-Packer-0.978/contrib/automated_pp_test/automated_pp_test.pl
PAR-Packer-0.978/contrib/gui_pp/
PAR-Packer-0.978/contrib/gui_pp/gpp_readme.txt
PAR-Packer-0.978/contrib/gui_pp/gpp
PAR-Packer-0.978/contrib/stdio/
PAR-Packer-0.978/contrib/stdio/Stdio_readme.txt
PAR-Packer-0.978/contrib/stdio/Stdio.pm
PAR-Packer-0.978/contrib/docs/
PAR-Packer-0.978/contrib/docs/where_is_it.txt
PAR-Packer-0.978/contrib/docs/who_am_i.txt
PAR-Packer-0.978/contrib/procedural_pp/
PAR-Packer-0.978/contrib/procedural_pp/pp_old
PAR-Packer-0.978/contrib/pare/
PAR-Packer-0.978/contrib/pare/pare
PAR-Packer-0.978/contrib/pare/pare_readme.txt
PAR-Packer-0.978/MANIFEST
PAR-Packer-0.978/TODO
PAR-Packer-0.978/inc/
PAR-Packer-0.978/inc/Module/
PAR-Packer-0.978/inc/Module/Install/
PAR-Packer-0.978/inc/Module/Install/Makefile.pm
PAR-Packer-0.978/inc/Module/Install/Include.pm
PAR-Packer-0.978/inc/Module/Install/Base.pm
PAR-Packer-0.978/inc/Module/Install/Metadata.pm
PAR-Packer-0.978/inc/Module/Install/WriteAll.pm
PAR-Packer-0.978/inc/Module/Install/Win32.pm
PAR-Packer-0.978/inc/Module/Install/Fetch.pm
PAR-Packer-0.978/inc/Module/Install/PAR.pm
PAR-Packer-0.978/inc/Module/Install/Can.pm
PAR-Packer-0.978/inc/Module/Install.pm
PAR-Packer-0.978/inc/Test/
PAR-Packer-0.978/inc/Test/Builder.pm
PAR-Packer-0.978/inc/Test/Builder/
PAR-Packer-0.978/inc/Test/Builder/Module.pm
PAR-Packer-0.978/inc/Test/More.pm
PAR-Packer-0.978/inc/PerlIO.pm
PAR-Packer-0.978/script/
PAR-Packer-0.978/script/tkpp
PAR-Packer-0.978/script/pp
PAR-Packer-0.978/script/parl.pod
PAR-Packer-0.978/script/par.pl
PAR-Packer-0.978/package/
PAR-Packer-0.978/package/parl.nsi
PAR-Packer-0.978/AUTHORS
PAR-Packer-0.978/README
PAR-Packer-0.978/META.yml
PAR-Packer-0.978/ChangeLog
PAR-Packer-0.978/MANIFEST.SKIP
PAR-Packer-0.978/Makefile.PL
PAR-Packer-0.978/SIGNATURE
Removing previously used /root/.cpan/build/PAR-Packer-0.978
CPAN.pm: Going to build S/SM/SMUELLER/PAR-Packer-0.978.tar.gz
*** You have extra Perl library paths set in your environment.
Please note that these paths (set with PERL5LIB or PERLLIB)
are not honored by perl when running under taint mode, which
may lead to problems. This is a limitation (by design) of
Perl, not of PAR::Packer; but some of the problems may
manifest here during installation.
Fetching 'PAR-Packer-0.978-x86_64-linux-thread-multi-5.8.8.par' from
www.cpan.org... Fetching failed:
No compiler found, won't generate 'script/parl'!
Checking if your kit is complete...
Looks good
Writing Makefile for PAR::Packer
cp lib/App/Packer/PAR.pm blib/lib/App/Packer/PAR.pm
cp lib/PAR/Packer.pm blib/lib/PAR/Packer.pm
cp lib/PAR/StrippedPARL/Base.pm blib/lib/PAR/StrippedPARL/Base.pm
cp lib/PAR/Filter/Obfuscate.pm blib/lib/PAR/Filter/Obfuscate.pm
cp lib/PAR/Filter/PodStrip.pm blib/lib/PAR/Filter/PodStrip.pm
cp lib/PAR/Filter.pm blib/lib/PAR/Filter.pm
cp lib/PAR/StrippedPARL/Dynamic.pm blib/lib/PAR/StrippedPARL/Dynamic.pm
cp lib/PAR/Filter/PatchContent.pm blib/lib/PAR/Filter/PatchContent.pm
cp lib/PAR/Filter/Bytecode.pm blib/lib/PAR/Filter/Bytecode.pm
cp lib/pp.pm blib/lib/pp.pm
cp lib/PAR/Filter/Bleach.pm blib/lib/PAR/Filter/Bleach.pm
cp lib/PAR/StrippedPARL/Static.pm blib/lib/PAR/StrippedPARL/Static.pm
cp script/tkpp blib/script/tkpp
/usr/bin/perl "-Iinc" "-MExtUtils::MY" -e "MY->fixin(shift)"
blib/script/tkpp
cp script/pp blib/script/pp
/usr/bin/perl "-Iinc" "-MExtUtils::MY" -e "MY->fixin(shift)" blib/script/pp
cp script/par.pl blib/script/par.pl
/usr/bin/perl "-Iinc" "-MExtUtils::MY" -e "MY->fixin(shift)"
blib/script/par.pl
Manifying blib/man1/tkpp.1
Manifying blib/man1/pp.1
Manifying blib/man1/par.pl.1
Manifying blib/man3/PAR::Filter::PodStrip.3pm
Manifying blib/man3/PAR::Filter::Obfuscate.3pm
Manifying blib/man3/PAR::StrippedPARL::Base.3pm
Manifying blib/man3/PAR::Packer.3pm
Manifying blib/man3/App::Packer::PAR.3pm
Manifying blib/man3/PAR::Filter.3pm
Manifying blib/man3/PAR::Filter::PatchContent.3pm
Manifying blib/man3/PAR::StrippedPARL::Dynamic.3pm
Manifying blib/man3/PAR::Filter::Bytecode.3pm
Manifying blib/man3/pp.3pm
Manifying blib/man3/PAR::Filter::Bleach.3pm
Manifying blib/man3/PAR::StrippedPARL::Static.3pm
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'inc', 'blib/lib', 'blib/arch')" t/00-pod.t t/20-pp.t
t/30-current_exec.t
t/00-pod.............skipped
all skipped: Set environment variable PERL_TEST_POD=1 to test POD
t/20-pp..............skipped
all skipped: 'parl' not found
t/30-current_exec....# Please wait
PAR::StrippedPARL::Static->get_raw() did not return the raw binary data
for a PAR loader at blib/lib/PAR/StrippedPARL/Base.pm line 141, <DATA>
line 1.
Could not write temporary parl (class PAR::StrippedPARL::Static) to file
'/tmp/parlVEos' at blib/lib/PAR/StrippedPARL/Base.pm line 65, <DATA> line 1.
/root/.cpan/build/PAR-Packer-0.978/t/../blib/script/pp: Failed to
extract a parl from 'PAR::StrippedPARL::Static' to file 'parl2yhhMUX' at
blib/lib/PAR/Packer.pm line 1157, <DATA> line 1.
# Failed test 'Created
"/root/.cpan/build/PAR-Packer-0.978/t/test-10.exec"'
t/30-current_exec....NOK 1# at t/30-current_exec.t line 39.
Failed to create "/root/.cpan/build/PAR-Packer-0.978/t/test-10.exec"!
# Looks like you planned 4 tests but only ran 1.
# Looks like you failed 1 test of 1 run.
# Looks like your test died just after 1.
t/30-current_exec....dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-4
Failed 4/4 tests, 0.00% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/30-current_exec.t 255 65280 4 7 175.00% 1-4
2 tests skipped.
Failed 1/3 test scripts, 66.67% okay. 4/4 subtests failed, 0.00% okay.
make: *** [test_dynamic] Error 255
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
Cheers, Dave