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.


You are receiving this mail because: