Ludovic Courtès <ludo@gnu.org> skribis:
Toggle quote (5 lines)
> In the 1.3.0rc2 VM image, ‘guix describe’ prints nothing and exits with
> 0 (success). This is with /run/current-system/profile/bin/guix.
> ‘strace’ shows that it parses /run/current-system/profile/manifest,
> which does not contain provenance information.
In RC1, ‘current-profile’ from (guix describe) returns #f.
Thus, ‘current-channels’ returns channel metadata from (guix config).
In RC2, ‘current-profile’ returns /run/current-system/profile.
Thus, ‘current-channels’ returns metadata from profile entries, but
there’s none.
The different ‘current-profile’ behavior stems from this condition:
Toggle snippet (16 lines)
(define current-profile
(mlambda ()
"Return the profile (created by 'guix pull') the calling process lives in,
or #f if this is not applicable."
(match initial-program-arguments
((program . _)
(and (string-suffix? "/bin/guix" program) ;<------ HERE!
;; Note: We want to do _lexical dot-dot resolution_. Using ".."
;; for real would instead take us into the /gnu/store directory
;; that ~/.config/guix/current/bin points to, whereas we want to
;; obtain ~/.config/guix/current.
(let ((candidate (dirname (dirname program))))
(and (file-exists? (string-append candidate "/manifest"))
candidate)))))))
Prior to c47f3fc13562d82edfd2d47342574154c452843a, PROGRAM was
“.guix-real” (hence the #f return value), but now it’s “guix”.
Ludo’.