Fail nicely when profile is not found

  • Open
  • quality assurance status badge
Details
One participant
  • swedebugia
Owner
unassigned
Submitted by
swedebugia
Severity
normal
S
S
swedebugia wrote on 2 Nov 2018 09:00
(address . bug-guix@gnu.org)
3c9c7b9e-90ce-a70e-2850-b4e32d719f04@riseup.net
Hi

I installed guix from AUR and ran into this:

$ guix pull -l
Backtrace:
           8 (apply-smob/1 #<catch-closure 55dd9a29b6e0>)
In ice-9/boot-9.scm:
    705:2  7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8  6 (_ #(#(#<directory (guile-user) 55dd9a356140>)))
In guix/ui.scm:
  1578:12  5 (run-guix-command _ . _)
In ice-9/boot-9.scm:
    829:9  4 (catch srfi-34 #<procedure 55dd9b57f7e0 at guix/ui.scm…> …)
    829:9  3 (catch system-error #<procedure 55dd9b57f880 at guix/s…> …)
    829:9  2 (catch git-error #<procedure 55dd9b57f640 at guix/scri…> …)
    829:9  1 (catch system-error #<procedure 55dd9acab900 at guix/s…> …)
In unknown file:
           0 (raise #<condition &profile-not-found-error [profile: "…>)

ERROR: In procedure raise:
Wrong type (expecting exact integer): #<condition
&profile-not-found-error [profile: "/home/egil/.config/guix/current"]
55dd9ac9a240>

The install went fine but guix is not working :/ so I will do a manual
binary install instead.

I could try crafting a patch testing if the directory exist if somebody
is willing to point me to the right file (and perhaps an example of a
procedure that can check this)

Cheers
Swedebugia

$ guix --version
guix (GNU Guix) 0.15.0
Copyright (C) 2018 the Guix authors
License GPLv3+: GNU GPL version 3 or later
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
S
S
swedebugia wrote on 17 Dec 2018 12:04
(address . 33238@debbugs.gnu.org)(name . bug-Guix)(address . bug-guix-bounces+swedebugia=riseup.net@gnu.org)
8eb75951106df8ab37ad625d05dfc365@riseup.net
On 2018-11-02 09:00, swedebugia wrote:
Toggle quote (43 lines)
> Hi
>
> I installed guix from AUR and ran into this:
>
> $ guix pull -l
> Backtrace:
>            8 (apply-smob/1 #<catch-closure 55dd9a29b6e0>)
> In ice-9/boot-9.scm:
>     705:2  7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
> In ice-9/eval.scm:
>     619:8  6 (_ #(#(#<directory (guile-user) 55dd9a356140>)))
> In guix/ui.scm:
>   1578:12  5 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>     829:9  4 (catch srfi-34 #<procedure 55dd9b57f7e0 at guix/ui.scm…> …)
>     829:9  3 (catch system-error #<procedure 55dd9b57f880 at guix/s…> …)
>     829:9  2 (catch git-error #<procedure 55dd9b57f640 at guix/scri…> …)
>     829:9  1 (catch system-error #<procedure 55dd9acab900 at guix/s…> …)
> In unknown file:
>            0 (raise #<condition &profile-not-found-error [profile: "…>)
>
> ERROR: In procedure raise:
> Wrong type (expecting exact integer): #<condition
> &profile-not-found-error [profile: "/home/egil/.config/guix/current"]
> 55dd9ac9a240>
>
> The install went fine but guix is not working :/ so I will do a manual
> binary install instead.
>
> I could try crafting a patch testing if the directory exist if
> somebody is willing to point me to the right file (and perhaps an
> example of a procedure that can check this)
>
> Cheers
> Swedebugia
>
> $ guix --version
> guix (GNU Guix) 0.15.0
> Copyright (C) 2018 the Guix authors
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.

This is still present:

sdb@antelope ~/src/guix$ ./pre-inst-env guix describe
Git checkout:
repository: /home/sdb/src/guix
branch: HEAD
commit: c4cc1b9d20212369d485a7b3788160117926ea3b


sdb@antelope ~/src/guix$ ./pre-inst-env guix pull -l
Backtrace:
8 (apply-smob/1 #<catch-closure 9e6d4c0>)
In ice-9/boot-9.scm:
705:2 7 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 6 (_ #(#(#<directory (guile-user) 9e5e910>)))
In guix/ui.scm:
1603:12 5 (run-guix-command _ . _)
In ice-9/boot-9.scm:
829:9 4 (catch srfi-34 #<procedure aa39860 at guix/ui.scm:615:…> …)
829:9 3 (catch system-error #<procedure aa398b0 at guix/script…> …)
829:9 2 (catch git-error #<procedure aa39810 at guix/scripts/p…> …)
829:9 1 (catch system-error #<procedure aa39030 at guix/script…> …)
In unknown file:
0 (raise #<condition &profile-not-found-error [profile: "…>)

ERROR: In procedure raise:
Wrong type (expecting exact integer): #<condition
&profile-not-found-error [profile:
"/var/guix/profiles/per-user/sdb/current-guix"] aa10550>

The relevant code from pull.scm is this:
(define (process-query opts profile)
"Process any query on PROFILE specified by OPTS."
(match (assoc-ref opts 'query)
(('list-generations pattern)
(define (list-generations profile numbers)
(match numbers
((first rest ...)
(display-profile-content profile first)
(let loop ((numbers numbers))
(match numbers
((first second rest ...)
(display-profile-content-diff profile
first second)
(loop (cons second rest)))
((_) #t)
(() #t))))))

(leave-on-EPIPE
(cond ((not (file-exists? profile)) ; XXX: race condition
(raise (condition (&profile-not-found-error
(profile profile)))))
((string-null? pattern)
(list-generations profile (profile-generations profile)))
((matching-generations pattern profile)
=>
(match-lambda
(()
(exit 1))
((numbers ...)
(list-generations profile numbers)))))))))

--
Cheers
Swedebugia
?
Your comment

Commenting via the web interface is currently disabled.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 33238
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