Welcome to the December 2025 from the Reproducible Builds project!
Our monthly reports outline what we’ve been up to over the past month, highlighting items of news from elsewhere in the increasingly-important area of software supply-chain security. As ever, if you are interested in contributing to the Reproducible Builds project, please see the Contribute page on our website.
- New orig-check service to validate Debian upstream tarballs
- Distribution work
- disorderfs updated to FUSE 3
- Mailing list updates
- Three new academic papers published
- Website updates
- Upstream patches
New orig-check service to validate Debian upstream tarballs
This month, Debian Developer Lucas Nussbaum announced the orig-check service, which attempts to automatically reproduce the generation upstream tarballs (ie. the “original source” component of a Debian source package), comparing that to the upstream tarball actually shipped with Debian.
As of the time of writing, it is possible for a Debian developer to upload a source archive that does not actually correspond to upstream’s version. Whilst this is not inherently malicious (it typically indicates some tooling/process issue), the very possibility that a maintainer’s version may differ potentially permits a maintainer to make (malicious) changes that would be misattributed to upstream.
This service therefore nicely complements the whatsrc.org service, which was reported in our reports for both April and August. The orig-check is dedicated to Lunar, who sadly passed away a year ago.
Distribution work
In Arch Linux this month, Robin Candau and Mark Hegreberg worked at making the Arch Linux WSL image bit-for-bit reproducible. Robin also shared some implementation details and future related work on our mailing list.
Continuing a series reported in these reports for March, April and July 2025 (etc.), Simon Josefsson has published another interesting article this month, itself a followup to a post Simon published in December 2024 regarding GNU Guix Container Images that are hosted on GitLab.
In Debian this month, Micha Lenk posted to the debian-backports-announce mailing list with the news that the Backports archive will now discard binaries generated and uploaded by maintainers: “The benefit is that all binary packages [will] get built by the Debian buildds before we distribute them within the archive.”
Felix Moessbauer of Siemens then filed a bug in the Debian bug tracker to signal their intention to package debsbom, a software bill of materials (SBOM) generator for distributions based on Debian. This generated a discussion on the bug inquiring about the output format as well as a question about how these SBOMs might be distributed.
Holger Levsen merged a number of significant changes written by Alper Nebi Yasak to the Debian Installer in order to improve its reproducibility. As noted in Alper’s merge request, “These are the reproducibility fixes I looked into before bookworm release, but was a bit afraid to send as it’s just before the release, because the things like the xorriso conversion changes the content of the files to try to make them reproducible.”
In addition, 76 reviews of Debian packages were added, 8 were updated and 27 were removed this month adding to our knowledge about identified issues. A new different_package_content_when_built_with_nocheck issue type was added by Holger Levsen. […]
Arnout Engelen posted to our mailing list reporting that they successfully reproduced the NixOS minimal installation ISO for the 25.11 release without relying on a pre-compiled package archive, with more details on their blog.
Lastly, Bernhard M. Wiedemann posted another openSUSE monthly update for his work there.
disorderfs updated to FUSE 3
disorderfs is our FUSE-based filesystem that deliberately introduces non-determinism into system calls to reliably flush out reproducibility issues.
This month, however, Roland Clobus upgraded disorderfs* from FUSE 2 to FUSE 3 after its package automatically got removed from Debian testing. Some tests in Debian currently require disorderfs to make the Debian live images reproducible, although disorderfs is not a Debian-specific tool.
Mailing list updates
On our mailing list this month:
- Jelle van der Waa followed up to a thread started late in November by Simon Mudd who was Looking for reproducible RPM building / rebuilding tooling. In their followup, Jelle mentions fedora-repro-build noting that it is designed to work with Koji, Fedora’s build service.
-
Luca Di Maio announced stampdalf, a “filesystem timestamp preservation” tool that wraps “arbitrary commands and ensures filesystem timestamp reproducibility”:
stampdalf allows you to run any command that modifies files in a directory tree, then automatically resets all timestamps back to their original values. Any new files created during command execution are set to [the UNIX epoch] or a custom timestamp via
SOURCE_DATE_EPOCH.The project’s GitHub page helpfully reveals that the project is “pronounced: stamp-dalf (stamp like time-stamp, dalf like Gandalf the wizard)” as “it’s a wizard of time and stamps”.)
-
Lastly, Reproducible Builds developer cen1 posted to our list announcing that “early/experimental/alpha” support for FreeBSD was added to rebuilderd. In their post, cen1 reports that the “initial builds are in progress and look quite decent”. cen1 also interestingly notes that “since the upstream is currently not technically reproducible I had to relax the bit-for-bit identical requirement of rebuilderd [—] I consider the pkg to be reproducible if the tar is content-identical (via diffoscope), ignoring timestamps and some of the manifest files.”.
Three new academic papers published
Yogya Gamage and Benoit Baudry of Université de Montréal, Canada together with Deepika Tiwari and Martin Monperrus of KTH Royal Institute of Technology, Sweden published a paper on The Design Space of Lockfiles Across Package Managers:
Most package managers also generate a lockfile, which records the exact set of resolved dependency versions. Lockfiles are used to reduce build times; to verify the integrity of resolved packages; and to support build reproducibility across environments and time. Despite these beneficial features, developers often struggle with their maintenance, usage, and interpretation. In this study, we unveil the major challenges related to lockfiles, such that future researchers and engineers can address them. […]
A PDF of their paper is available online.
Benoit Baudry also posted an announcement to our mailing list, which generated a number of replies.
Betul Gokkaya, Leonardo Aniello and Basel Halak of the University of Southampton then published a paper on the A taxonomy of attacks, mitigations and risk assessment strategies within the software supply chain:
While existing studies primarily focus on software supply chain attacks’ prevention and detection methods, there is a need for a broad overview of attacks and comprehensive risk assessment for software supply chain security. This study conducts a systematic literature review to fill this gap. By analyzing 96 papers published between 2015-2023, we identified 19 distinct SSC attacks, including 6 novel attacks highlighted in recent studies. Additionally, we developed 25 specific security controls and established a precisely mapped taxonomy that transparently links each control to one or more specific attacks. […]
A PDF of the paper is available online via the article’s canonical page.
Aman Sharma and Martin Monperrus of the KTH Royal Institute of Technology, Sweden along with Benoit Baudry of Université de Montréal, Canada published a paper this month on Causes and Canonicalization of Unreproducible Builds in Java. The abstract of the paper is as follows:
[Achieving] reproducibility at scale remains difficult, especially in Java, due to a range of non-deterministic factors and caveats in the build process. In this work, we focus on reproducibility in Java-based software, archetypal of enterprise applications. We introduce a conceptual framework for reproducible builds, we analyze a large dataset from Reproducible Central, and we develop a novel taxonomy of six root causes of unreproducibility. […]
A PDF of the paper is available online.
Website updates
Once again, there were a number of improvements made to our website this month including:
-
Chris Lamb updated a number of IzzyOnDroid links. […]
-
Luca Di Maio updated the System images page to document how to create reproducible XFS filesystems. […]
-
Robert Stupp made a number of useful changes, fixing and reorganising the Groovy / Kotlin pages […][…][…] as well adding a note about potential non-deterministic behaviour to the JVM page […].
Upstream patches
The Reproducible Builds project detects, dissects and attempts to fix as many currently-unreproducible packages as possible. We endeavour to send all of our patches upstream where appropriate. This month, we wrote a large number of such patches, including:
-
Chris Lamb:
- #1121794 filed against
golang-github-spf13-afero. - #1121795 filed against
golang-github-appleboy-easyssh-proxy. - #1121796 filed against
circlator. - #1121797 filed against
golang-github-jhoonb-archivex. - #1121798 filed against
golang-github-jonas-p-go-shp. - #1121800 filed against
golang-github-foxboron-go-uefi. - #1121801 filed against
in-toto-golang. - #1121802 filed against
lua-penlight. - #1121803 filed against
rust-fslock. - #1121804 filed against
fff. - #1121858 filed against
golang-github-notaryproject-notation-go. - #1121859 filed against
golang-github-google-go-tpm. - #1121860 filed against
golang-github-foxboron-go-tpm-keyfiles. - #1121862 filed against
goobook. - #1121865 filed against
fortran-regex. - #1122014 filed against
golang-github-yudai-gojsondiff. - #1122019 filed against
golang-github-tjfoc-gmsm. - #1122020 filed against
golang-github-otiai10-copy. - #1122021 filed against
golang-k8s-sigs-kustomize-cmd-config. - #1122022 filed against
golang-github-artyom-mtab. - #1122218 filed against
golang-k8s-sigs-release-utils. - #1122219 filed against
golang-github-theupdateframework-go-tuf. - #1122221 filed against
php-dompdf. - #1122222 filed against
golang-github-viant-toolbox. - #1122223 filed against
microbiomeutil. - #1122224 filed against
python-openstep-plist. - #1122225 filed against
rust-xdg. - #1122226 filed against
bibtexparser. - #1122227 filed against
plyara. - #1122228 filed against
golang-github-valyala-fasthttp. - #1122229 filed against
golang-github-issue9-identicon. - #1122230 filed against
golang-github-cue-lang-cue. - #1122231 filed against
sigstore-go. - #1122232 filed against
golang-github-apptainer-sif. - #1122376 filed against
golang-github-gin-gonic-gin. - #1122383 filed against
rust-rustpython-parser. - #1122384 filed against
golang-github-reviewdog-errorformat. - #1122385 filed against
geoalchemy2. - #1122386 filed against
golang-github-shenwei356-breader. - #1122388 filed against
golang-github-ulikunitz-xz. - #1122389 filed against
golang-mvdan-editorconfig. - #1122390 filed against
golang-github-digitorus-timestamp. - #1122392 filed against
golang-forgejo-forgejo-levelqueue. - #1122816 filed against
golang-github-kr-binarydist. - #1122817 filed against
golang-github-kshedden-dstream. - #1122818 filed against
golang-github-google-go-pkcs11. - #1122819 filed against
golang-github-akavel-rsrc. - #1122820 filed against
golang-github-go-macaron-toolbox. - #1122821 filed against
golang-goptlib. - #1122822 filed against
golang-github-dreamitgetit-statuscake. - #1122824 filed against
golang-github-google-go-attestation. - #1122999 filed against
python-pyshortcuts. - #1123002 filed against
graudit. - #1123003 filed against
golang-github-roaringbitmap-roaring. - #1123004 filed against
golang-github-linkedin-goavro. - #1123005 filed against
golang-github-cznic-ql. - #1123006 filed against
golang-github-muesli-termenv. - #1123007 filed against
golang-github-jung-kurt-gofpdf. - #1123008 filed against
tdiary. - #1123603 filed against
authselect. - #1123663 filed against
node-convert-source-map. - #1123664 filed against
zope.deferredimport. - #1124271 filed against
golang-k8s-apimachinery.
- #1121794 filed against
-
Arnout Engelen:
kirigami(qml)libplasma(qml)powerdevil(qml)
Finally, if you are interested in contributing to the Reproducible Builds project, please visit our Contribute page on our website. However, you can get in touch with us via:
-
IRC:
#reproducible-buildsonirc.oftc.net. -
Mastodon: @reproducible_builds@fosstodon.org
-
Mailing list:
rb-general@lists.reproducible-builds.org










