Subject: bug#48933: closed (Re: bug#48933: [PATCH] build: Make outputs of node-build-system reproducible.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 24 Jun 2021 12:13:01 +0000

Your bug report

#48933: [PATCH] build: Make outputs of node-build-system reproducible.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
48933: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=48933
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#48933: [PATCH] build: Make outputs of node-build-system reproducible.
From: Lars-Dominik Braun <[email-masked]>
To: Ludovic Courtès <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Thu, 24 Jun 2021 14:12:08 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

> > Updated patch attached. I’ll push it if there are no further comments.
> 
> Perfect, thanks!
pushed as 9c93573d15e90232de0effb4c28332c454dbc290.

Cheers,
Lars

Subject: [PATCH] build: Make outputs of node-build-system reproducible.
From: Lars-Dominik Braun <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Wed, 9 Jun 2021 14:56:58 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

package.json records two hashes of package.tgz, which change for each
build, resulting in non-reproducible builds.

* guix/build/node-build-system.scm (repack): Add reproducibility options
to tar command.
---
 guix/build/node-build-system.scm | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/guix/build/node-build-system.scm b/guix/build/node-build-system.scm
index a55cab237c..9b3de43e24 100644
--- a/guix/build/node-build-system.scm
+++ b/guix/build/node-build-system.scm
@@ -120,7 +120,15 @@
   #t)
 
 (define* (repack #:key inputs #:allow-other-keys)
-  (invoke "tar" "-czf" "../package.tgz" ".")
+  (invoke "tar"
+          ;; Add options suggested by https://reproducible-builds.org/docs/archives/
+          "--sort=name"
+          (string-append "--mtime=" (getenv "SOURCE_DATE_EPOCH"))
+          "--owner=0"
+          "--group=0"
+          "--numeric-owner"
+          "--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime"
+          "-czf" "../package.tgz" ".")
   #t)
 
 (define* (install #:key outputs inputs #:allow-other-keys)
-- 
2.31.1