Bug 2046802

Summary: perl: FTBFS in Fedora rawhide/f36
Product: [Fedora] Fedora Reporter: Fedora Release Engineering <releng>
Component: perlAssignee: Jitka Plesnikova <jplesnik>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: caillon+fedoraproject, dan, jakub, jplesnik, mspacek, perl-devel, ppisar, rhughes, sandmann, spotrh, tuliom
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: perl-5.34.0-485.fc36 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-02-07 15:42:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1071880, 1992484    
Attachments:
Description Flags
build.log
none
root.log
none
state.log none

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.