perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS
commit1aca69c0195bd4ac671e7a36cf9b967d2bcbe200
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sat, 3 Mar 2018 15:38:17 +0000 (3 15:38 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Mar 2018 18:52:28 +0000 (5 10:52 -0800)
treeede2fdd0f125402715cb472f70f0a588c8053356
parent075321c0075b1ef86b98facc88bcaeefeb9584d1
perl Git::LoadCPAN: emit better errors under NO_PERL_CPAN_FALLBACKS

Before my 20d2a30f8f ("Makefile: replace perl/Makefile.PL with simple
make rules", 2017-12-10) on an OS package that removed the
private-Error.pm copy we carried around manually removing the OS's
Error.pm would yield:

    $ git add -p
    Can't locate Error.pm in @INC (you may need to install the Error module) [...]

Now, before this change we'll instead emit this more cryptic error:

    $ git add -p
    BUG: '/usr/share/perl5/Git/FromCPAN' should be a directory! at /usr/share/perl5/Git/Error.pm line 36.

This is a confusing error. Now if the new NO_PERL_CPAN_FALLBACKS
option is specified and we can't find the module we'll instead emit:

    $ /tmp/git/bin/git add -p
    BUG: The 'Error' module is not here, but NO_PERL_CPAN_FALLBACKS was set!

    [...]

Where [...] is the lengthy explanation seen in the change below, which
explains what the potential breakage is, and how to fix it.

The reason for checking @@NO_PERL_CPAN_FALLBACKS@@] against the empty
string in Perl is as opposed to checking for a boolean value is that
that's (as far as I can tell) make's idea of a string that's set, and
e.g. NO_PERL_CPAN_FALLBACKS=0 is enough to set NO_PERL_CPAN_FALLBACKS.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
INSTALL
Makefile
perl/Git/LoadCPAN.pm