Source: python-pybedtools
Version: 0.8.0-5
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: filesystem
X-Debbugs-Cc: reproducible-b...@lists.alioth.debian.org

Hi,

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

This is because it includes output inherited from non-deterministic
filesystem ordering:

/usr/lib/python3/dist-packages/pybedtools/cbedtools.cpp:

│ │ │ │ @@ -16,17 +16,17 @@
│ │ │ │              "z"
│ │ │ │          ],
│ │ │ │          "name": "pybedtools.cbedtools",
│ │ │ │          "sources": [
│ │ │ │              "pybedtools/cbedtools.pyx",
│ │ │ │ -            "pybedtools/include/fileType.cpp",
│ │ │ │              "pybedtools/include/bedFile.cpp",
│ │ │ │ -            "pybedtools/include/gzstream.cpp"
│ │ │ │ +            "pybedtools/include/gzstream.cpp",
│ │ │ │ +            "pybedtools/include/fileType.cpp"
│ │ │ │          ]
│ │ │ │      },
│ │ │ │      "module_name": "pybedtools.cbedtools"
│ │ │ │  }

Patch attached that sorts these entries in setup.py.

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


Regards,

--
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      la...@debian.org / chris-lamb.co.uk
       `-
--- a/debian/patches/reproducible-builds.patch  1970-01-01 01:00:00.000000000 
+0100
--- b/debian/patches/reproducible-builds.patch  2021-09-28 16:37:45.666272543 
+0100
@@ -0,0 +1,24 @@
+Description: Make the build reproducible
+Author: Chris Lamb <la...@debian.org>
+Last-Update: 2021-09-28
+
+--- python-pybedtools-0.8.0.orig/setup.py
++++ python-pybedtools-0.8.0/setup.py
+@@ -199,7 +199,7 @@ extensions = [
+         depends=glob.glob('pybedtools/include/*h'),
+         libraries=['stdc++', 'z'],
+         include_dirs=['pybedtools/include/'],
+-        sources=['pybedtools/cbedtools' + EXT] + 
glob.glob('pybedtools/include/*.cpp'),
++        sources=['pybedtools/cbedtools' + EXT] + 
sorted(glob.glob('pybedtools/include/*.cpp')),
+         language='c++'),
+ 
+     Extension(
+@@ -207,7 +207,7 @@ extensions = [
+         depends=glob.glob('pybedtools/include/*h'),
+         libraries=['stdc++', 'z'],
+         include_dirs=['pybedtools/include/'],
+-        sources=['pybedtools/featurefuncs' + EXT] + 
glob.glob('pybedtools/include/*.cpp'),
++        sources=['pybedtools/featurefuncs' + EXT] + 
sorted(glob.glob('pybedtools/include/*.cpp')),
+         language='c++'),
+ ]
+ 
--- a/debian/patches/series     2021-09-28 16:33:12.425681025 +0100
--- b/debian/patches/series     2021-09-28 16:37:44.886270948 +0100
@@ -8,3 +8,4 @@
 remove_badges_from_documentation.patch
 parseDebianVersions.patch
 add_missing_shebang.patch
+reproducible-builds.patch

Reply via email to