Bug#1140567: libecoli: please make the build reproducible
Chris Lamb
lamby at debian.org
Mon Jun 22 21:08:03 BST 2026
Source: libecoli
Version: 0.11.6-1
Severity: wishlist
Tags: patch
User: reproducible-builds at lists.alioth.debian.org
Usertags: timestamps
X-Debbugs-Cc: reproducible-bugs at lists.alioth.debian.org
Hi,
Whilst working on the Reproducible Builds effort [0], we noticed that
libecoli could not be built reproducibly.
This is because the generated manual pages contain the current time.
I've attached a patch that will use SOURCE_DATE_EPOCH instead, falling
back to the current time if this environment variable is not available.
This patch is suitable for forwarding upstream.
(I also included a patch that will ensure the package is reproducible
regardless of the build directory, although this is strictly optional
as we are not doing build dir variation testing at the moment.)
[0] https://reproducible-builds.org/
Regards,
--
,''`.
: :' : Chris Lamb
`. `'` lamby at debian.org / chris-lamb.co.uk
`-
-------------- next part --------------
--- a/debian/patches/reproducible-build.patch 1969-12-31 16:00:00.000000000 -0800
--- b/debian/patches/reproducible-build.patch 2026-06-22 12:50:31.681359678 -0700
@@ -0,0 +1,15 @@
+Description: Make the build reproducible
+Author: Chris Lamb <lamby at debian.org>
+Last-Update: 2026-06-22
+
+--- libecoli-0.11.6.orig/doc/Doxyfile.in
++++ libecoli-0.11.6/doc/Doxyfile.in
+@@ -26,7 +26,7 @@ GENERATE_DEPRECATEDLIST = YES
+ INTERNAL_DOCS = NO
+ VERBATIM_HEADERS = NO
+ ALPHABETICAL_INDEX = NO
+-FULL_PATH_NAMES = YES
++FULL_PATH_NAMES = NO
+ STRIP_FROM_PATH = @TOPDIR@/include
+ STRIP_FROM_INC_PATH = @TOPDIR@/include
+ WARN_AS_ERROR = NO
--- a/debian/patches/reproducible-manpages.patch 1969-12-31 16:00:00.000000000 -0800
--- b/debian/patches/reproducible-manpages.patch 2026-06-22 13:03:02.331508693 -0700
@@ -0,0 +1,25 @@
+Description: Make the build reproducible
+Author: Chris Lamb <lamby at debian.org>
+Last-Update: 2026-06-22
+
+--- libecoli-0.11.6.orig/doc/gen-man-pages.sh
++++ libecoli-0.11.6/doc/gen-man-pages.sh
+@@ -12,6 +12,10 @@ include_dir="$2"
+ output_dir="$3"
+ stamp="$4"
+
++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}"
++date_fmt="+%Y-%m-%d"
++build_date=$(date -u -d "@$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "$date_fmt" 2>/dev/null || date -u "$date_fmt")
++
+ if [ -z "$xml_dir" ] || [ -z "$include_dir" ] || \
+ [ -z "$output_dir" ] || [ -z "$stamp" ]; then
+ echo "usage: $0 <xml-dir> <include-dir> <output-dir> <stamp-file>" >&2
+@@ -33,6 +37,7 @@ for xml in $groups; do
+ -H "Libecoli Programmer's Manual" \
+ -C "Olivier Matz, Robin Jarry" \
+ -S "2010" \
++ -D "$build_date" \
+ -d "$xml_dir" \
+ -o "$output_dir" \
+ "$xml" || [ "$?" -gt 128 ]
--- a/debian/patches/series 1969-12-31 16:00:00.000000000 -0800
--- b/debian/patches/series 2026-06-22 13:03:01.500017021 -0700
@@ -0,0 +1,2 @@
+reproducible-build.patch
+reproducible-manpages.patch
--- a/doc/Doxyfile.in 2026-06-22 12:40:03.723815462 -0700
--- b/doc/Doxyfile.in 2026-06-22 13:02:52.000000000 -0700
@@ -26,7 +26,7 @@
INTERNAL_DOCS = NO
VERBATIM_HEADERS = NO
ALPHABETICAL_INDEX = NO
-FULL_PATH_NAMES = YES
+FULL_PATH_NAMES = NO
STRIP_FROM_PATH = @TOPDIR@/include
STRIP_FROM_INC_PATH = @TOPDIR@/include
WARN_AS_ERROR = NO
More information about the Reproducible-bugs
mailing list