Subject: [PATCH v2] gnu: nsis: Respect SOURCE-DATE-EPOCH for reproducibility

From: Carl Dong <[email-masked]>
Date: Thu, 3 Jun 2021 15:46:08 -0400

Does this look correct?

* gnu/packages/patches/nsis-source-date-epoch.patch: New patch.
* gnu/packages/installers.scm (make-nsis)[source]: Apply it.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/installers.scm                   |  3 ++-
 .../patches/nsis-source-date-epoch.patch      | 23 +++++++++++++++++++
 3 files changed, 26 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/nsis-source-date-epoch.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 792ebac1e1..db96f55bf0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1464,6 +1464,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/network-manager-plugin-path.patch	\
   %D%/packages/patches/nginx-socket-cloexec.patch		\
   %D%/packages/patches/nsis-env-passthru.patch			\
+  %D%/packages/patches/nsis-source-date-epoch.patch		\
   %D%/packages/patches/nss-increase-test-timeout.patch		\
   %D%/packages/patches/nss-3.56-pkgconfig.patch			\
   %D%/packages/patches/ntfs-3g-CVE-2019-9755.patch		\
diff --git a/gnu/packages/installers.scm b/gnu/packages/installers.scm
index 775b91f0f7..c768a367aa 100644
--- a/gnu/packages/installers.scm
+++ b/gnu/packages/installers.scm
@@ -42,7 +42,8 @@
                 (sha256
                  (base32
                   "1sbwx5vzpddharkb7nj4q5z3i5fbg4lan63ng738cw4hmc4v7qdn"))
-                (patches (search-patches "nsis-env-passthru.patch"))))
+                (patches (search-patches "nsis-env-passthru.patch"
+                                         "nsis-source-date-epoch.patch"))))
       (build-system scons-build-system)
       (native-inputs `(("xgcc" ,xgcc)
                        ("xbinutils" ,xbinutils)
diff --git a/gnu/packages/patches/nsis-source-date-epoch.patch b/gnu/packages/patches/nsis-source-date-epoch.patch
new file mode 100644
index 0000000000..744c2a8011
--- /dev/null
+++ b/gnu/packages/patches/nsis-source-date-epoch.patch
@@ -0,0 +1,23 @@
+Honour SOURCE_DATE_EPOCH for VERSION default
+
+Merged upstream as cd3f1024a37a332f1d4fa96a817ca80dfa2a478c, but not yet in a
+release. GitHub PR: https://github.com/kichik/nsis/pull/13
+
+Python snippet from: https://reproducible-builds.org/docs/source-date-epoch/#python
+
+
+diff --git a/SConstruct b/SConstruct
+index e8252c9..41786f2 100755
+--- a/SConstruct
++++ b/SConstruct
+@@ -95,8 +95,8 @@ default_doctype = 'html'
+ if defenv.WhereIs('hhc', os.environ['PATH']):
+ 	default_doctype = 'chm'
+ 
+-from time import strftime, gmtime
+-cvs_version = strftime('%d-%b-%Y.cvs', gmtime())
++import time
++cvs_version = time.strftime('%d-%b-%Y.cvs', time.gmtime(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))))
+ 
+ opts = Variables()
+ 
-- 
2.31.1