[v2] perl: Enable threading

Message ID 20220106201234.159792-1-saul.wold@windriver.com
State Accepted, archived
Commit b9fd7cd319a1d8f0ddf5ea60710b015e9afb588c
Headers show
Series [v2] perl: Enable threading | expand

Commit Message

Saul Wold Jan. 6, 2022, 8:12 p.m. UTC
From: Saul Wold <Saul.Wold@windriver.com>

When the tranisiton to perl-cross occured, the threading define
seems to have been missed.  The perl tests for threading where
simply skipped, so there was no direct failures.  This was verified
by running perl ptest before and after the change to see PASS vs SKIP
results of threaded related tests.

NOTE: Perl officially discourges the use of threads, so this
functionality maybe depercated in the future [0][1]

v2: adds the usethreads to native and nativesdk. This was tested by
builing postresql and rrdtool which use perl and automake.

[0] https://perldoc.perl.org/5.34.0-RC2/threads#WARNING
[1] https://perldoc.perl.org/perlpolicy#discouraged

Signed-off-by: Saul Wold <saul.wold@windriver.com>
---
 meta/recipes-devtools/perl/perl_5.34.0.bb | 3 +++
 1 file changed, 3 insertions(+)

Comments

Andrei Gherzan Jan. 10, 2022, 12:39 p.m. UTC | #1
Hi,

On Thu, 6 Jan 2022, at 20:12, Saul Wold wrote:
> From: Saul Wold <Saul.Wold@windriver.com>
>
> When the tranisiton to perl-cross occured, the threading define
> seems to have been missed.  The perl tests for threading where
> simply skipped, so there was no direct failures.  This was verified
> by running perl ptest before and after the change to see PASS vs SKIP
> results of threaded related tests.
>
> NOTE: Perl officially discourges the use of threads, so this
> functionality maybe depercated in the future [0][1]
>
> v2: adds the usethreads to native and nativesdk. This was tested by
> builing postresql and rrdtool which use perl and automake.
>
> [0] https://perldoc.perl.org/5.34.0-RC2/threads#WARNING
> [1] https://perldoc.perl.org/perlpolicy#discouraged
>
> Signed-off-by: Saul Wold <saul.wold@windriver.com>
> ---
>  meta/recipes-devtools/perl/perl_5.34.0.bb | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb 
> b/meta/recipes-devtools/perl/perl_5.34.0.bb
> index a6ae80f07e1..e4bcfe3ce69 100644
> --- a/meta/recipes-devtools/perl/perl_5.34.0.bb
> +++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
> @@ -53,6 +53,7 @@ do_configure:class-target() {
>      ./configure --prefix=${prefix} --libdir=${libdir} \
>      --target=${TARGET_SYS} \
>      -Duseshrplib \
> +    -Dusethreads \
>      -Dsoname=libperl.so.5 \
>      -Dvendorprefix=${prefix} \
>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
> @@ -80,6 +81,7 @@ do_configure:class-nativesdk() {
>      ./configure --prefix=${prefix} \
>      --target=${TARGET_SYS} \
>      -Duseshrplib \
> +    -Dusethreads \
>      -Dsoname=libperl.so.5 \
>      -Dvendorprefix=${prefix} \
>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
> @@ -94,6 +96,7 @@ do_configure:class-native() {
>      ./configure --prefix=${prefix} \
>      -Dbin=${bindir}/perl-native \
>      -Duseshrplib \
> +    -Dusethreads \
>      -Dsoname=libperl.so.5 \
>      -Dvendorprefix=${prefix} \
>      -Ui_xlocale \

This patch seems to break perl-native with musl:

| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x8298): undefined reference to `PL_perldb'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x82a4): undefined reference to `PL_DBsingle'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x82b1): undefined reference to `PL_DBcontrol'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x82bf): undefined reference to `PL_initav'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x82d2): undefined reference to `PL_phase'
| /[...]/tmp/hosttools/ld: perlmini.o: in function `Perl_my_failure_exit':
| perlmini.c:(.text+0x831d): undefined reference to `PL_statusvalue'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x8336): undefined reference to `PL_exit_flags'
| /[...]/tmp/hosttools/ld: perlmini.o: in function `Perl_xs_boot_epilog':
| perlmini.c:(.text+0x83a7): undefined reference to `PL_unitcheckav'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x83b9): undefined reference to `PL_scopestack_ix'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x83c7): undefined reference to `PL_stack_base'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x83ce): undefined reference to `PL_sv_immortals'
| /[...]/tmp/hosttools/ld: perlmini.c:(.text+0x83e6): undefined reference to `PL_stack_sp'
| collect2: error: ld returned 1 exit status
| make[1]: *** [Makefile:99: miniperl] Error 1
| make[1]: Leaving directory '/[...]/tmp/work/x86_64-linux/perl-native/5.34.0-r0/perl-5.34.0'
| make: *** [Makefile:79: all] Error 2
| ERROR: oe_runmake failed
| WARNING: /[...]/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819:191 exit 1 from 'exit 1'
| WARNING: Backtrace (BB generated script):
|       #1: bbfatal_log, /[...]/tmp/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819, line 191
|       #2: die, /[...]/tmp/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819, line 175
|       #3: oe_runmake, /[...]/tmp/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819, line 170
|       #4: do_compile, /[...]/tmp/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819, line 148
|       #5: main, /[...]/work/x86_64-linux/perl-native/5.34.0-r0/temp/run.do_compile.685819, line 195

Andrei
Andrei Gherzan Jan. 10, 2022, 12:55 p.m. UTC | #2
On Mon, 10 Jan 2022, at 12:39, Andrei Gherzan wrote:
> Hi,
>
> On Thu, 6 Jan 2022, at 20:12, Saul Wold wrote:
>> From: Saul Wold <Saul.Wold@windriver.com>
>>
>> When the tranisiton to perl-cross occured, the threading define
>> seems to have been missed.  The perl tests for threading where
>> simply skipped, so there was no direct failures.  This was verified
>> by running perl ptest before and after the change to see PASS vs SKIP
>> results of threaded related tests.
>>
>> NOTE: Perl officially discourges the use of threads, so this
>> functionality maybe depercated in the future [0][1]
>>
>> v2: adds the usethreads to native and nativesdk. This was tested by
>> builing postresql and rrdtool which use perl and automake.
>>
>> [0] https://perldoc.perl.org/5.34.0-RC2/threads#WARNING
>> [1] https://perldoc.perl.org/perlpolicy#discouraged
>>
>> Signed-off-by: Saul Wold <saul.wold@windriver.com>
>> ---
>>  meta/recipes-devtools/perl/perl_5.34.0.bb | 3 +++
>>  1 file changed, 3 insertions(+)
>>
>> diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb 
>> b/meta/recipes-devtools/perl/perl_5.34.0.bb
>> index a6ae80f07e1..e4bcfe3ce69 100644
>> --- a/meta/recipes-devtools/perl/perl_5.34.0.bb
>> +++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
>> @@ -53,6 +53,7 @@ do_configure:class-target() {
>>      ./configure --prefix=${prefix} --libdir=${libdir} \
>>      --target=${TARGET_SYS} \
>>      -Duseshrplib \
>> +    -Dusethreads \
>>      -Dsoname=libperl.so.5 \
>>      -Dvendorprefix=${prefix} \
>>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
>> @@ -80,6 +81,7 @@ do_configure:class-nativesdk() {
>>      ./configure --prefix=${prefix} \
>>      --target=${TARGET_SYS} \
>>      -Duseshrplib \
>> +    -Dusethreads \
>>      -Dsoname=libperl.so.5 \
>>      -Dvendorprefix=${prefix} \
>>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
>> @@ -94,6 +96,7 @@ do_configure:class-native() {
>>      ./configure --prefix=${prefix} \
>>      -Dbin=${bindir}/perl-native \
>>      -Duseshrplib \
>> +    -Dusethreads \
>>      -Dsoname=libperl.so.5 \
>>      -Dvendorprefix=${prefix} \
>>      -Ui_xlocale \
>
> This patch seems to break perl-native with musl:

It seems like it is persistent and it can be workaround-ed with a cleansstate. the way to reproduce (if anyone is interested) is to:
0. I've only tested it with musl so it might be musl specific
1. cleansstate perl-native
2. build without this patch - reverted
3. build with this patch

Andrei
Alexander Kanavin Jan. 10, 2022, 1:01 p.m. UTC | #3
You need to clean before every build. Perl doesn't correctly reconfigure
itself when settings like this change.

Alex

On Mon, 10 Jan 2022 at 13:56, Andrei Gherzan <andrei@gherzan.com> wrote:

> On Mon, 10 Jan 2022, at 12:39, Andrei Gherzan wrote:
> > Hi,
> >
> > On Thu, 6 Jan 2022, at 20:12, Saul Wold wrote:
> >> From: Saul Wold <Saul.Wold@windriver.com>
> >>
> >> When the tranisiton to perl-cross occured, the threading define
> >> seems to have been missed.  The perl tests for threading where
> >> simply skipped, so there was no direct failures.  This was verified
> >> by running perl ptest before and after the change to see PASS vs SKIP
> >> results of threaded related tests.
> >>
> >> NOTE: Perl officially discourges the use of threads, so this
> >> functionality maybe depercated in the future [0][1]
> >>
> >> v2: adds the usethreads to native and nativesdk. This was tested by
> >> builing postresql and rrdtool which use perl and automake.
> >>
> >> [0] https://perldoc.perl.org/5.34.0-RC2/threads#WARNING
> >> [1] https://perldoc.perl.org/perlpolicy#discouraged
> >>
> >> Signed-off-by: Saul Wold <saul.wold@windriver.com>
> >> ---
> >>  meta/recipes-devtools/perl/perl_5.34.0.bb | 3 +++
> >>  1 file changed, 3 insertions(+)
> >>
> >> diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb
> >> b/meta/recipes-devtools/perl/perl_5.34.0.bb
> >> index a6ae80f07e1..e4bcfe3ce69 100644
> >> --- a/meta/recipes-devtools/perl/perl_5.34.0.bb
> >> +++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
> >> @@ -53,6 +53,7 @@ do_configure:class-target() {
> >>      ./configure --prefix=${prefix} --libdir=${libdir} \
> >>      --target=${TARGET_SYS} \
> >>      -Duseshrplib \
> >> +    -Dusethreads \
> >>      -Dsoname=libperl.so.5 \
> >>      -Dvendorprefix=${prefix} \
> >>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
> >> @@ -80,6 +81,7 @@ do_configure:class-nativesdk() {
> >>      ./configure --prefix=${prefix} \
> >>      --target=${TARGET_SYS} \
> >>      -Duseshrplib \
> >> +    -Dusethreads \
> >>      -Dsoname=libperl.so.5 \
> >>      -Dvendorprefix=${prefix} \
> >>      -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
> >> @@ -94,6 +96,7 @@ do_configure:class-native() {
> >>      ./configure --prefix=${prefix} \
> >>      -Dbin=${bindir}/perl-native \
> >>      -Duseshrplib \
> >> +    -Dusethreads \
> >>      -Dsoname=libperl.so.5 \
> >>      -Dvendorprefix=${prefix} \
> >>      -Ui_xlocale \
> >
> > This patch seems to break perl-native with musl:
>
> It seems like it is persistent and it can be workaround-ed with a
> cleansstate. the way to reproduce (if anyone is interested) is to:
> 0. I've only tested it with musl so it might be musl specific
> 1. cleansstate perl-native
> 2. build without this patch - reverted
> 3. build with this patch
>
> Andrei
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#160347):
> https://lists.openembedded.org/g/openembedded-core/message/160347
> Mute This Topic: https://lists.openembedded.org/mt/88246693/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
>
Andrei Gherzan Jan. 10, 2022, 1:07 p.m. UTC | #4
On Mon, 10 Jan 2022, at 13:01, Alexander Kanavin wrote:
> You need to clean before every build. Perl doesn't correctly reconfigure itself when settings like this change.

I'm not sure I get you here. Are you saying that this is normal behavior or that it is a known issue? If the latter, do we have an bug raised on it?

Andrei
Alexander Kanavin Jan. 10, 2022, 1:15 p.m. UTC | #5
On Mon, 10 Jan 2022 at 14:08, Andrei Gherzan <andrei@gherzan.com> wrote:

>
> You need to clean before every build. Perl doesn't correctly reconfigure
> itself when settings like this change.
>
> I'm not sure I get you here. Are you saying that this is normal behavior
> or that it is a known issue? If the latter, do we have an bug raised on it?
>

Yes, it's something to be fixed, I'm just saying that the specific change
itself is not the source of trouble.

Alex
Andrei Gherzan Jan. 10, 2022, 1:29 p.m. UTC | #6
On Mon, 10 Jan 2022, at 13:15, Alexander Kanavin wrote:
> On Mon, 10 Jan 2022 at 14:08, Andrei Gherzan <andrei@gherzan.com> wrote:
>> 
>> You need to clean before every build. Perl doesn't correctly reconfigure itself when settings like this change.
>> 
>> I'm not sure I get you here. Are you saying that this is normal behavior or that it is a known issue? If the latter, do we have an bug raised on it?
> 
> Yes, it's something to be fixed, I'm just saying that the specific change itself is not the source of trouble.

That makes sense and after a bit more debugging it seems to match my testing as well.

Thanks,
Andrei

Patch

diff --git a/meta/recipes-devtools/perl/perl_5.34.0.bb b/meta/recipes-devtools/perl/perl_5.34.0.bb
index a6ae80f07e1..e4bcfe3ce69 100644
--- a/meta/recipes-devtools/perl/perl_5.34.0.bb
+++ b/meta/recipes-devtools/perl/perl_5.34.0.bb
@@ -53,6 +53,7 @@  do_configure:class-target() {
     ./configure --prefix=${prefix} --libdir=${libdir} \
     --target=${TARGET_SYS} \
     -Duseshrplib \
+    -Dusethreads \
     -Dsoname=libperl.so.5 \
     -Dvendorprefix=${prefix} \
     -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
@@ -80,6 +81,7 @@  do_configure:class-nativesdk() {
     ./configure --prefix=${prefix} \
     --target=${TARGET_SYS} \
     -Duseshrplib \
+    -Dusethreads \
     -Dsoname=libperl.so.5 \
     -Dvendorprefix=${prefix} \
     -Darchlibexp=${STAGING_LIBDIR}/perl5/${PV}/${TARGET_ARCH}-linux \
@@ -94,6 +96,7 @@  do_configure:class-native() {
     ./configure --prefix=${prefix} \
     -Dbin=${bindir}/perl-native \
     -Duseshrplib \
+    -Dusethreads \
     -Dsoname=libperl.so.5 \
     -Dvendorprefix=${prefix} \
     -Ui_xlocale \