Bug#1130622: dh-fortran: please make the build reproducible
Chris Lamb
lamby at debian.org
Fri Mar 13 17:41:01 GMT 2026
Source: dh-fortran
Version: 0.68
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: randomness toolchain
X-Debbugs-Cc: reproducible-bugs at lists.alioth.debian.org
Hi,
Whilst working on the Reproducible Builds effort [0], we noticed that
dh-fortran was generated unreproducible output. For example, in the
fortran-assert package, the Depends field of the package (populated
via the ${fortran:Depends} substvar) was nondetermistic:
-Depends: gfortran-15 | gfortran-16 | gfortran-mod-16, flang-new-20 | flang-new-19 | flang-new-17 | flang-new-18 | flang-21 | flang-mod-1, libfortran-assert0 (= 3.1.0-5)
+Depends: gfortran-15 | gfortran-16 | gfortran-mod-16, flang-new-19 | flang-21 | flang-new-17 | flang-new-20 | flang-new-18 | flang-mod-1, libfortran-assert0 (= 3.1.0-5)
This is because dh-fortran iterated over a Python set() and similar
when generating this line.
Patch attached.
[0] https://reproducible-builds.org/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby at debian.org / chris-lamb.co.uk
`-
-------------- next part --------------
diff --git dhfortran/module.py dhfortran/module.py
index ee4b654..ebbbe42 100644
--- dhfortran/module.py
+++ dhfortran/module.py
@@ -239,12 +239,12 @@ def dh_fortran_mod(files, *args, **kwargs):
depends = []
for package in d.packages:
if package in d.modversions:
- for m in d.modversions[package]:
+ for m in sorted(d.modversions[package]):
comps = set()
for c in cmplrs.compilers:
if cmplrs.compilers[c]["mod"] == m:
comps.add(c)
- depends.append("|".join(comps) + " | " + m)
+ depends.append("|".join(sorted(comps)) + " | " + m)
d.addsubstvar(package, "fortran:Depends", ",".join(depends))
if "config_file" in d.packages[package] and package in d.modversions:
# config file defined, so create cleanup script
More information about the Reproducible-bugs
mailing list