Hi Peter,

The motivation for the patch is just using a correct value for "startperl" configuration when build perl-native.
Without the patch, this configuration option is set to a non existent path.

When I fixed "startperl", tools like "pod2man" stopped working as the "do_install_append_class-native()"  function expected the non existent path on the shebang string (#! ...).
So I also had to change the "do_install_append_class()".
If you look at function "cpan_do_install()" in meta/classes/cpan.bbclass, you see that both functions now use same pattern for shebang string substitution.

I can't understand why the pod2man in your build is still using the non existent path on the shebang string.

Would you mind to execute the following steps and send me the results? That may help me understand a bit better.

bitbake perl-native -c compile -f
head -1 $(find */work/*/perl-native/ -name pod2man)
grep "startperl=" */work/*/perl-native/*/perl*/lib/Config_heavy.pl */work/*/perl-native/*/perl*/config.log

You may partially replace the complete path by some "..." as you did before.

I hope we can find a solution to replace the patch with another one that fixes the "startperl" configuration without breaking your build.

Regards,
Paulo

On Fri, Apr 30, 2021 at 5:42 PM Peter Kjellerstedt <peter.kjellerstedt@axis.com> wrote:

Well, it did break our builds. I now get the following error when building a native recipe that inherits perlnative and tries to run pod2man:

 

| /bin/sh: /home/pkj/…/recipe-sysroot-native/usr/bin/pod2man: /home/pkj/…/recipe-sysroot-native/usr/bin/per: bad interpreter: No such file or directory

 

This is because the first two lines of the pod2man script now looks like

 

#!/home/pkj/…/recipe-sysroot-native/usr/bin/perl

    eval 'exec /home/pkj/…/recipe-sysroot-native/usr/bin/perl -S $0 ${1+"$@"}'

 

instead of the previous:

 

#!/usr/bin/env nativeperl

    eval 'exec /usr/bin/env nativeperl -S $0 ${1+"$@"}'

 

I.e., the sed command in perl’s do_install_append_class-native() does not seem to have done anything, which is because there is no “perl-native.*/perl" in the path to match (as can be seen above), it is just “perl”, which is what the old code was looking for.

 

[ In the above examples, I have replaced a longish part of the path with … to protect the innocent. ]

 

//Peter

 

From: openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org> On Behalf Of Paulo Cesar Zaneti
Sent: den 19 april 2021 16:13
To: openembedded-core@lists.openembedded.org
Subject: Re: [OE-core] [PATCH] perl: fix startperl configuration option for perl-native

 

I just re-send the patch with additional fix for the build failure.

I think the basic problem was an inconsistency in the way perl recipe and cpan.bbclass convert the absolute perl path to env path.
Version 2 of the patch tries to use same cpan.bbclass approach on the perl recipe.

Before submitting I just ran "bitbake -k world". I hope it doesn't break the build again.