Source: python-multipletau
Version: 0.3.3+ds-5
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org

Hi,

Whilst working on the Reproducible Builds effort [0], we noticed that
python-multipletau could not be built reproducibly.

This is because the code to work out its "own" version number uses
the current build date. (It does attempt to use the creation time of
the source files, but I think pybuild is essentially resetting this
to the current time by copying it to its temporary build directories.)

Patch attached that uses SOURCE_DATE_EPOCH if available.

 [0] https://reproducible-builds.org/


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      la...@debian.org / chris-lamb.co.uk
       `-
--- a/debian/patches/reproducible-build.patch   1970-01-01 01:00:00.000000000 
+0100
--- b/debian/patches/reproducible-build.patch   2023-12-14 12:33:24.343253202 
+0000
@@ -0,0 +1,23 @@
+Description: Make the build reproducible
+Author: Chris Lamb <la...@debian.org>
+Last-Update: 2023-12-14
+
+--- python-multipletau-0.3.3+ds.orig/multipletau/_version.py
++++ python-multipletau-0.3.3+ds/multipletau/_version.py
+@@ -121,7 +121,15 @@ if True:  # pragma: no cover
+         # Get the version from the previously generated `_version_save.py`
+         longversion = load_version(versionfile)
+ 
+-    # 3. last resort: date
++    # 3. SOURCE_DATE_EPOCH
++    if longversion == "":
++        longversion = time.strftime(
++            "%Y.%m.%d-%H-%M-%S",
++            time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
++        )
++        print("Using SOURCE_DATE_EPOCH time as version: 
{}".format(longversion))
++
++    # 4. last resort: date
+     if longversion == "":
+         print("Could not determine version. Reason:")
+         print(traceback.format_exc())
--- a/debian/patches/series     2023-12-14 10:22:18.989780489 +0000
--- b/debian/patches/series     2023-12-14 12:33:23.379240195 +0000
@@ -1,3 +1,4 @@
 examples_location.patch
 packaged-mathjax.patch
 python3.12.patch
+reproducible-build.patch

Reply via email to