guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Cookbook recipe from "The Repository as a Channel" section does not


From: pelzflorian (Florian Pelz)
Subject: Re: Cookbook recipe from "The Repository as a Channel" section does not work for Guix with properly configured GUILE_LOAD_PATH
Date: Sun, 18 Aug 2024 23:33:09 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

Hello Nigko and Attila.  My current belief is that any `local-file'
referring to outside the .guix-channel directory cannot work in channels
in all situations.  (Attila’s hashes files are inside guix-crypto’s
.guix-channel src directory.  They are fine.)

At first glance, Guix is faulty and does not respect all symlinks
in `absolute-dirname'.  The following diff should be applied to
guix.git, to resolve symlinks before computing dirname, not after:

diff --git a/guix/utils.scm b/guix/utils.scm
index d8ce6ed886..322c9457e4 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -1124,7 +1124,7 @@ (define absolute-dirname
        ;; needs to be canonicalized.
        (if (string-prefix? "/" file)
            (dirname file)
-           (canonicalize-path (dirname file)))))))
+           (dirname (canonicalize-path file)))))))
 
 (define-syntax current-source-directory
   (lambda (s)


But this does not help with the cookbook’s guile channel nor Nigko’s
test-repo, even after repeatedly pulling a guix channel with this
change.

I might misunderstand .go compilation and whether macros are evaluated
at compile-time.  But maybe the error is because `local-file' is
relative to the current-source-directory from which the .go file was
compiled.  But the .go file was compiled from a directory union that
does not contain the source code, it only has the modules directory
listed in .guix-channel.  Only when the pre-compiled .go is not used,
the source directory can be found.  (Am I on the right track or
mistaken?)

/var/guix/profiles/per-user/florian/current-guix links to it.  guix gc
--referrers and --derivers show what is built from what.  Maybe I
misunderstand.  Maybe the channel build system would need changes.

In particular,

$ guix build -S guile@3.0.99-git

never works no matter the load path.

Regards,
Florian

reply via email to

[Prev in Thread] Current Thread [Next in Thread]