support/download: generate reproducible Hg archives
authorYann E. MORIN <yann.morin.1998@free.fr>
Sat, 2 Jan 2016 11:35:49 +0000 (12:35 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Sun, 3 Jan 2016 20:50:38 +0000 (21:50 +0100)
When hg directly creates the output file, the hash for that file changes
everytime.

However, if we just tell hg to output the archive on stdout and we do
the redirect to the file, then the archive is reproducible.

(The reason is that in the first case, a temporary file is created and
then compressed, and gzip is adding the filename and its timestamp in
the gzip header, while in the second case, there is no temporary file,
and thus no timestamp and thus it is reproducible.)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Yegor Yefremov <yegorslists@googlemail.com>
Tested-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
support/download/hg

index 5bdbbc82cd3bbc1a5ba6c01e55a22722be4f6633..25cb4e9d3510add52f917b79636db758fb4cd8fe 100755 (executable)
@@ -35,4 +35,4 @@ _hg clone ${verbose} --noupdate "'${repo}'" "'${basename}'"
 
 _hg archive ${verbose} --repository "'${basename}'" --type tgz \
             --prefix "'${basename}'" --rev "'${cset}'" \
-            "'${output}'"
+            - >"${output}"