rpm-software-management / rpm

The RPM package manager
http://rpm.org
Other
491 stars 360 forks source link

Unreproducible DEPENDSDICT #1056

Open bmwiedemann opened 4 years ago

bmwiedemann commented 4 years ago

While working on reproducible builds for openSUSE, I found that our poco package build had variations in the resulting poco-devel rpms in the DEPENDSDICT header. Likely from build/rpmfc.c rpmfcGenerateDepends function.

Steps To Reproduce:

osc co openSUSE:Factory/poco && cd $_
osc build --no-service --vm-type=kvm --keep-pkgs=RPMS
rpm -qp --qf '%{DEPENDSDICT}\n' RPMS/poco-devel-1.9.3-*.x86_64.rpm 

Diff looks thus:

filterdiff printrpmtags RPMS*/*devel*
-DEPENDSDICT=1342177287
+DEPENDSDICT=1342177291

When building on a filesystem without variations in readdir order (e.g. disorderfs in order mode or ext4 with dir_index disabled), differences go away.

pmatilai commented 4 years ago

As it's not entirely clear from the report: is this reported as a regression in 4.15.x or just a new finding that was simply reported on the version where tested?

bmwiedemann commented 4 years ago

I was able to reproduce the problem with rpm-4.14.1 as well, so not a recent regression.

or maybe the .spec file does something strange? https://github.com/bmwiedemann/openSUSE/tree/master/packages/p/poco

bmwiedemann commented 3 years ago

Still a problem with rpm-4.16.0. I found at least 4 affected packages now and all of them use cmake and gcc-c++ for building

a hexdump diff looks thus:

@@ -859,13 +859,13 @@
 004920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 004930 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02
 004940 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00
-004950 50 00 00 01 50 00 00 04 50 00 00 03 50 00 00 02
-004960 50 00 00 00 50 00 00 01 50 00 00 04 50 00 00 03
-004970 50 00 00 02 50 00 00 00 50 00 00 01 50 00 00 04
-004980 50 00 00 03 50 00 00 02 50 00 00 00 50 00 00 01
-004990 50 00 00 04 50 00 00 03 50 00 00 02 50 00 00 00
-0049a0 50 00 00 01 50 00 00 04 50 00 00 03 50 00 00 02
-0049b0 50 00 00 00 50 00 00 08 52 00 00 00 50 00 00 09
+004950 50 00 00 02 50 00 00 00 50 00 00 03 50 00 00 04
+004960 50 00 00 01 50 00 00 02 50 00 00 00 50 00 00 03
+004970 50 00 00 04 50 00 00 01 50 00 00 02 50 00 00 00
+004980 50 00 00 03 50 00 00 04 50 00 00 01 50 00 00 02
+004990 50 00 00 00 50 00 00 03 50 00 00 04 50 00 00 01
+0049a0 50 00 00 02 50 00 00 00 50 00 00 03 50 00 00 04
+0049b0 50 00 00 01 50 00 00 08 52 00 00 00 50 00 00 09
 0049c0 52 00 00 00 50 00 00 0a 52 00 00 00 50 00 00 0b
 0049d0 52 00 00 00 50 00 00 07 52 00 00 08 52 00 00 13
bmwiedemann commented 2 years ago

still a problem with rpm-4.17.0