Source: webassets
Version: 3:0.10.1-2
Severity: wishlist
Tags: patch
User: reproducible-bui...@lists.alioth.debian.org
Usertags: randomness

Hi!

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

The attached patch is sorting the command line arguments so that the
help text and therefore the generated manpage are always the same.
Once applied, webassets can be built reproducibly in our current
experimental framework.

Regards,
 Reiner

 [1]: https://wiki.debian.org/ReproducibleBuilds
diff --git a/debian/changelog b/debian/changelog
index d7c771c..c13ea9b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+webassets (3:0.10.1-2.0~reproducible1) UNRELEASED; urgency=low
+
+  * Added patch to produce stable help text.
+
+ -- Reiner Herrmann <rei...@reiner-h.de>  Sun, 11 Jan 2015 22:02:18 +0100
+
 webassets (3:0.10.1-2) unstable; urgency=medium
 
   * Add breaks field between python3-webassets and python-webassets <= 3:0.9-1
diff --git a/debian/patches/0002-Sort-commandline-arguments.patch b/debian/patches/0002-Sort-commandline-arguments.patch
new file mode 100644
index 0000000..013dbc1
--- /dev/null
+++ b/debian/patches/0002-Sort-commandline-arguments.patch
@@ -0,0 +1,19 @@
+Author: Reiner Herrmann <rei...@reiner-h.de>
+Description: Sort commandline arguments to produce stable output
+ The help text is used to generate a manpage with help2man.
+ With an unstable argument order the generated manpage will
+ differ on every build.
+
+Index: webassets-0.10.1/src/webassets/script.py
+===================================================================
+--- webassets-0.10.1.orig/src/webassets/script.py
++++ webassets-0.10.1/src/webassets/script.py
+@@ -448,7 +448,7 @@ class GenericArgparseImplementation(obje
+ 
+         # Add subparsers.
+         subparsers = parser.add_subparsers(dest='command')
+-        for command in CommandLineEnvironment.DefaultCommands.keys():
++        for command in sorted(CommandLineEnvironment.DefaultCommands.keys()):
+             command_parser = subparsers.add_parser(command)
+             maker = getattr(self, 'make_%s_parser' % command, False)
+             if maker:
diff --git a/debian/patches/series b/debian/patches/series
index e76a3e5..b66ac48 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 0001-Fix-documentation-intersphinx-mapping.patch
+0002-Sort-commandline-arguments.patch

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to