Hi, This month, I created several bugreports and patches, while working on the NLnet-funded project about creating a 100% bit-reproducible OS (RBOS) [1]. I also worked towards the bot that checks reproducibility of SRs to Factory. The prototype of the OBS-project-setup is in https://build.opensuse.org/project/show/home:bmwiedemann:reproducible:rebuild it already shows identical results with for r in j1 future1y openSUSE_Factory ; do osc api "/build/home:bmwiedemann:reproducible:rebuild/$r/x86_64/_repository?view=binaryversions" | grep libzzip ; done And different results with grep theunreproduciblepackage\\.rpm Additionally my reproducible-faketools got an overhaul to get rid of package-conflicts to make them even more versatile and useful, especially within OBS. They are now in Factory to allow easy testing in more places. Finally, I am happy to report that a bit-reproducible libreoffice is already in the devel-project. The Plan for RBOS: to reach the goal of a distribution that consists of 100% bit-reproducible packages, we need to address multiple issues. 1. newly unreproducible packages get submitted regularly and we need to test + notify these to slow down the introduction of new issues. A PoC works in https://build.opensuse.org/project/show/home:bmwiedemann:reproducible:rebuild by using a constant Release and distribution value, omitting disturl and adding in some variations via reproducible-faketools in the prjconf. TODO: This needs to be integrated in the workflows for staging + review of submissions to openSUSE:Factory. 2. Some (undroppable) existing packages have variations - several fixes were already submitted and more are to come. 3. Some packages built in OBS are modified by pesign to make them work with secure boot, e.g. grub2 and systemd - TODO - disable obs-pesign-integration? Build these outside of OBS as reference? Use a patched obs-pesign-integration version? 4. https://build.opensuse.org/project/show/home:bmwiedemann:reproducible:distribution:ring0 is already setup and ring1 will come soon with more packages required to build a MinimalVM image or maybe even a DVD. The only open issue in ring0 is with pam:full pdf timestamps from xmlgraphics-fop. [1] https://nlnet.nl/project/Reproducible-openSUSE/ Here are the autogenerated bits: last month's status: https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/CDIFFRNRSCI5BBXW7QSQSZVKE45YFTTH/ Last months' reproducible builds project updates (including my work): https://reproducible-builds.org/reports/2024-06/ I uploaded https://rb.zq1.de/compare.factory-20240731/ today https://rb.zq1.de/spec/glossar.txt explains the meaning of below values: total-packages: 15666 (+117) build-tried: 15602 (+111) build-failed: 13 (-9) build-n-a: 186 (-7) build-succeeded: 15403 (+127) build-official-failed+na: 25 (-14) build-compare-failed: 154 (+0) build-compare-succeeded: 15249 (+127) verify-failed: 249 (+15) verified-semi-reproducible: 14944 (+89) verified-bit-identical: 13591 (+46) bit-by-bit-identical: 14779 (+157) not-bit-by-bit-identical: 625 (-22) not-bit-by-bit-identicalcheck: 624 (-30) https://rb.zq1.de/compare.factory-20240731/graph.png shows the change over time https://rb.zq1.de/compare.factory-20240731/unreproduciblerings.txt lists very unreproducible core packages (bootstrap+DVD) Of the badly unreproducible packages, 3 were in ring0 31 were in ring1 That makes it 34/4043 => 0.84 % which is below the overall average of 154/15403 => 1.00 % 625/15403 => 4.06 % of packages are not perfectly reproducible package notes: ==> ./TeXmacs/.rb.notes <== => https://github.com/texmacs/texmacs/pull/77 date+time from `date` --- old /usr/libexec/TeXmacs/bin/texmacs.bin (objdump) ==> ./apache-arrow/.rb.notes <== OSC_BUILD_ROOT=/var/tmp/build-root.$slot osc build --noservice --vm-type=kvm --clean standard ==> ./armagetron/.rb.notes <== => SR 1188202 #=> https://gitlab.com/armagetronad/armagetronad/-/merge_requests/162 date ==> ./bcc/.rb.notes <== TODO - redo in luajit src/lj_asm_x86.h asm_href ; also for neovim = https://github.com/moonjit/moonjit/issues/110 report CPU-detection in moonjit ==> ./certgen/.rb.notes <== Go buildinf: - go1.23rc1 ==> ./clamav/.rb.notes <== => SR 1190176 = https://github.com/Cisco-Talos/clamav/issues/1300 FTBFS-2024-07-28 found range good=1722124782 bad=1722126706 ==> ./cloudflared/.rb.notes <== => SR 1188166 => https://github.com/cloudflare/cloudflared/pull/1289 date from `date` --- old /usr/bin/cloudflared (objdump) ==> ./dpdk/.rb.notes <== => SR 1185443 Sphinx doctrees regression ==> ./emacs/.rb.notes <== .pdmp from ["./temacs" "--__aslr-disabled" "-batch" "--no-build-details" "-l" "loadup" "--temacs=pdump" "--bin-dest" "/usr/bin/" "--eln-dest" "/usr/lib64/emacs/29.4/"] ==> ./fonttosfnt/.rb.notes <== => SR 1190278 => https://gitlab.freedesktop.org/xorg/app/fonttosfnt/-/merge_requests/22 toolchain, date ==> ./fractal/.rb.notes <== rust/llvm symbol order variation ==> ./gegl/.rb.notes <== => SR 1188550 = https://gitlab.gnome.org/GNOME/gegl/-/issues/337 parallelism, memory +++ new//usr/share/gir-1.0/Gegl-0.4.gir 2023-06-26 00:00:00.000000000 +0000 ==> ./gettext-runtime/.rb.notes <== => SR 1188059 1187694 jar mtime in /usr/lib64/gettext/gettext.jar = https://lists.gnu.org/archive/html/bug-gettext/2024-07/msg00020.html ==> ./gnutls/.rb.notes <== date in man - probably because patch updates mtime # filterdiff zcat R*/usr/share/man/man1/gnutls-cli.1.gz ==> ./gromacs/.rb.notes <== FTBFS-j1 failed - needs 4+ cores succeeds with parallelism=6 parallelism2=5 multibuildrbkall ==> ./helm/.rb.notes <== FTBFS-2028-04-05 2032-08-21 SSL ==> ./java-jwt/.rb.notes <== java/javadoc filesys (low-entropy) + strip-nd + other jar from ["/usr/lib64/jvm/java-21-openjdk-21/bin/java", "-classpath", "/usr/share/java/xmvn/xmvn-install.jar:/usr/share/java/xmvn/xmvn-api.jar:/usr/share/java/xmvn/xmvn-core.jar:/usr/share/java/beust-jcommander.jar:/usr/share/java/slf4j/api.jar:/usr/share/java/slf4j/simple.jar:/usr/share/java/objectweb-asm/asm.jar:/usr/share/java/commons-compress.jar:/usr/share/java/commons-io.jar", "org.fedoraproject.xmvn.tools.install.cli.InstallerCli", "-R", ".xmvn-reactor", "-n", "java-jwt", "-d", "/home/abuild/rpmbuild/BUILDROOT/java-jwt-3.8.3-0.x86_64"] ==> ./jaxen/.rb.notes <== post-processing modifies mtime in .jar /usr/bin/python3 /usr/share/java-utils/maven_depmap.py --pom-base /home/abuild/rpmbuild/BUILDROOT/jaxen-2.0.0-1.1.x86_64/usr/share/maven-poms --jar-base /home/abuild/rpmbuild/BUILDROOT/jaxen-2.0.0-1.1.x86_64/usr/share/java /home/abuild/rpmbuild/BUILDROOT/jaxen-2.0.0-1.1.x86_64/usr/share/maven-metadata/jaxen.xml /home/abuild/rpmbuild/BUILDROOT/jaxen-2.0.0-1.1.x86_64/usr/share/maven-poms/jaxen.pom /home/abuild/rpmbuild/BUILDROOT/jaxen-2.0.0-1.1.x86_64/usr/share/java/jaxen.jar ==> ./jmock/.rb.notes <== TODO: .jar javadoc jar from ["/usr/lib64/jvm/java-21-openjdk-21/bin/java", "-Dant.tstamp.now=1708473600", "-classpath", "/usr/share/java/ant.jar:/usr/share/java/ant-launcher.jar:/usr/share/java/ant/ant-junit.jar:/usr/share/java/junit.jar:/home/abuild/rpmbuild/BUILD/jmock-1.2.0/build/classes:/usr/share/java/cglib/cglib.jar:/usr/share/java/cglib/cglib-sample.jar", "-Dant.home=/usr/share/ant", "-Dant.library.dir=/usr/share/ant/lib", "org.apache.tools.ant.launch.Launcher", "-cp", "", "-Dant.build.javac.source=1.8", "-Dant.build.javac.target=1.8", "-Dbuild.sysclasspath=only", "package"] ==> ./kernel-source/.rb.notes <== doc variation from Sphinx -j auto ==> ./kf6-kirigami/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1228131 parallelism via /home/abuild/rpmbuild/BUILD/kirigami-6.4.0/build/src/dialogs/.rcc/qmlcache/KirigamiDialogs_PromptDialog_qml.cpp ==> ./kf6-qqc2-desktop-style/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1228131 qt6-declarative toolchain issue? parallelism? +++ /var/tmp/build-root.2b/.mount/home/abuild/rpmbuild/BUILD/qqc2-desktop-style-6.0.0/build/.rcc/qmlcache/org_kde_desktop_private_org.kde.desktop/private/CheckIndicator_qml.cpp 2040-04-14 03:00:38.066666668 +0000 ==> ./kubernetes1.26/.rb.notes <== => SR 1190449 random go tmp build path ==> ./lapackpp/.rb.notes <== => https://github.com/icl-utk-edu/lapackpp/pull/68 hostname in /usr/include/lapack/defines.h from cmake + defines.h.in ==> ./latex2html/.rb.notes <== => SR 1188512 nochecks cause variation => SR 1150775 drop latex log ==> ./ldns/.rb.notes <== [ 45s] ./libtool --tag=CC --quiet --mode=link gcc -DOPENSSL_API_COMPAT=10100 -fno-strict-aliasing -Wunused-function -Wstrict-prototypes -Wwrite-strings -W -Wall -O2 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -fno-strict-aliasing -flto=auto examples/ldns-nsec3-hash.lo compat/b64_pton.lo compat/b64_ntop.lo libldns.la -lssl -lcrypto -o examples/ldns-nsec3-hash^M ==> ./libdb-4_8/.rb.notes <== => SR 1190247 1187675 /usr/share/java/db-4.8.30.jar mtimes from by pid=171773 dir=/home/abuild/rpmbuild/BUILD/db-4.8.30/build_nptl/classes exec="/usr/bin/jar", ["jar", "cfm", "../db.jar", "../../dist/../java/jarManifestEntries", "./com/sleepycat"] - started ==> ./libguestfs/.rb.notes <== minor /usr/share/doc/packages/rubygem-libguestfs/api/created.rid ==> ./librcc/.rb.notes <== => SR 1188204 #=> https://github.com/RusXMMS/librcc/pull/5 date --- old//usr/share/doc/packages/librcc-devel/examples/Makefile 2022-12-09 00:00:00.000000000 +0000 ==> ./libreoffice/.rb.notes <== => SR 1189287 = https://gerrit.libreoffice.org/q/topic:reprobuild clucene, .jar mtime, .zip mtime ==> ./libzypp/.rb.notes <== #= https://github.com/openSUSE/libzypp/issues/559 FTBFS-2038 stuck, bug osc build --noservice --vm-type=kvm --build-opt=--vm-custom-opt="-rtc base=2040-01-25T00:00:00" standard ==> ./llvm17/.rb.notes <== = https://github.com/llvm/llvm-project/issues/72206 Marvin investigates. Partially from ASLR - uninitialized memory? ==> ./maliit-keyboard/.rb.notes <== => SR 1185254 maliit-keyboard nocheck ==> ./mozilla-nss/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1081723 => https://bugzilla.mozilla.org/show_bug.cgi?id=1902078 = https://bugzilla.mozilla.org/show_bug.cgi?id=1813401 FTBFS-2023 ==> ./nautilus/.rb.notes <== => https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/1555 date from data/org.gnome.Nautilus.metainfo.xml.in.in: ==> ./neovim/.rb.notes <== = https://github.com/neovim/neovim/issues/26387 - maybe toolchain https://github.com/LuaJIT/LuaJIT/issues/1008 ==> ./newtonsoft-json/.rb.notes <== mono, random 20 byte ==> ./nodejs22/.rb.notes <== FTBFS-SSL: test/fixtures/x509-escaping/*pem expires 2031-12-18 ==> ./openblas/.rb.notes <== => SR 1190320 = https://bugzilla.opensuse.org/show_bug.cgi?id=1228177 CPU = https://bugzilla.opensuse.org/show_bug.cgi?id=1181083 FTBFS-j1 ==> ./openssl-1_0_0/.rb.notes <== verification issue ==> ./openssl-3/.rb.notes <== => SR 1187438 = https://bugzilla.opensuse.org/show_bug.cgi?id=1223336 random debugsource FTBFS-2035-07-02 ==> ./pop-launcher/.rb.notes <== parallelism ==> ./python-Django4/.rb.notes <== FTBFS-2038 ==> ./python-Sphinx/.rb.notes <== => https://github.com/sphinx-doc/sphinx/pull/12606 gzip mtime 0 0 0 0 0 1 ==> ./python-cfn-lint/.rb.notes <== FTBFS-2024-10-13 OSC_BUILD_ROOT=/var/tmp/build-root.$slot time osc build --noservice --vm-type=kvm --build-opt=--vm-custom-opt="-rtc base=2024-10-14T00:00:00" standard ==> ./python-contourpy/.rb.notes <== random: toolchain meson-py? ==> ./python-libcst/.rb.notes <== unknown rust/llvm /usr/lib64/python3.11/site-packages/libcst/native.cpython-311-x86_64-linux-gnu.so ==> ./python-paho-mqtt/.rb.notes <== FTBFS-j1 + SSL expired =https://github.com/eclipse/paho.mqtt.python/pull/854 found range 1783313692 -> 1783315617 ==> ./python-paramiko/.rb.notes <== FTBFS-CPU+j1 ==> ./python-pygraphviz/.rb.notes <== captures execution time ==> ./python-pysnmp/.rb.notes <== => https://github.com/lextudio/pysnmp/pull/35 FTBFS-2038 ==> ./python-pytest-mpi/.rb.notes <== FTBFS-j1 + CPU osc build --clean --vm-type=kvm -j1 --noservice --clean standard ==> ./python-python-datamatrix/.rb.notes <== FTBFS-j1 OSC_BUILD_ROOT=/var/tmp/build-root.$slot osc build --vm-type=kvm --clean -j1 --noservice standard ==> ./python-ruff/.rb.notes <== ASLR+checks/PID?, low-entropy? causes binary diff, size diff ==> ./python-spyder-notebook/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1228441 report FTBFS OSC_BUILD_ROOT=/var/tmp/build-root.$slot osc build --noservice --vm-type=kvm --clean -j4 standard ==> ./python310/.rb.notes <== PGO + other(:doc) ==> ./python311/.rb.notes <== => https://github.com/sphinx-doc/sphinxcontrib-devhelp/pull/13 gzip mtime => https://github.com/python/cpython/pull/121872 python311:doc date, partial ==> ./python313/.rb.notes <== = https://github.com/python/cpython/issues/122433 FTBFS-j1 OSC_BUILD_ROOT=/var/tmp/build-root.$slot time osc build --noservice --vm-type=kvm --clean standard ==> ./rabbitmq-server/.rb.notes <== FTBFS https://build.opensuse.org/package/show/network:messaging:amqp/rabbitmq-server ==> ./rmt-server/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1227542 date -/usr/lib64/rmt/vendor/bundle/ruby/3.3.0/gems/base32-0.3.4/lib/base32 0 (none) 40777 root root 0 4294967295 ==> ./samba/.rb.notes <== #= https://bugzilla.opensuse.org/show_bug.cgi?id=1225754 parallelism+ASLR --- /home/abuild/rpmbuild/BUILD/samba-4.20.1+git.335.0a46cdafe2/bin/default/source3/librpc/gen_ndr/py_smbXsrv.c 2024-05-31 03:19:30.679999998 +0000 ==> ./systemd/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1228091 pesign = https://bugzilla.opensuse.org/show_bug.cgi?id=1226200 FTBFS-2038 ==> ./tigervnc/.rb.notes <== minor jar mtimes ; from jar call #= https://bugzilla.opensuse.org/show_bug.cgi?id=1208478 RSA key ==> ./turbo/.rb.notes <== minor issue in /usr/lib64/libturbo-core.so ; ASLR Binary files /var/tmp/build-root.20/.mount/home/abuild/rpmbuild/BUILD/turbo-1715766145.697580e/build/CMakeFiles/turbo-core.dir/Unity/unity_0_cxx.cxx.o and /var/tmp/build-root.20b/.mount/home/abuild/rpmbuild/BUILD/turbo-1715766145.697580e/build/CMakeFiles/turbo-core.dir/Unity/unity_0_cxx.cxx.o differ ==> ./warzone2100/.rb.notes <== = https://github.com/BinomialLLC/basis_universal/issues/374 report parallelism = https://github.com/Warzone2100/warzone2100/issues/2991 report parallelism-dependent output ==> ./whatsie/.rb.notes <== date needs https://codereview.qt-project.org/gitweb?p=qt%2Fqtbase.git;a=commit;h=297fe90329782d35dc4f155185ded045551ef52f backported into libqt5-qtbase ==> ./wireplumber/.rb.notes <== parallelism: searchindex.js varies, toolchain python-Sphinx from ["/usr/bin/sphinx-build", "-q", "-E", "-j", "auto", "-d", "docs/html.p", "-c", "docs", "../docs/rst", "docs/html"] ==> ./xmobar/.rb.notes <== = https://bugzilla.opensuse.org/show_bug.cgi?id=1228175 ==> ./xorg-x11-fonts/.rb.notes <== => https://gitlab.freedesktop.org/xorg/app/fonttosfnt/-/merge_requests/22 toolchain fonttosfnt, -M=converted, ASLR, timestamp? = https://bugzilla.opensuse.org/show_bug.cgi?id=1173396 ASLR : x*3 uninit bytes 'checksum adjustment' ==> ./zola/.rb.notes <== unknown rust/llvm