Bug 2046802 - perl: FTBFS in Fedora rawhide/f36
Summary: perl: FTBFS in Fedora rawhide/f36
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: perl
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jitka Plesnikova
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: PPCTracker F36FTBFS
TreeView+ depends on / blocked
 
Reported: 2022-01-27 09:29 UTC by Fedora Release Engineering
Modified: 2022-02-07 15:42 UTC (History)
11 users (show)

Fixed In Version: perl-5.34.0-485.fc36
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-02-07 15:42:16 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
build.log (32.00 KB, text/plain)
2022-01-27 09:29 UTC, Fedora Release Engineering
no flags Details
root.log (32.00 KB, text/plain)
2022-01-27 09:29 UTC, Fedora Release Engineering
no flags Details
state.log (966 bytes, text/plain)
2022-01-27 09:30 UTC, Fedora Release Engineering
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Github Perl perl5 issues 19373 0 None open Perl 5.34 fails to build with GCC 12.0.1 on ppc64le (ext/XS-APItest/t/printf.t) 2022-01-31 15:18:24 UTC

Description Fedora Release Engineering 2022-01-27 09:29:54 UTC
perl failed to build from source in Fedora rawhide/f36

https://koji.fedoraproject.org/koji/taskinfo?taskID=81984899


For details on the mass rebuild see:

https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Please fix perl at your earliest convenience and set the bug's status to
ASSIGNED when you start fixing it. If the bug remains in NEW state for 8 weeks,
perl will be orphaned. Before branching of Fedora 37,
perl will be retired, if it still fails to build.

For more details on the FTBFS policy, please visit:
https://docs.fedoraproject.org/en-US/fesco/Fails_to_build_from_source_Fails_to_install/

Comment 1 Fedora Release Engineering 2022-01-27 09:29:58 UTC
Created attachment 1856032 [details]
build.log

file build.log too big, will only attach last 32768 bytes

Comment 2 Fedora Release Engineering 2022-01-27 09:29:59 UTC
Created attachment 1856033 [details]
root.log

file root.log too big, will only attach last 32768 bytes

Comment 3 Fedora Release Engineering 2022-01-27 09:30:01 UTC
Created attachment 1856034 [details]
state.log

Comment 4 Jitka Plesnikova 2022-01-27 09:53:39 UTC
The build failed only on ppc64le. 
I am working on it now.

Comment 5 Jitka Plesnikova 2022-01-31 15:24:05 UTC
The failure is related to failing test XS-APItest/t/printf.t which fails only on ppc64le.

#   Failed test 'print_long_double'
#   at t/printf.t line 44.
#          got: '0.000'
#     expected: '7.000'
#   Failed test 'print_long_doubleL'
#   at t/printf.t line 45.
#          got: '0.000'
#     expected: '7.000'
# Looks like you failed 2 tests of 13.
../ext/XS-APItest/t/printf.t ......................................... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/13 subtests

Comment 6 Jakub Jelinek 2022-01-31 20:25:20 UTC
From what I can see, perl likes to do everything on its own, so the printf that the test uses is actually PerlIO_stdoutf.
Looking at config.h, the long double detection looks reasonable
#define HAS_LONG_DOUBLE         /**/
#ifdef HAS_LONG_DOUBLE
#define LONG_DOUBLESIZE 16              /**/
#define LONG_DOUBLEKIND 1               /**/
#define LONG_DOUBLE_IS_DOUBLE                           0
#define LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN   1
...
#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE       5
#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE       6
#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE       7
#define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE       8
...
#define LONG_DOUBLE_STYLE_IEEE
#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
#undef LONG_DOUBLE_STYLE_IEEE_EXTENDED
#define LONG_DOUBLE_STYLE_IEEE_STD
#undef LONG_DOUBLE_STYLE_VAX
#endif
but the question is what it does with it.  I'm not familiar with the perl codebase and it is unfortunately
quite cryptic.
Is there an easy way to run a single test as opposed to all of them?
Actually:
#ifndef USE_LONG_DOUBLE
/*#define       USE_LONG_DOUBLE         / **/
#endif
looks kind of unexpected.
I bet that is also the reason why
#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
and not
#define Gconvert(x,n,t,b) sprintf((b),"%.*Lg",(n),(x))

I'd suggest to compare emitted config.h between s390x and ppc64le, s390x also (like rawhide ppc64le) has IEEE quad long double (though, it has big-endian one while ppc64le little endian).
And also compare it with f35-ish ppc64le (which had IBM double double instead of IEEE quad long double).

Comment 7 Jitka Plesnikova 2022-02-02 13:28:26 UTC
I temporarily turned off running those two test cases for ppc64le to be able to build perl.

perl-5.34.0-484.fc36 has been successfully built.

I will continue to look for the cause of the error.

Comment 8 Dan Horák 2022-02-02 17:24:19 UTC
If you need access to a rawhide/ppc64le machine, please let me know.

Comment 9 Tulio Magno Quites Machado Filho 2022-02-07 13:47:30 UTC
I can't reproduce this issue with gcc-12.0.1-0.6.fc36. I tested with commit a471b953f462f, which doesn't disable the 2 test cases.

I suspect this issue has been fixed by bug 2050569.

Comment 10 Jitka Plesnikova 2022-02-07 15:42:16 UTC
Thanks for the notice, Tulio. I removed the previous changes and successfully rebuilt perl.


Note You need to log in before you can comment on or make changes to this bug.