Source: libdigidoc
Version: 3.10.1.1208-1
Severity: wishlist
Tags: patch
User: [email protected]
Usertags: timestamps
X-Debbugs-Cc: [email protected]
Hi!
While working on the "reproducible builds" effort [1], we have noticed
that libdigidoc could not be built reproducibly.
It embeds the current build date into the manpage.
The attached patch adds support for SOURCE_DATE_EPOCH, which sets the
timestamp in the manpage to the date from the last changelog entry.
Regards,
Reiner
[1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/debian/patches/03-reproducible-build.patch b/debian/patches/03-reproducible-build.patch
new file mode 100644
index 0000000..2800959
--- /dev/null
+++ b/debian/patches/03-reproducible-build.patch
@@ -0,0 +1,17 @@
+Index: libdigidoc-3.10.1.1208/cmake/modules/VersionInfo.cmake
+===================================================================
+--- libdigidoc-3.10.1.1208.orig/cmake/modules/VersionInfo.cmake
++++ libdigidoc-3.10.1.1208/cmake/modules/VersionInfo.cmake
+@@ -10,7 +10,11 @@ if( WIN32 )
+ execute_process( COMMAND "cmd.exe" "/C date /T" OUTPUT_VARIABLE BUILD_DATE )
+ string( REGEX REPLACE ".*([0-3][0-9]).([0-1][0-9]).([0-9][0-9][0-9][0-9]).*" "\\1.\\2.\\3" BUILD_DATE ${BUILD_DATE} )
+ elseif( UNIX )
+- execute_process( COMMAND "date" "+%d.%m.%Y" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE )
++ if (DEFINED ENV{SOURCE_DATE_EPOCH})
++ execute_process( COMMAND "date" "-u" "-d" "@$ENV{SOURCE_DATE_EPOCH}" "+%d.%m.%Y" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE )
++ else()
++ execute_process( COMMAND "date" "+%d.%m.%Y" OUTPUT_VARIABLE BUILD_DATE OUTPUT_STRIP_TRAILING_WHITESPACE )
++ endif()
+ else()
+ message( SEND_ERROR "date not implemented")
+ set( BUILD_DATE "00.00.0000" )
diff --git a/debian/patches/series b/debian/patches/series
index b8d86dd..4c2d8d1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
01-manpage.patch
02-no-rpath.patch
+03-reproducible-build.patch