Bug 2321494

Summary: perl: build irreproducibility that looks like a bug
Product: [Fedora] Fedora Reporter: Zbigniew Jędrzejewski-Szmek <zbyszek>
Component: perlAssignee: Jitka Plesnikova <jplesnik>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: iarnell, jplesnik, kasal, mmaslano, mspacek, perl-devel, ppisar, psabata, rhughes, spotrh
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: perl-5.40.0-513.fc42 Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-01-09 14:52:57 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:

Description Zbigniew Jędrzejewski-Szmek 2024-10-24 12:02:54 UTC
Rebuilds of perl are not reproducible (as defined in https://fedoraproject.org/wiki/Changes/ReproduciblePackageBuilds).
The top level summary looks like this:

    perl-5.40.0-512.fc42.src
    perl-5.40.0-512.fc42.x86_64
    perl-Attribute-Handlers-1.03-512.fc42.noarch
    perl-AutoLoader-5.74-512.fc42.noarch
    perl-AutoSplit-5.74-512.fc42.noarch
    perl-B-1.89-512.fc42.x86_64
    perl-B-debuginfo-1.89-512.fc42.x86_64
    perl-Benchmark-1.25-512.fc42.noarch
    perl-Class-Struct-0.68-512.fc42.noarch
    perl-Config-Extensions-0.03-512.fc42.noarch
    perl-DBM_Filter-0.06-512.fc42.noarch
    perl-Devel-Peek-1.34-512.fc42.x86_64
    perl-Devel-Peek-debuginfo-1.34-512.fc42.x86_64
    perl-Devel-SelfStubber-1.06-512.fc42.noarch
    perl-DirHandle-1.05-512.fc42.noarch
    perl-Dumpvalue-2.27-512.fc42.noarch
    perl-DynaLoader-1.56-512.fc42.x86_64
    perl-English-1.11-512.fc42.noarch
    perl-Errno-1.38-512.fc42.x86_64
        modified-S.5........ /usr/lib64/perl5/Errno.pm
    perl-ExtUtils-Constant-0.25-512.fc42.noarch
    perl-ExtUtils-Embed-1.35-512.fc42.noarch
    perl-ExtUtils-Miniperl-1.14-512.fc42.noarch
    perl-Fcntl-1.18-512.fc42.x86_64
    perl-Fcntl-debuginfo-1.18-512.fc42.x86_64
    perl-File-Basename-2.86-512.fc42.noarch
    perl-File-Compare-1.100.800-512.fc42.noarch
    perl-File-Copy-2.41-512.fc42.noarch
    perl-File-DosGlob-1.12-512.fc42.x86_64
    perl-File-DosGlob-debuginfo-1.12-512.fc42.x86_64
    perl-File-Find-1.44-512.fc42.noarch
    perl-File-stat-1.14-512.fc42.noarch
    perl-FileCache-1.10-512.fc42.noarch
    perl-FileHandle-2.05-512.fc42.noarch
    perl-FindBin-1.54-512.fc42.noarch
    perl-GDBM_File-1.24-512.fc42.x86_64
    perl-GDBM_File-debuginfo-1.24-512.fc42.x86_64
    perl-Getopt-Std-1.14-512.fc42.noarch
    perl-Hash-Util-0.32-512.fc42.x86_64
    perl-Hash-Util-FieldHash-1.27-512.fc42.x86_64
    perl-Hash-Util-FieldHash-debuginfo-1.27-512.fc42.x86_64
    perl-Hash-Util-debuginfo-0.32-512.fc42.x86_64
    perl-I18N-Collate-1.02-512.fc42.noarch
    perl-I18N-LangTags-0.45-512.fc42.noarch
    perl-I18N-Langinfo-0.24-512.fc42.x86_64
    perl-I18N-Langinfo-debuginfo-0.24-512.fc42.x86_64
    perl-IO-1.55-512.fc42.x86_64
    perl-IO-debuginfo-1.55-512.fc42.x86_64
    perl-IPC-Open3-1.22-512.fc42.noarch
    perl-Locale-Maketext-Simple-0.21-512.fc42.noarch
    perl-Math-Complex-1.62-512.fc42.noarch
    perl-Memoize-1.16-512.fc42.noarch
    perl-Module-Loaded-0.08-512.fc42.noarch
    perl-NDBM_File-1.17-512.fc42.x86_64
    perl-NDBM_File-debuginfo-1.17-512.fc42.x86_64
    perl-NEXT-0.69-512.fc42.noarch
    perl-Net-1.04-512.fc42.noarch
    perl-ODBM_File-1.18-512.fc42.x86_64
    perl-ODBM_File-debuginfo-1.18-512.fc42.x86_64
    perl-Opcode-1.65-512.fc42.x86_64
    perl-Opcode-debuginfo-1.65-512.fc42.x86_64
    perl-POSIX-2.20-512.fc42.x86_64
    perl-POSIX-debuginfo-2.20-512.fc42.x86_64
    perl-Pod-Functions-1.14-512.fc42.noarch
    perl-Pod-Html-1.35-512.fc42.noarch
    perl-Safe-2.46-512.fc42.noarch
    perl-Search-Dict-1.07-512.fc42.noarch
    perl-SelectSaver-1.02-512.fc42.noarch
    perl-SelfLoader-1.27-512.fc42.noarch
    perl-Symbol-1.09-512.fc42.noarch
    perl-Sys-Hostname-1.25-512.fc42.x86_64
    perl-Sys-Hostname-debuginfo-1.25-512.fc42.x86_64
    perl-Term-Complete-1.403-512.fc42.noarch
    perl-Term-ReadLine-1.17-512.fc42.noarch
    perl-Test-1.31-512.fc42.noarch
    perl-Text-Abbrev-1.02-512.fc42.noarch
    perl-Thread-3.05-512.fc42.noarch
    perl-Thread-Semaphore-2.13-512.fc42.noarch
    perl-Tie-4.6-512.fc42.noarch
    perl-Tie-File-1.09-512.fc42.noarch
    perl-Tie-Memoize-1.1-512.fc42.noarch
    perl-Time-1.04-512.fc42.noarch
    perl-Time-Piece-1.3401-512.fc42.x86_64
    perl-Time-Piece-debuginfo-1.3401-512.fc42.x86_64
    perl-Unicode-UCD-0.78-512.fc42.noarch
    perl-User-pwent-1.05-512.fc42.noarch
    perl-autouse-1.11-512.fc42.noarch
    perl-base-2.27-512.fc42.noarch
    perl-blib-1.07-512.fc42.noarch
    perl-debugger-1.60-512.fc42.noarch
    perl-debuginfo-5.40.0-512.fc42.x86_64
    perl-debugsource-5.40.0-512.fc42.x86_64
    perl-deprecate-0.04-512.fc42.noarch
    perl-devel-5.40.0-512.fc42.x86_64
        modified-S.5........ /usr/lib64/perl5/CORE/config.h
    perl-diagnostics-1.40-512.fc42.noarch
    perl-doc-5.40.0-512.fc42.noarch
    perl-encoding-warnings-0.14-512.fc42.noarch
    perl-fields-2.27-512.fc42.noarch
    perl-filetest-1.03-512.fc42.noarch
    perl-if-0.61.000-512.fc42.noarch
    perl-interpreter-5.40.0-512.fc42.x86_64
    perl-interpreter-debuginfo-5.40.0-512.fc42.x86_64
    perl-less-0.03-512.fc42.noarch
    perl-lib-0.65-512.fc42.x86_64
    perl-libnetcfg-5.40.0-512.fc42.noarch
    perl-libs-5.40.0-512.fc42.x86_64
        modified-S.5........ /usr/lib64/perl5/Config.pm
        modified-S.5........ /usr/lib64/perl5/Config_heavy.pl
    perl-libs-debuginfo-5.40.0-512.fc42.x86_64
    perl-locale-1.12-512.fc42.noarch
    perl-macros-5.40.0-512.fc42.noarch
    perl-meta-notation-5.40.0-512.fc42.noarch
    perl-mro-1.29-512.fc42.x86_64
    perl-mro-debuginfo-1.29-512.fc42.x86_64
    perl-open-1.13-512.fc42.noarch
    perl-overload-1.37-512.fc42.noarch
    perl-overloading-0.02-512.fc42.noarch
    perl-ph-5.40.0-512.fc42.x86_64
    perl-sigtrap-1.10-512.fc42.noarch
    perl-sort-2.05-512.fc42.noarch
    perl-subs-1.04-512.fc42.noarch
    perl-tests-5.40.0-512.fc42.x86_64
    perl-utils-5.40.0-512.fc42.noarch
        modified-..5........ /usr/bin/perlbug
        modified-..5........ /usr/bin/perlthanks
    perl-vars-1.05-512.fc42.noarch
    perl-vmsish-1.04-512.fc42.noarch

(The format is package name followed by rpmdiff output.)

This seems very strange. This appears to check the kernel version which seems not useful:
│ ├── ./usr/lib64/perl5/Errno.pm
│ │ @@ -6,16 +6,16 @@
│ │  
│ │  package Errno;
│ │  use Exporter 'import';
│ │  use strict;
│ │  
│ │  use Config;
│ │  "$Config{'archname'}-$Config{'osvers'}" eq
│ │ -"x86_64\-linux\-thread\-multi-6\.10\.11\-200\.fc40\.x86_64" or
│ │ -   die "Errno architecture (x86_64\-linux\-thread\-multi-6\.10\.11\-200\.fc40\.x86_64) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
│ │ +"x86_64\-linux\-thread\-multi-6\.8\.5\-301\.fc40\.x86_64" or
│ │ +   die "Errno architecture (x86_64\-linux\-thread\-multi-6\.8\.5\-301\.fc40\.x86_64) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
│ │  

config.h embeds the kernel version too and doesn't use $SOURCE_DATE_EPOCH. This is bad for build reproducibility, but seems harmless otherwise. I'd appreciate if this could be changed so that perl builds reproducibly:
│ ├── ./usr/lib64/perl5/CORE/config.h
│ │ @@ -5,17 +5,17 @@
│ │   * Feel free to modify any of this as the need arises.  Note, however,
│ │   * that running config_h.SH again will wipe out any changes you've made.
│ │   * For a more permanent change edit config.sh and rerun config_h.SH.
│ │   */
│ │  
│ │  /* Package name      : perl5
│ │   * Source directory  : .
│ │ - * Configuration time: Tue Oct 15 13:32:58 UTC 2024
│ │ + * Configuration time: Wed Oct 16 16:39:30 UTC 2024
│ │   * Configured by     : Red Hat, Inc.
│ │ - * Target system     : linux 52ff0ae90ecc4ff680ae8bae4f0c74ee 6.10.11-200.fc40.x86_64 #1 smp preempt_dynamic wed sep 18 21:09:58 utc 2024 x86_64 gnulinux 
│ │ + * Target system     : linux a8f9732ea7f54097bc9b1a8394e8ab42 6.8.5-301.fc40.x86_64 #1 smp preempt_dynamic thu apr 11 20:00:10 utc 2024 x86_64 gnulinux 
│ │   */
│ │  
│ │  #ifndef _config_h_
│ │  #define _config_h_
│ │  
│ │  /* LOC_SED:
│ │   * This symbol holds the complete pathname to the sed program.
│ │ @@ -1365,15 +1365,15 @@
│ │   */
│ │  /* OSVERS:
│ │   * This symbol contains the version of the operating system, as determined
│ │   * by Configure.  You shouldn't rely on it too much; the specific
│ │   * feature tests from Configure are generally more reliable.
│ │   */
│ │  #define OSNAME "linux"             /**/
│ │ -#define OSVERS "6.10.11-200.fc40.x86_64"           /**/
│ │ +#define OSVERS "6.8.5-301.fc40.x86_64"             /**/

The last two files are similar:
│ ├── ./usr/lib64/perl5/Config.pm
│ │ @@ -101 +101 @@
│ │ -    osvers => '6.10.11-200.fc40.x86_64',
│ │ +    osvers => '6.8.5-301.fc40.x86_64',
│ ├── ./usr/lib64/perl5/Config_heavy.pl
│ │ @@ -78 +78 @@
│ │ -## Configuration time: Tue Oct 15 13:32:58 UTC 2024
│ │ +## Configuration time: Wed Oct 16 16:39:30 UTC 2024
│ │ @@ -80 +80 @@
│ │ -## Target system     : linux 52ff0ae90ecc4ff680ae8bae4f0c74ee 6.10.11-200.fc40.x86_64 #1 smp preempt_dynamic wed sep 18 21:09:58 utc 2024 x86_64 gnulinux 
│ │ +## Target system     : linux a8f9732ea7f54097bc9b1a8394e8ab42 6.8.5-301.fc40.x86_64 #1 smp preempt_dynamic thu apr 11 20:00:10 utc 2024 x86_64 gnulinux 
│ │ @@ -236 +236 @@
│ │ -cf_time='Tue Oct 15 13:32:58 UTC 2024'
│ │ +cf_time='Wed Oct 16 16:39:30 UTC 2024'
│ │ @@ -1180 +1180 @@
│ │ -myuname='linux 52ff0ae90ecc4ff680ae8bae4f0c74ee 6.10.11-200.fc40.x86_64 #1 smp preempt_dynamic wed sep 18 21:09:58 utc 2024 x86_64 gnulinux '
│ │ +myuname='linux a8f9732ea7f54097bc9b1a8394e8ab42 6.8.5-301.fc40.x86_64 #1 smp preempt_dynamic thu apr 11 20:00:10 utc 2024 x86_64 gnulinux '
│ │ @@ -1209 +1209 @@
│ │ -osvers='6.10.11-200.fc40.x86_64'
│ │ +osvers='6.8.5-301.fc40.x86_64'


Reproducible: Always

Comment 1 Fedora Update System 2025-01-09 13:04:20 UTC
FEDORA-2025-8036e7439f (perl-5.40.0-513.fc42) has been submitted as an update to Fedora 42.
https://bodhi.fedoraproject.org/updates/FEDORA-2025-8036e7439f

Comment 2 Fedora Update System 2025-01-09 14:52:57 UTC
FEDORA-2025-8036e7439f (perl-5.40.0-513.fc42) has been pushed to the Fedora 42 stable repository.
If problem still persists, please make note of it in this bug report.