Bug ID | 1204697 |
---|---|
Summary | [Surm, LTO, reproducible build] The changes to ensure a reproducible Build broke testsuite package |
Classification | openSUSE |
Product | openSUSE Tumbleweed |
Version | Current |
Hardware | All |
OS | openSUSE Tumbleweed |
Status | NEW |
Severity | Major |
Priority | P5 - None |
Component | Other |
Assignee | bwiedemann@suse.com |
Reporter | eich@suse.com |
QA Contact | qa-bugs@suse.de |
CC | hpc-bugs@suse.de, mjambor@suse.com |
Found By | Development |
Blocker | --- |
Flags | needinfo?(mjambor@suse.com) |
The change introduced by https://build.opensuse.org/request/show/990637 made the build of the Slurm testsuite package reproducible but broke the object files which can no longer be used to link a binary. find -type f -name "*.[ao]" -print | while read f; do # drop non-deterministic lto bits from .o files strip -p --discard-locals -R .gnu.lto_* -R .gnu.debuglto_* -N __gnu_lto_v1 $f done gets applied to two object files which are included in the testsuite package. These objects cannot be built at runtime (of the testsuite) unless we ship a load of header files. The steps required to make this work would be awkward. Unfortunately, these objects cannot be linked into a binary any more, one gets: $ gcc test24.4.prog.c -g -pthread -o test24.4.prog -I/srv/slurm-testsuite -I/srv/slurm-testsuite -I/usr/include -Wl,-rpath=/usr/lib64/slurm -L/usr/lib64/slurm -lslurmfull -lresolv -ldl -lm -export-dynamic /srv/slurm-testsuite/src/slurmctld/locks.o /srv/slurm-testsuite/src/sshare/process.o Error /usr/lib64/gcc/x86_64-suse-linux/12/../../../../x86_64-suse-linux/bin/ld: /srv/slurm-testsuite/src/slurmctld/locks.o: plugin needed to handle lto object /usr/lib64/gcc/x86_64-suse-linux/12/../../../../x86_64-suse-linux/bin/ld: /srv/slurm-testsuite/src/sshare/process.o: plugin needed to handle lto object /usr/lib64/gcc/x86_64-suse-linux/12/../../../../x86_64-suse-linux/bin/ld: /tmp/cclpErBu.o: in function `main': /home/slurm-testsuite/testsuite/expect/test24.4.prog.c:543: undefined reference to `long_flag' /usr/lib64/gcc/x86_64-suse-linux/12/../../../../x86_64-suse-linux/bin/ld: /home/slurm-testsuite/testsuite/expect/test24.4.prog.c:545: undefined reference to `process' collect2: error: ld returned 1 exit status Thus, we need to find a different solution. Since we do allow shipping of static libraries, which obviously need to be reproducible but also need to work still, we should be able to apply the same post-processing to these objects to make them reproducible. The toolchain team may be able to help here.