diff mbox series

perl-ptest: copy xconfig data from perl source directory

Message ID 20250327060855.428041-1-rajendra.desai@emerson.com
State New
Headers show
Series perl-ptest: copy xconfig data from perl source directory | expand

Commit Message

Rajendra Desai March 27, 2025, 6:08 a.m. UTC
The following perl ptests:

  - dist/ExtUtils-ParseXS/t/001-basic
  - dist/ExtUtils-ParseXS/t/002-more
  - dist/ExtUtils-ParseXS/t/003-usage
  - cpan/ExtUtils-Constant/t/Constant
  - cpan/ExtUtils-MakeMaker/t/02-xsdynamic

are erroring out with:
| /usr/lib/perl/ptest/perl_langinfo.h:8:10: fatal error:
xconfig.h: No such file or directory
|     8 | #include "xconfig.h"

xconfig.h contains references to the build host architecture and was
removed by commit 2e0f30c46802 ("perl: do not install files that contain
build host specific data")

However, it is still included from various other places including these
tests, and we are still depending on build host architecture data by
including the patches from perl-cross recipe, a dependency to perl recipe.

xconfig.h was added back as a copy step in the commit f90922cdeef5
("update 5.36.1 -> 5.38.0") but was not added back in perl-ptest include
file.

Borrowed the logic from the above commit to make a copy of config.h
that is specific to the target architecture. The changes in this commit
fixes the test failures.

Signed-off-by: Rajendra Desai <rajendra.desai@emerson.com>
---
 meta/recipes-devtools/perl/perl-ptest.inc | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Alexander Kanavin March 27, 2025, 9:53 a.m. UTC | #1
This doesn't address the feedback given previously. Which is:

Is the issue occurring on master as well? If so, you need to explain
why perl ptest is passing in yocto CI pipelines. How can we observe
the error on master?

Alex

On Thu, 27 Mar 2025 at 07:11, Rajendra Desai via
lists.openembedded.org
<rajendra.desai=emerson.com@lists.openembedded.org> wrote:
>
> The following perl ptests:
>
>   - dist/ExtUtils-ParseXS/t/001-basic
>   - dist/ExtUtils-ParseXS/t/002-more
>   - dist/ExtUtils-ParseXS/t/003-usage
>   - cpan/ExtUtils-Constant/t/Constant
>   - cpan/ExtUtils-MakeMaker/t/02-xsdynamic
>
> are erroring out with:
> | /usr/lib/perl/ptest/perl_langinfo.h:8:10: fatal error:
> xconfig.h: No such file or directory
> |     8 | #include "xconfig.h"
>
> xconfig.h contains references to the build host architecture and was
> removed by commit 2e0f30c46802 ("perl: do not install files that contain
> build host specific data")
>
> However, it is still included from various other places including these
> tests, and we are still depending on build host architecture data by
> including the patches from perl-cross recipe, a dependency to perl recipe.
>
> xconfig.h was added back as a copy step in the commit f90922cdeef5
> ("update 5.36.1 -> 5.38.0") but was not added back in perl-ptest include
> file.
>
> Borrowed the logic from the above commit to make a copy of config.h
> that is specific to the target architecture. The changes in this commit
> fixes the test failures.
>
> Signed-off-by: Rajendra Desai <rajendra.desai@emerson.com>
> ---
>  meta/recipes-devtools/perl/perl-ptest.inc | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc
> index 4b4756118c..49d322a848 100644
> --- a/meta/recipes-devtools/perl/perl-ptest.inc
> +++ b/meta/recipes-devtools/perl/perl-ptest.inc
> @@ -20,6 +20,11 @@ do_install_ptest () {
>
>         ln -sf ${bindir}/perl ${D}${PTEST_PATH}/t/perl
>
> +       # xconfig.h contains references to build host architecture, and yet is included from various other places.
> +       # To make it reproducible let's make it a copy of config.h patch that is specific to the target architecture.
> +       # It is believed that the original header is the product of building miniperl (a helper executable built with host compiler).
> +       cp ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h ${D}${PTEST_PATH}/xconfig.h
> +
>         # Remove build host references from various scattered files...
>         find "${D}${PTEST_PATH}" \
>              \( -name '*.PL' -o -name 'myconfig' -o -name 'cflags' -o -name '*.pl' -o -name '*.sh' -o -name '*.pm' \
> @@ -44,7 +49,7 @@ do_install_ptest () {
>          sed -i -e '/Autogenerated starting on/d' ${D}${PTEST_PATH}/lib/unicore/mktables.lst
>
>          # Remove files with host-specific configuration for building native binaries
> -        rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.h ${D}${PTEST_PATH}/xconfig.sh
> +        rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.sh
>
>           # create an empty file that is checked for existence by makerel test
>           touch ${D}${PTEST_PATH}/win32/Makefile
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#213704): https://lists.openembedded.org/g/openembedded-core/message/213704
> Mute This Topic: https://lists.openembedded.org/mt/111899754/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Rajendra Desai March 27, 2025, 10:50 a.m. UTC | #2
Hi Alexander, thanks for the reply.
I tested that the issue is reproducible on master as well and that is the reason I resubmitted the patch to the master.

How I tested:

  1.  Cloned the Yocto Project repository
  2.  Configured openembedded-core (targeted to master branch) along with ptest-pkgs
  3.  Built the qemux86-64 image
  4.  Ran the ptests (run-ptest) on the built qemux86-64 image
  5.  5 of the mentioned tests failed with “No such file or directory” error
(for which, I have explained the details in the patch)

I am not sure what do you mean by “perl ptest is passing in yocto CI pipelines”. If you are referring to the perl-ptest package,
then you would not find issues while building perl or its ptest package, but the issue occurs when running those 5 perl tests on a target
(since it would have skipped including xconfig.h file which is needed for those 5 tests to be successful).

Regards,
Rajendra

From: Alexander Kanavin <alex.kanavin@gmail.com>
Sent: Thursday, March 27, 2025 3:23 PM
To: Desai, Rajendra <rajendra.desai@emerson.com>
Cc: openembedded-core@lists.openembedded.org
Subject: [EXTERNAL] Re: [OE-core] [PATCH] perl-ptest: copy xconfig data from perl source directory




This doesn't address the feedback given previously. Which is:



Is the issue occurring on master as well? If so, you need to explain

why perl ptest is passing in yocto CI pipelines. How can we observe

the error on master?



Alex



On Thu, 27 Mar 2025 at 07:11, Rajendra Desai via

lists.openembedded.org

<rajendra.desai=emerson.com@lists.openembedded.org<mailto:rajendra.desai=emerson.com@lists.openembedded.org>> wrote:

>

> The following perl ptests:

>

>   - dist/ExtUtils-ParseXS/t/001-basic

>   - dist/ExtUtils-ParseXS/t/002-more

>   - dist/ExtUtils-ParseXS/t/003-usage

>   - cpan/ExtUtils-Constant/t/Constant

>   - cpan/ExtUtils-MakeMaker/t/02-xsdynamic

>

> are erroring out with:

> | /usr/lib/perl/ptest/perl_langinfo.h:8:10: fatal error:

> xconfig.h: No such file or directory

> |     8 | #include "xconfig.h"

>

> xconfig.h contains references to the build host architecture and was

> removed by commit 2e0f30c46802 ("perl: do not install files that contain

> build host specific data")

>

> However, it is still included from various other places including these

> tests, and we are still depending on build host architecture data by

> including the patches from perl-cross recipe, a dependency to perl recipe.

>

> xconfig.h was added back as a copy step in the commit f90922cdeef5

> ("update 5.36.1 -> 5.38.0") but was not added back in perl-ptest include

> file.

>

> Borrowed the logic from the above commit to make a copy of config.h

> that is specific to the target architecture. The changes in this commit

> fixes the test failures.

>

> Signed-off-by: Rajendra Desai <rajendra.desai@emerson.com<mailto:rajendra.desai@emerson.com>>

> ---

>  meta/recipes-devtools/perl/perl-ptest.inc | 7 ++++++-

>  1 file changed, 6 insertions(+), 1 deletion(-)

>

> diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc

> index 4b4756118c..49d322a848 100644

> --- a/meta/recipes-devtools/perl/perl-ptest.inc

> +++ b/meta/recipes-devtools/perl/perl-ptest.inc

> @@ -20,6 +20,11 @@ do_install_ptest () {

>

>         ln -sf ${bindir}/perl ${D}${PTEST_PATH}/t/perl

>

> +       # xconfig.h contains references to build host architecture, and yet is included from various other places.

> +       # To make it reproducible let's make it a copy of config.h patch that is specific to the target architecture.

> +       # It is believed that the original header is the product of building miniperl (a helper executable built with host compiler).

> +       cp ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h ${D}${PTEST_PATH}/xconfig.h

> +

>         # Remove build host references from various scattered files...

>         find "${D}${PTEST_PATH}" \

>              \( -name '*.PL' -o -name 'myconfig' -o -name 'cflags' -o -name '*.pl' -o -name '*.sh' -o -name '*.pm' \

> @@ -44,7 +49,7 @@ do_install_ptest () {

>          sed -i -e '/Autogenerated starting on/d' ${D}${PTEST_PATH}/lib/unicore/mktables.lst

>

>          # Remove files with host-specific configuration for building native binaries

> -        rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.h ${D}${PTEST_PATH}/xconfig.sh

> +        rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.sh

>

>           # create an empty file that is checked for existence by makerel test

>           touch ${D}${PTEST_PATH}/win32/Makefile

> --

> 2.34.1

>

>

> -=-=-=-=-=-=-=-=-=-=-=-

> Links: You receive all messages sent to this group.

> View/Reply Online (#213704): https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/message/213704__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHBBYf-Bw$<https://urldefense.com/v3/__https:/lists.openembedded.org/g/openembedded-core/message/213704__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHBBYf-Bw$>

> Mute This Topic: https://urldefense.com/v3/__https://lists.openembedded.org/mt/111899754/1686489__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHW92GUqQ$<https://urldefense.com/v3/__https:/lists.openembedded.org/mt/111899754/1686489__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHW92GUqQ$>

> Group Owner: openembedded-core+owner@lists.openembedded.org<mailto:openembedded-core+owner@lists.openembedded.org>

> Unsubscribe: https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/unsub__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHpsUi45A$<https://urldefense.com/v3/__https:/lists.openembedded.org/g/openembedded-core/unsub__;!!OkyjEqkqqe9UhNQ!wjEJSHK1TIHz2yn0Oi1lw3Y-UF75OFnYIaaOb_Mcqh0T7lDj5_xvA-ZdLLpMyQD6k8jsPDw1Q7dsMelsDTHpsUi45A$> [alex.kanavin@gmail.com]

> -=-=-=-=-=-=-=-=-=-=-=-

>
Alexander Kanavin March 27, 2025, 11:45 a.m. UTC | #3
I just run perl's run ptest on poky master to observe what is happening, and:

- the tests are not actually erroring out, some of them pass, some of
them are skipped
- the reported problem is not a missing header, but a missing gcc
compiler (which is hardcoded somewhere to oe-core's build environment,
not the target environment).

Can't exec "x86_64-poky-linux-gcc": No such file or directory at
/usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
line 362.
PASS: dist/ExtUtils-ParseXS/t/001-basic
Can't exec "x86_64-poky-linux-gcc": No such file or directory at
/usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
line 362.
PASS: dist/ExtUtils-ParseXS/t/002-more
Can't exec "x86_64-poky-linux-gcc": No such file or directory at
/usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
line 362.
PASS: dist/ExtUtils-ParseXS/t/003-usage

- additionally:
SKIP: cpan/ExtUtils-Constant/t/Constant
SKIP: cpan/ExtUtils-MakeMaker/t/02-xsdynamic

I'm not sure why you are seeing something different (are you using
plain poky with no other layers?), but any fixes must first address
the issues observed on the standard ptest build performed in yocto CI,
which is the one above. Then we can get to the issue of missing
header, if it's uncovered.

Alex
On Thu, 27 Mar 2025 at 11:51, Desai, Rajendra
<rajendra.desai@emerson.com> wrote:
> Ran the ptests (run-ptest) on the built qemux86-64 image
> 5 of the mentioned tests failed with “No such file or directory” error
> (for which, I have explained the details in the patch)
Alexander Kanavin March 27, 2025, 11:48 a.m. UTC | #4
Oh, one more detail, and it's important: which image are you using?
The correct one is core-image-ptest-perl.

Alex

On Thu, 27 Mar 2025 at 12:45, Alexander Kanavin via
lists.openembedded.org <alex.kanavin=gmail.com@lists.openembedded.org>
wrote:
>
> I just run perl's run ptest on poky master to observe what is happening, and:
>
> - the tests are not actually erroring out, some of them pass, some of
> them are skipped
> - the reported problem is not a missing header, but a missing gcc
> compiler (which is hardcoded somewhere to oe-core's build environment,
> not the target environment).
>
> Can't exec "x86_64-poky-linux-gcc": No such file or directory at
> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
> line 362.
> PASS: dist/ExtUtils-ParseXS/t/001-basic
> Can't exec "x86_64-poky-linux-gcc": No such file or directory at
> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
> line 362.
> PASS: dist/ExtUtils-ParseXS/t/002-more
> Can't exec "x86_64-poky-linux-gcc": No such file or directory at
> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm
> line 362.
> PASS: dist/ExtUtils-ParseXS/t/003-usage
>
> - additionally:
> SKIP: cpan/ExtUtils-Constant/t/Constant
> SKIP: cpan/ExtUtils-MakeMaker/t/02-xsdynamic
>
> I'm not sure why you are seeing something different (are you using
> plain poky with no other layers?), but any fixes must first address
> the issues observed on the standard ptest build performed in yocto CI,
> which is the one above. Then we can get to the issue of missing
> header, if it's uncovered.
>
> Alex
> On Thu, 27 Mar 2025 at 11:51, Desai, Rajendra
> <rajendra.desai@emerson.com> wrote:
> > Ran the ptests (run-ptest) on the built qemux86-64 image
> > 5 of the mentioned tests failed with “No such file or directory” error
> > (for which, I have explained the details in the patch)
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#213726): https://lists.openembedded.org/g/openembedded-core/message/213726
> Mute This Topic: https://lists.openembedded.org/mt/111899754/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Rajendra Desai April 4, 2025, 1:15 p.m. UTC | #5
Hi Alex, apologies for the late response.

The image that I built which had the reproducible issue (missing header issue) was core-image-full-cmdline.

I am curious to know why is it important to only use core-image-ptest-perl and not any other images?
I tried with core-image-ptest-perl and saw similar compiler issues that you mentioned.
Also, I am not completely sure how core-image-ptest-perl image is different from core-image-full-cmdline in terms
of building perl/perl-ptest recipe and why are we observing different issues between the two mentioned images.

From what I see, the image core-image-ptest-perl does not include x86_64-poky-linux-gcc
compiler unlike the full image that has the compiler installed. Maybe that’s the reason we are seeing
Can't exec "x86_64-poky-linux-gcc": No such file or directory issues while running those tests
(as they are XS based tests that require a compiler)?

The patch I created mainly applies to the current scenario where the oe-core still uses cross compile patches
(that are applied as a part of perl-cross recipe) while building perl, whereas the upstream perl is no more using this
approach of setting the flag (USE_CROSS_COMPILE). But in our case, we might still need to depend on build host
specific data due to the use of perl-cross.

This is what the xconfig.patch in perl-cross says:
perl-cross assumes the sources use xconfig.h with -DUSE_CROSS_COMPILE
With perl 5.20.0, it's no longer true. Regardless of what mainline perl
uses, let's stick with the old xconfig.h way for now.
And we are still using this patch in the recipe in oe-core.


For your other question : are you using plain poky with no other layers?

I tried 2 different approaches:

1.       Plain poky with only oe-core enabled (core-image-full-cmdline)

2.       Full image with other layers enabled

In both these cases, I saw xconfig.h file missing error for those tests.



Regards,

Rajendra

From: Alexander Kanavin <alex.kanavin@gmail.com>
Sent: Thursday, March 27, 2025 5:18 PM
To: alex.kanavin@gmail.com
Cc: Desai, Rajendra <rajendra.desai@emerson.com>; openembedded-core@lists.openembedded.org
Subject: [EXTERNAL] Re: [OE-core] [PATCH] perl-ptest: copy xconfig data from perl source directory




Oh, one more detail, and it's important: which image are you using?

The correct one is core-image-ptest-perl.



Alex



On Thu, 27 Mar 2025 at 12:45, Alexander Kanavin via

lists.openembedded.org <alex.kanavin=gmail.com@lists.openembedded.org<mailto:alex.kanavin=gmail.com@lists.openembedded.org>>

wrote:

>

> I just run perl's run ptest on poky master to observe what is happening, and:

>

> - the tests are not actually erroring out, some of them pass, some of

> them are skipped

> - the reported problem is not a missing header, but a missing gcc

> compiler (which is hardcoded somewhere to oe-core's build environment,

> not the target environment).

>

> Can't exec "x86_64-poky-linux-gcc": No such file or directory at

> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm

> line 362.

> PASS: dist/ExtUtils-ParseXS/t/001-basic

> Can't exec "x86_64-poky-linux-gcc": No such file or directory at

> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm

> line 362.

> PASS: dist/ExtUtils-ParseXS/t/002-more

> Can't exec "x86_64-poky-linux-gcc": No such file or directory at

> /usr/lib/perl/ptest/dist/ExtUtils-ParseXS/../../lib/ExtUtils/CBuilder/Base.pm

> line 362.

> PASS: dist/ExtUtils-ParseXS/t/003-usage

>

> - additionally:

> SKIP: cpan/ExtUtils-Constant/t/Constant

> SKIP: cpan/ExtUtils-MakeMaker/t/02-xsdynamic

>

> I'm not sure why you are seeing something different (are you using

> plain poky with no other layers?), but any fixes must first address

> the issues observed on the standard ptest build performed in yocto CI,

> which is the one above. Then we can get to the issue of missing

> header, if it's uncovered.

>

> Alex

> On Thu, 27 Mar 2025 at 11:51, Desai, Rajendra

> <rajendra.desai@emerson.com<mailto:rajendra.desai@emerson.com>> wrote:

> > Ran the ptests (run-ptest) on the built qemux86-64 image

> > 5 of the mentioned tests failed with “No such file or directory” error

> > (for which, I have explained the details in the patch)

>

> -=-=-=-=-=-=-=-=-=-=-=-

> Links: You receive all messages sent to this group.

> View/Reply Online (#213726): https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/message/213726__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sD6dkDt1Q$<https://urldefense.com/v3/__https:/lists.openembedded.org/g/openembedded-core/message/213726__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sD6dkDt1Q$>

> Mute This Topic: https://urldefense.com/v3/__https://lists.openembedded.org/mt/111899754/1686489__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sBX5gBO2w$<https://urldefense.com/v3/__https:/lists.openembedded.org/mt/111899754/1686489__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sBX5gBO2w$>

> Group Owner: openembedded-core+owner@lists.openembedded.org<mailto:openembedded-core+owner@lists.openembedded.org>

> Unsubscribe: https://urldefense.com/v3/__https://lists.openembedded.org/g/openembedded-core/unsub__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sCleMas7g$<https://urldefense.com/v3/__https:/lists.openembedded.org/g/openembedded-core/unsub__;!!OkyjEqkqqe9UhNQ!yJkK5dQ3qt0Ghtd1jhFhcYBApNsQEnHVVEHn29p8B_HIA7Iuv7WX_WgQKhhPe_ygKTvK8VPiTD-xtMEP_sCleMas7g$> [alex.kanavin@gmail.com]

> -=-=-=-=-=-=-=-=-=-=-=-

>
Alexander Kanavin April 4, 2025, 6:46 p.m. UTC | #6
On Fri, 4 Apr 2025 at 15:15, Desai, Rajendra <rajendra.desai@emerson.com> wrote:
> I am curious to know why is it important to only use core-image-ptest-perl and not any other images?
> I tried with core-image-ptest-perl and saw similar compiler issues that you mentioned.
> Also, I am not completely sure how core-image-ptest-perl image is different from core-image-full-cmdline in terms
> of building perl/perl-ptest recipe and why are we observing different issues between the two mentioned images.
>
> From what I see, the image core-image-ptest-perl does not include x86_64-poky-linux-gcc
> compiler unlike the full image that has the compiler installed. Maybe that’s the reason we are seeing
> Can't exec "x86_64-poky-linux-gcc": No such file or directory issues while running those tests
> (as they are XS based tests that require a compiler)?

Hello Rajendra,

the reason to use core-image-ptest-perl is that this is the image that
gets tested by Yocto CI, and that maintainers are using to evaluate
the patches against ptests. When that image doesn't fail and doesn't
need fixing, then any patches to address a failure that happens only
on your side will require investigation from you, ideally even before
you send the patches: are you configuring perl differently? Are you
using a different image that has a different set of installed
packages? I have started this investigation for you, and it took me a
significant amount of time, so doing the rest of it is on you.

Specifically, you first need to get core-image-ptest-perl to fail in
the same way that this other image fails for you, without this patch.
Quite likely this means adding gcc or some other dependencies to
RDEPENDS of the perl-ptest package in the perl recipe. Once you have
that fail happening, you can apply the patch you sent previously, and
see if it goes away. Basically the fail is obscured by a missing
optional gcc dependency, and that is a different problem that should
be addressed first before we can take the fix.

Hope this helps,
Alex
diff mbox series

Patch

diff --git a/meta/recipes-devtools/perl/perl-ptest.inc b/meta/recipes-devtools/perl/perl-ptest.inc
index 4b4756118c..49d322a848 100644
--- a/meta/recipes-devtools/perl/perl-ptest.inc
+++ b/meta/recipes-devtools/perl/perl-ptest.inc
@@ -20,6 +20,11 @@  do_install_ptest () {
 
 	ln -sf ${bindir}/perl ${D}${PTEST_PATH}/t/perl
 
+	# xconfig.h contains references to build host architecture, and yet is included from various other places.
+	# To make it reproducible let's make it a copy of config.h patch that is specific to the target architecture.
+	# It is believed that the original header is the product of building miniperl (a helper executable built with host compiler).
+	cp ${D}${libdir}/perl5/${PV}/${TARGET_ARCH}-linux/CORE/config.h ${D}${PTEST_PATH}/xconfig.h
+
 	# Remove build host references from various scattered files...
 	find "${D}${PTEST_PATH}" \
 	     \( -name '*.PL' -o -name 'myconfig' -o -name 'cflags' -o -name '*.pl' -o -name '*.sh' -o -name '*.pm' \
@@ -44,7 +49,7 @@  do_install_ptest () {
 	 sed -i -e '/Autogenerated starting on/d' ${D}${PTEST_PATH}/lib/unicore/mktables.lst
 
 	 # Remove files with host-specific configuration for building native binaries
-	 rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.h ${D}${PTEST_PATH}/xconfig.sh
+	 rm ${D}${PTEST_PATH}/Makefile.config ${D}${PTEST_PATH}/xconfig.sh
 
          # create an empty file that is checked for existence by makerel test
          touch ${D}${PTEST_PATH}/win32/Makefile