Source: simgrid
Version: 3.11.1-9
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: timestamps

Hi,

While working on the “reproducible builds” effort [1], we have noticed
that simgrid could not be built reproducibly.

The attached patch changes the value of HTML_TIMESTAMP in upstream's
doxyfile from YES to NO and it also removes the timestamp from the gzip
header of the tarball by setting the environment variable gzip=-9n. Once
applied simgrid can be built reproducibly in our current experimental
framework.

Patching upstream doxyfile is necessary in this case because of the
following reasons:

1. Even though the doxygen upstream changed the default value of
HTML_TIMESTAMP from YES to NO this does not affect this package because
the value of HTML_TIMESTAMP is explicitly set to YES.

2. Upstream's doxyfiles cannot reliably be modified to change the value
of HTML_TIMESTAMP during the build process because dh_doxygen is only
run after the build already completed and even adding a new dh command
cannot solve the problem because there exists no sane and reliable
solution to detect the file which will be used as the configuration file
for doxygen (it is not always called doxyfile).

3. In case of this source package a patch against upstream is necessary
in contrast to a patch against Debian rules because this source package
does not call doxygen in debian/rules.

Please also consider forwarding this patch upstream.

Cheers!
akira

 [1]: https://wiki.debian.org/ReproducibleBuilds
diff -Nru simgrid-3.11.1/debian/changelog simgrid-3.11.1/debian/changelog
--- simgrid-3.11.1/debian/changelog	2014-12-13 22:16:07.000000000 +0100
+++ simgrid-3.11.1/debian/changelog	2015-06-23 17:35:13.000000000 +0200
@@ -1,3 +1,10 @@
+simgrid (3.11.1-9.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Set HTML_TIMESTAMP to NO and gzip -n to make package reproducible
+
+ -- akira <marival...@gmail.com>  Tue, 23 Jun 2015 17:34:42 +0200
+
 simgrid (3.11.1-9) unstable; urgency=medium
 
   * add some dependencies to really fix #755047:
diff -Nru simgrid-3.11.1/debian/patches/series simgrid-3.11.1/debian/patches/series
--- simgrid-3.11.1/debian/patches/series	2014-12-13 22:16:07.000000000 +0100
+++ simgrid-3.11.1/debian/patches/series	2015-06-23 17:34:12.000000000 +0200
@@ -5,3 +5,4 @@
 no-static.diff
 lto-gcc-4.9.diff
 fix-bashism.diff
+Set-HTML_TIMESTAMP-to-NO-and-env-gzip--n
diff -Nru simgrid-3.11.1/debian/patches/Set-HTML_TIMESTAMP-to-NO-and-env-gzip--n simgrid-3.11.1/debian/patches/Set-HTML_TIMESTAMP-to-NO-and-env-gzip--n
--- simgrid-3.11.1/debian/patches/Set-HTML_TIMESTAMP-to-NO-and-env-gzip--n	1970-01-01 01:00:00.000000000 +0100
+++ simgrid-3.11.1/debian/patches/Set-HTML_TIMESTAMP-to-NO-and-env-gzip--n	2015-06-23 18:01:05.000000000 +0200
@@ -0,0 +1,24 @@
+Description: Set HTML_TIMESTAMP to NO and gzip -n to make package reproducible
+
+--- simgrid-3.11.1.orig/buildtools/Cmake/GenerateDoc.cmake
++++ simgrid-3.11.1/buildtools/Cmake/GenerateDoc.cmake
+@@ -48,7 +48,7 @@ if(DOXYGEN_FOUND)
+   ADD_CUSTOM_COMMAND(TARGET simgrid_documentation
+     COMMAND ${FIG2DEV_PATH}/fig2dev -Lmap ${CMAKE_HOME_DIRECTORY}/doc/shared/fig/simgrid_modules.fig | perl -pe 's/imagemap/simgrid_modules/g'| perl -pe 's/<IMG/<IMG style=border:0px/g' | ${CMAKE_HOME_DIRECTORY}/tools/doxygen/fig2dev_postprocessor.pl > ${CMAKE_HOME_DIRECTORY}/doc/simgrid_modules.map
+     COMMAND pwd
+-    COMMAND ${CMAKE_COMMAND} -E tar czf html/msg-tuto-src.tgz msg-tuto-src/
++    COMMAND ${CMAKE_COMMAND} -E env GZIP=-9n tar czf html/msg-tuto-src.tgz msg-tuto-src/
+     COMMAND ${CMAKE_COMMAND} -E echo "XX Run doxygen"
+     COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile
+     COMMAND ${CMAKE_COMMAND} -E echo "XX Generate the index files"
+--- simgrid-3.11.1.orig/doc/Doxyfile.in
++++ simgrid-3.11.1/doc/Doxyfile.in
+@@ -1007,7 +1007,7 @@ HTML_COLORSTYLE_GAMMA  = 80
+ # page will contain the date and time when the page was generated. Setting
+ # this to NO can help when comparing the output of multiple runs.
+ 
+-HTML_TIMESTAMP         = YES
++HTML_TIMESTAMP         = NO
+ 
+ # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+ # documentation will contain sections that can be hidden and shown after the

Reply via email to