guix shell cache not working properly

  • Done
  • quality assurance status badge
Details
2 participants
  • Guillaume Le Vaillant
  • Ludovic Courtès
Owner
unassigned
Submitted by
Guillaume Le Vaillant
Severity
normal
G
G
Guillaume Le Vaillant wrote on 31 Jan 2022 14:34
(address . bug-guix@gnu.org)
87zgnc56ut.fsf@kitej
Hi,

With Guix at e217174b7b9046658ac3474d522bde192e9cffb4I have an issue
with the "guix shell -p ..." command, where I end up in a environment
for a profile I used previously instead of the profile specified in the
command line.

I can reproduce the issue this way:

Toggle snippet (70 lines)
# Clear the profile cache
rm ${HOME}/.cache/guix/profiles/*

# Make some profiles
mkdir a
echo "(specifications->manifest '(\"gforth\"))" > a/manifest.scm
guix package -m a/manifest.scm -p a/profile
mkdir b
echo "(specifications->manifest '(\"smalltalk\"))" > b/manifest.scm
guix package -m b/manifest.scm -p b/profile

# The first attempt at using a profile when the cache is empty fails
guix shell -q -p a/profile -- gforth
> Backtrace:
> 10 (primitive-load "/home/guillaume/.config/guix/current/b…")
> In guix/ui.scm:
> 2209:7 9 (run-guix . _)
> 2172:10 8 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
> 1752:10 7 (with-exception-handler _ _ #:unwind? _ # _)
> In guix/status.scm:
> 802:4 6 (call-with-status-report _ _)
> In guix/scripts/environment.scm:
> 951:12 5 (_)
> In guix/store.scm:
> 2123:24 4 (run-with-store #f #<procedure 7f27d241c460 at guix/sc…> …)
> In guix/scripts/environment.scm:
> 968:16 3 (_ _)
> In guix/store.scm:
> 1995:38 2 (_ #f)
> 1473:0 1 (add-indirect-root #f "/home/guillaume/.cache/guix/prof…")
> In ice-9/boot-9.scm:
> 1685:16 0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f

# Then using the first profile with the same command works
guix shell -q -p a/profile -- gforth
> Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
> Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
> Type `bye' to exit
bye

# Using the second profile doesn't work
guix shell -q -p b/profile -- gst
> guix shell: erreur : gst : commande introuvable
> conseil : Vouliez-vous dire « gforth » ?

# But the second profile really has the gst program
ls b/profile/bin
> gst gst-blox gst-browser gst-config gst-convert [...]

# In fact, using the second profile creates an environment for
# the first profile
guix shell -q -p b/profile -- gforth
> Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
> Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
> Type `bye' to exit
bye

# And the profile cache only contains a link for the first profile instead
# of links for both profiles
ls ${HOME}/.cache/guix/profiles/
> hw7txclxu45xzbt4orha5d6zrgjej5ps4ve5n6je3cnblbg7fz2a
> last-expiry-cleanup

ls hw7txclxu45xzbt4orha5d6zrgjej5ps4ve5n6je3cnblbg7fz2a/bin
> gforth gforth-0.7.3 gforth-fast gforth-fast-0.7.3 [...]
L
L
Ludovic Courtès wrote on 2 Mar 2022 19:30
(name . Guillaume Le Vaillant)(address . glv@posteo.net)(address . 53658-done@debbugs.gnu.org)
87tucgyzpn.fsf@gnu.org
Hi Guillaume,

Guillaume Le Vaillant <glv@posteo.net> skribis:

Toggle quote (61 lines)
> # Clear the profile cache
> rm ${HOME}/.cache/guix/profiles/*
>
> # Make some profiles
> mkdir a
> echo "(specifications->manifest '(\"gforth\"))" > a/manifest.scm
> guix package -m a/manifest.scm -p a/profile
> mkdir b
> echo "(specifications->manifest '(\"smalltalk\"))" > b/manifest.scm
> guix package -m b/manifest.scm -p b/profile
>
> # The first attempt at using a profile when the cache is empty fails
> guix shell -q -p a/profile -- gforth
>> Backtrace:
>> 10 (primitive-load "/home/guillaume/.config/guix/current/b…")
>> In guix/ui.scm:
>> 2209:7 9 (run-guix . _)
>> 2172:10 8 (run-guix-command _ . _)
>> In ice-9/boot-9.scm:
>> 1752:10 7 (with-exception-handler _ _ #:unwind? _ # _)
>> In guix/status.scm:
>> 802:4 6 (call-with-status-report _ _)
>> In guix/scripts/environment.scm:
>> 951:12 5 (_)
>> In guix/store.scm:
>> 2123:24 4 (run-with-store #f #<procedure 7f27d241c460 at guix/sc…> …)
>> In guix/scripts/environment.scm:
>> 968:16 3 (_ _)
>> In guix/store.scm:
>> 1995:38 2 (_ #f)
>> 1473:0 1 (add-indirect-root #f "/home/guillaume/.cache/guix/prof…")
>> In ice-9/boot-9.scm:
>> 1685:16 0 (raise-exception _ #:continuable? _)
>>
>> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
>> In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f
>
> # Then using the first profile with the same command works
> guix shell -q -p a/profile -- gforth
>> Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
>> Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
>> Type `bye' to exit
> bye
>
> # Using the second profile doesn't work
> guix shell -q -p b/profile -- gst
>> guix shell: erreur : gst : commande introuvable
>> conseil : Vouliez-vous dire « gforth » ?
>
> # But the second profile really has the gst program
> ls b/profile/bin
>> gst gst-blox gst-browser gst-config gst-convert [...]
>
> # In fact, using the second profile creates an environment for
> # the first profile
> guix shell -q -p b/profile -- gforth
>> Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
>> Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
>> Type `bye' to exit
> bye

Fixed in ee6275c9744f8649bccc8cfa7c52d100044d7570, thanks!

Ludo’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 53658@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 53658
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch