GNU bug report logs - #71527
[PATCH 00/20] Update erlang, elixir things, add xxkb.

Previous Next

Package: guix-patches;

Reported by: Igor Goryachev <igor <at> goryachev.org>

Date: Thu, 13 Jun 2024 05:24:02 UTC

Severity: normal

Tags: patch

Done: Andrew Tropin <andrew <at> trop.in>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Igor Goryachev <igor <at> goryachev.org>
To: 71527 <at> debbugs.gnu.org
Cc: Igor Goryachev <igor <at> goryachev.org>
Subject: [bug#71527] [PATCH 01/20] gnu: rebar3: Make rebar3 escriptize reproducible.
Date: Thu, 13 Jun 2024 09:17:38 +0300
* gnu/packages/erlang.scm (rebar3): Make rebar3 escriptize reproducible.

Change-Id: Id5897566f870afe62a97154becc752025a1b323e
---
 gnu/packages/erlang.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm
index c53cb72c2e..975e989055 100644
--- a/gnu/packages/erlang.scm
+++ b/gnu/packages/erlang.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2022 jgart <jgart <at> dismail.de>
 ;;; Copyright © 2023 wrobell <wrobell <at> riseup.net>
 ;;; Copyright © 2023 Tim Johann <t1m <at> phrogstar.de>
+;;; Copyright © 2024 Igor Goryachev <igor <at> goryachev.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -638,6 +639,29 @@ (define-public rebar3
                     "eunit_formatters" "getopt" "hex_core" "erlware_commons"
                     "parse_trans" "relx" "ssl_verify_fun" "providers"))))
          (delete 'configure)
+         ;; By default rebar3 produces escripts with embedded ZIP archives
+         ;; with files with current timestamps which is not suitable for
+         ;; reproducible builds. We fix it by setting predefined timestamps.
+         (add-before 'build 'make-escriptize-reproducible
+           (lambda _
+             (let ((escriptize "src/rebar_prv_escriptize.erl"))
+               (substitute* escriptize
+                 (("\\[dir_entries\\(filename:dirname\\(Filename1\\)\\),")
+                  (string-append "FilePath = filename:join(Dir, Filename),"
+                                 "{ok, FileInfo0} = file:read_file_info(FilePath),"
+                                 "DateTime = {{1970, 1, 1}, {0, 0, 1}},"
+                                 "FileInfo = FileInfo0#file_info{mtime = DateTime},"
+                                 "[dir_entries(filename:dirname(Filename1)),")))
+               (substitute* escriptize
+                 (((string-append
+                    "\\{Filename1, file_contents\\(filename:join\\(Dir, "
+                    "Filename\\)\\)\\}\\]."))
+                  "{Filename1, file_contents(FilePath), FileInfo}]."))
+               (substitute* escriptize
+                 (((string-append "\\[\\{FName,FBin\\} \\|\\| \\{FName,FBin\\} <- "
+                                  "Files, FBin =/= <<>>\\]\\."))
+                  (string-append "[{FName,FBin,FInfo} || {FName,FBin,FInfo} <- "
+                                 "Files, FBin =/= <<>>]."))))))
          (replace 'build
            (lambda _
              (setenv "HOME" (getcwd))
-- 
2.45.1





This bug report was last modified 1 year and 24 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.