unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Attila Lendvai <attila@lendvai.name>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 55464@debbugs.gnu.org
Subject: bug#55464: (current-filename) is #f when guix pull'ing
Date: Thu, 19 May 2022 13:32:55 +0000	[thread overview]
Message-ID: <tBSTE5N8NWJIWIIr3W0VBG9aUjGdWsKFUTgSrjGbYVI91hTDrHGg0SQ3UyG606XDPo37sTYLIfRNbvt-HRU1tDbjHlc7C9KBABKlQeF8edM=@lendvai.name> (raw)
In-Reply-To: <87ee0r42ze.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 2212 bytes --]

> > (define-public foo
> > (let ((hashes
> > (with-input-from-file
> > (string-append (dirname (current-filename))
> > "/foo.hashes")
> > read)))
> > (package ...)))
>
>
> Not fully answering your question, but if “foo.hashes” contains hashes
> for origins and similar, you could make “foo.hashes” contain something
> like:
>
> (list (base32 …) …)
>
> and, in the .scm, write:
>
> (include "foo.hashes")
>
> The ‘include’ directive includes the file at macro-expansion time,
> similar to #include in C.


i did find guile's INCLUDE and tried to use it, but it also didn't work when guix pull'ing it. see the attached, now abandoned commit.

IIRC the issue is that the implementation of INCLUDE tries to load the file relative to the cwd, but cwd is not changed by the code that is driving the compilation when guix pull'ing the code. (does each thread has its own cwd at all...?)

it works when i build it using `./pre-inst-env guix build foo`. i briefly tried to analyse what's the difference between the two situations, but i ran out of steam.

it is the same reason i need to call READ like below in my current implementation:

(define (%read-module-relative-file module filename)
  (with-input-from-file
      (or (search-path
           %load-path
           (string-append (dirname (module-filename module))
                          "/" filename))
          (error "%read-module-relative-file failed for" filename))
    read))


...which is not beautiful.


> Back to the original issue, I suppose ‘current-filename’ return #f when
> this .scm is first loaded, before it’s compiled. Anyway, it’s probably
> best to load it at macro-expansion time as you suggested.


is my analysis is correct, namely that cwd is not (always?) changed at macroexpand time, and thus the implementation of INCLUDE is broken for relative paths? is this a bug to be fixed in guile? if so, shall i try to add a test case for this somewhere?

--
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“The saddest aspect of life right now is that science gathers knowledge faster than society gathers wisdom.”
	— Isaac Asimov (1920–1992)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: use-guile-include.patch --]
[-- Type: text/x-patch; name=use-guile-include.patch, Size: 6936 bytes --]

From 20f815592708862a336f1937aa792e5dc356b1b4 Mon Sep 17 00:00:00 2001
From: Attila Lendvai <attila@lendvai.name>
Date: Tue, 17 May 2022 14:35:01 +0200
Subject: use guile's INCLUDE instead of our own way to read a file


diff --git a/bin/release-update-helper.scm b/bin/release-update-helper.scm
index 6545630..3c8eddb 100755
--- a/bin/release-update-helper.scm
+++ b/bin/release-update-helper.scm
@@ -129,7 +129,7 @@
                   (false-if-exception (delete-file db-file))
                   (with-output-to-file db-file
                     (lambda ()
-                      (format #t ";; This file was generated by the ~A script~%"
+                      (format #t ";; This file was generated by the ~A script~%'"
                               (basename (current-filename)))
                       (write db)))))
               (format #t "Finished successfully~%")))
diff --git a/src/guix-crypto/package-utils.scm b/src/guix-crypto/package-utils.scm
index 1877890..680d591 100644
--- a/src/guix-crypto/package-utils.scm
+++ b/src/guix-crypto/package-utils.scm
@@ -21,26 +21,7 @@
   #:use-module (guix diagnostics)
   #:use-module (guix packages)
   #:use-module (guix ui)
-  #:use-module (ice-9 match)
-  #:export (read-module-relative-file))
-
-(define (%read-module-relative-file module filename)
-  (with-input-from-file
-      (or (search-path %load-path
-                       (string-append (dirname (module-filename module))
-                                      "/" filename))
-          (error "%read-module-relative-file failed for" filename))
-    read))
-
-(define-syntax read-module-relative-file
-  (lambda (syn)
-    (syntax-case syn ()
-      ((_ filename)
-       (with-syntax
-           ;; Read the file at compile time and macroexpand to the first form.
-           ((form (%read-module-relative-file (current-module)
-                                              (syntax->datum #'filename))))
-         #''form)))))
+  #:use-module (ice-9 match))
 
 (define-public (unsupported-arch package-name system)
   (raise (formatted-message
diff --git a/src/guix-crypto/packages/bee-binary.hashes b/src/guix-crypto/packages/bee-binary.hashes
index 6ddc1c0..382d2c9 100644
--- a/src/guix-crypto/packages/bee-binary.hashes
+++ b/src/guix-crypto/packages/bee-binary.hashes
@@ -1,2 +1,2 @@
 ;; This file was generated by the release-update-helper.scm script
-(("aarch64-linux" . "1fjx9hw23dg20k4iz0imd33wsnlwxkjs9z39b4kakzpf4h89wrnl") ("x86_64-linux" . "18hs1mx50hdgqy1xzppfl0mcf7y2h23qs8qr74jzk5f34ixqhg4d") ("i686-linux" . "0fs5wqjh7qvdcmbbnl34m1j4ja7rl831dixaz3bznb4ys7lmlsjr"))
\ No newline at end of file
+'(("aarch64-linux" . "1fjx9hw23dg20k4iz0imd33wsnlwxkjs9z39b4kakzpf4h89wrnl") ("x86_64-linux" . "18hs1mx50hdgqy1xzppfl0mcf7y2h23qs8qr74jzk5f34ixqhg4d") ("i686-linux" . "0fs5wqjh7qvdcmbbnl34m1j4ja7rl831dixaz3bznb4ys7lmlsjr"))
\ No newline at end of file
diff --git a/src/guix-crypto/packages/ethereum.scm b/src/guix-crypto/packages/ethereum.scm
index 04b5b76..2e8f6e4 100644
--- a/src/guix-crypto/packages/ethereum.scm
+++ b/src/guix-crypto/packages/ethereum.scm
@@ -43,7 +43,7 @@
   (let* ((commit-hash "25c9b49f") ; first 8 digits of the tagged commit's hash
          (version "1.10.17")
          ;; Note: use bin/geth-update-helper.scm to update the hashes
-         (hashes (read-module-relative-file "geth-binary.hashes")))
+         (hashes (include "geth-binary.hashes")))
     (package
       (name "geth-binary")
       (version version)
@@ -150,7 +150,7 @@ programming language.")
   (let* ((version "1.12.8")
          (commit "2d3dd48")
          ;; Note: use bin/geth-update-helper.scm to update the hashes
-         (hashes (read-module-relative-file "nethermind-binary.hashes")))
+         (hashes (include "nethermind-binary.hashes")))
     (package
       (name "nethermind-binary")
       (version version)
diff --git a/src/guix-crypto/packages/geth-binary.hashes b/src/guix-crypto/packages/geth-binary.hashes
index 090f8ae..61c919f 100644
--- a/src/guix-crypto/packages/geth-binary.hashes
+++ b/src/guix-crypto/packages/geth-binary.hashes
@@ -1,2 +1,2 @@
 ;; This file was generated by the release-update-helper.scm script
-(("aarch64-linux" . "19100yqrd7z8f9cga4a52hygv93wn3syhi7ix4hi9km34v1qi89d") ("x86_64-linux" . "1kljbr3ks2dn6jd87k7l0xaasbk82rrxmaxjkm2vy7cvaxwaq0cw") ("i686-linux" . "05pbyc2wwqla262r09iwv506mfwih31i7ln5zyiy82hkvbdv8d4n"))
\ No newline at end of file
+'(("aarch64-linux" . "19100yqrd7z8f9cga4a52hygv93wn3syhi7ix4hi9km34v1qi89d") ("x86_64-linux" . "1kljbr3ks2dn6jd87k7l0xaasbk82rrxmaxjkm2vy7cvaxwaq0cw") ("i686-linux" . "05pbyc2wwqla262r09iwv506mfwih31i7ln5zyiy82hkvbdv8d4n"))
\ No newline at end of file
diff --git a/src/guix-crypto/packages/nethermind-binary.hashes b/src/guix-crypto/packages/nethermind-binary.hashes
index 1f72dc9..e020b79 100644
--- a/src/guix-crypto/packages/nethermind-binary.hashes
+++ b/src/guix-crypto/packages/nethermind-binary.hashes
@@ -1,2 +1,2 @@
 ;; This file was generated by the release-update-helper.scm script
-(("aarch64-linux" . "1mshp5pqmfn02l6n9v8qj8f6nn6q88jb9rh469mnmbswmr5zsq61") ("x86_64-linux" . "1fzs12c24a38a6xjl94mq2b8q7h6hmf3waw4jacl1xvfqv3w49rw"))
\ No newline at end of file
+'(("aarch64-linux" . "1mshp5pqmfn02l6n9v8qj8f6nn6q88jb9rh469mnmbswmr5zsq61") ("x86_64-linux" . "1fzs12c24a38a6xjl94mq2b8q7h6hmf3waw4jacl1xvfqv3w49rw"))
\ No newline at end of file
diff --git a/src/guix-crypto/packages/swarm.scm b/src/guix-crypto/packages/swarm.scm
index fb49359..8b33adf 100644
--- a/src/guix-crypto/packages/swarm.scm
+++ b/src/guix-crypto/packages/swarm.scm
@@ -37,7 +37,7 @@
 (define-public bee-binary
   (let ((version "1.6.0")
         ;; Note: use bin/geth-update-helper.scm to update the hashes
-        (hashes (read-module-relative-file "bee-binary.hashes")))
+        (hashes (include "bee-binary.hashes")))
     (package
       (name "bee-binary")
       (version version)
diff --git a/src/guix-crypto/packages/zcash-binary.hashes b/src/guix-crypto/packages/zcash-binary.hashes
index 267fc7e..51ba55c 100644
--- a/src/guix-crypto/packages/zcash-binary.hashes
+++ b/src/guix-crypto/packages/zcash-binary.hashes
@@ -1,2 +1,2 @@
 ;; This file was generated by the release-update-helper.scm script
-(("x86_64-linux" . "1c6hfli4wbdw2im51ak1yfg59xnsv33qsiilr24nygbxdp6p1awm"))
\ No newline at end of file
+'(("x86_64-linux" . "1c6hfli4wbdw2im51ak1yfg59xnsv33qsiilr24nygbxdp6p1awm"))
\ No newline at end of file
diff --git a/src/guix-crypto/packages/zcash.scm b/src/guix-crypto/packages/zcash.scm
index 40ef90e..1ca4732 100644
--- a/src/guix-crypto/packages/zcash.scm
+++ b/src/guix-crypto/packages/zcash.scm
@@ -40,7 +40,7 @@
 
 (define-public zcash-binary
   ;; Note: use bin/geth-update-helper.scm to update the hashes
-  (let ((hashes (read-module-relative-file "zcash-binary.hashes")))
+  (let ((hashes (include "zcash-binary.hashes")))
     (package
       (name "zcash-binary")
       (version "4.7.0")

  reply	other threads:[~2022-05-19 13:34 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-16 21:04 bug#55464: (current-filename) is #f when guix pull'ing Attila Lendvai
2022-05-17  0:09 ` bug#55464: alternative way Attila Lendvai
2022-05-18  9:14 ` bug#55464: (current-filename) is #f when guix pull'ing Ludovic Courtès
2022-05-19 13:32   ` Attila Lendvai [this message]
2022-05-21 16:39     ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='tBSTE5N8NWJIWIIr3W0VBG9aUjGdWsKFUTgSrjGbYVI91hTDrHGg0SQ3UyG606XDPo37sTYLIfRNbvt-HRU1tDbjHlc7C9KBABKlQeF8edM=@lendvai.name' \
    --to=attila@lendvai.name \
    --cc=55464@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).