Subject: Re: bug#31216: commit 217b8c2e0 produces 'Can't locate Date/Parse.pm in @INC Error' perl error

From: Mark H Weaver <[email-masked]>
Date: Fri, 20 Apr 2018 23:15:15 -0400

Hi,

Julien Lepiller <[email-masked]> writes:

> Le Thu, 19 Apr 2018 10:39:10 -0400,
> Leo Famulari <[email-masked]> a écrit :
>
>> I believe this is fixed by commit
>> 44b98b00026e62766620dbc4330a305282d61069.
>> 
>> Can you try again and let me know?
>
> Hi, I don't think this is fully fixed. On current master, trying to run
> po4a (a perl application that guix now depends on to generate the
> translation of the manual), I get the following:
>
> [env]$ po4a-updatepo
> Can't locate Locale/Po4a/Po.pm in @INC (you may need to install the
> Locale::Po4a::Po module) (@INC
> contains:
> /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/lib/perl5/site_perl
> /home/tyreunom/.guix-profile/lib/perl5/site_perl
> /home/tyreunom/.guix-profile/lib/perl5/site_perl
> /home/tyreunom/.guix-profile/lib/perl5/site_perl
> /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/site_perl/5.26.2/x86_64-linux-thread-multi
> /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/site_perl/5.26.2
> /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2/x86_64-linux-thread-multi
> /gnu/store/43vb2vnv7alwi40ms5qsb9i84rs0xb6s-perl-5.26.2/lib/perl5/5.26.2)
> at /gnu/store/b10z3mm4nyvzwq6b7537nhckmilbv7bm-po4a-0.47/bin/.po4a-updatepo-real
> line 168.
>
> What fixed the issue was adding
> $GUIX_ENVIRONMENT/lib/perl5/site_perl/5.26.1 to the PERL5LIB variable.
>
> It used to work until very recently, but I wonder why the version number
> is 5.26.1 if perl is 5.26.2?

It's because perl is grafted: perl-5.26.1 is still used for building
packages, but then after everything is built, references to perl-5.26.1
are replaced with references to perl-5.26.2 by grafting.

The problem we're having with grafting perl is that grafting can only
rewrite a single component of the referenced filenames, namely the
directory name within /gnu/store.  In the case of perl this is not
enough because the precise Perl version number is included in
subdirectory names as well.

Commit 44b98b00026e62766620dbc4330a305282d61069 attempts to fix the
problem by installing a symlink $OUT/lib/perl5/5.26.1 in the perl-5.26.2
directory, and that certainly fixed many problems.

The problem here with p04a is that there's a second symlink that we
need: $OUT/lib/perl5/site_perl/5.26.1, and possibly a third for
$OUT/bin/perl5.26.1.

I'm testing a patch now and will push it soon.

      Mark