diff mbox series

[bug#51780] environment: Fix ‘--check’ with exported PS1 variable.

Message ID 20211111234648.672963-1-bauermann@kolabnow.com
State Accepted
Headers show
Series [bug#51780] environment: Fix ‘--check’ with exported PS1 variable. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Thiago Jung Bauermann Nov. 11, 2021, 11:46 p.m. UTC
If your .bashrc (unnecessarily) exports PS1 and you’re in a non-login
shell, Guix crashes:

--8<---------------cut here---------------start------------->8---
user@popigai:~$ guix shell --check coreutils
guix shell: checking the environment variables visible from shell '/bin/bash'...
Backtrace:
          14 (primitive-load "/home/user/.config/guix/current/bin/g…")
In guix/ui.scm:
   2206:7 13 (run-guix . _)
  2169:10 12 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1752:10 11 (with-exception-handler _ _ #:unwind? _ # _)
  1752:10 10 (with-exception-handler _ _ #:unwind? _ # _)
In guix/store.scm:
   658:37  9 (thunk)
   1320:8  8 (call-with-build-handler _ _)
   1320:8  7 (call-with-build-handler #<procedure 7fe393b7c420 at g…> …)
In guix/status.scm:
    800:4  6 (call-with-status-report _ _)
In guix/scripts/environment.scm:
   951:12  5 (_)
In guix/store.scm:
  2119:24  4 (run-with-store #<store-connection 256.99 7fe39627e500> …)
In guix/scripts/environment.scm:
   521:35  3 (_ _)
In unknown file:
           2 (string=? ("PS1" . "${debian_chroot:+($debian_chroot)…") …)
In ice-9/boot-9.scm:
  1685:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
In procedure string=: Wrong type argument in position 1 (expecting string): ("PS1" . "${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]${EXTRA}\\$ ")
user@popigai:~$
--8<---------------cut here---------------end--------------->8---

This is because the match pattern doesn’t expect `(vhash-assoc "PS1" actual)`
to return a pair.

* guix/scripts/environment.scm (validate-child-shell-environment): Change
match pattern to expect a pair.
---
 guix/scripts/environment.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


base-commit: 893a31ec20f47b979c1be9fb8b942809228ba4c9

Comments

Ludovic Courtès Nov. 14, 2021, 10:16 p.m. UTC | #1
Hi,

Thiago Jung Bauermann <bauermann@kolabnow.com> skribis:

> If your .bashrc (unnecessarily) exports PS1 and you’re in a non-login
> shell, Guix crashes:
>
> user@popigai:~$ guix shell --check coreutils
> guix shell: checking the environment variables visible from shell '/bin/bash'...
> Backtrace:
>           14 (primitive-load "/home/user/.config/guix/current/bin/g…")
> In guix/ui.scm:
>    2206:7 13 (run-guix . _)
>   2169:10 12 (run-guix-command _ . _)
> In ice-9/boot-9.scm:
>   1752:10 11 (with-exception-handler _ _ #:unwind? _ # _)
>   1752:10 10 (with-exception-handler _ _ #:unwind? _ # _)
> In guix/store.scm:
>    658:37  9 (thunk)
>    1320:8  8 (call-with-build-handler _ _)
>    1320:8  7 (call-with-build-handler #<procedure 7fe393b7c420 at g…> …)
> In guix/status.scm:
>     800:4  6 (call-with-status-report _ _)
> In guix/scripts/environment.scm:
>    951:12  5 (_)
> In guix/store.scm:
>   2119:24  4 (run-with-store #<store-connection 256.99 7fe39627e500> …)
> In guix/scripts/environment.scm:
>    521:35  3 (_ _)
> In unknown file:
>            2 (string=? ("PS1" . "${debian_chroot:+($debian_chroot)…") …)
> In ice-9/boot-9.scm:
>   1685:16  1 (raise-exception _ #:continuable? _)
>   1685:16  0 (raise-exception _ #:continuable? _)
>
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure string=: Wrong type argument in position 1 (expecting string): ("PS1" . "${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]${EXTRA}\\$ ")
> user@popigai:~$
>
> This is because the match pattern doesn’t expect `(vhash-assoc "PS1" actual)`
> to return a pair.
>
> * guix/scripts/environment.scm (validate-child-shell-environment): Change
> match pattern to expect a pair.

Oops, good catch!  Applied, thanks.

Ludo’.
Thiago Jung Bauermann Nov. 16, 2021, 4 a.m. UTC | #2
Hello Ludo,

Em domingo, 14 de novembro de 2021, às 19:16:51 -03, Ludovic Courtès 
escreveu:
> Oops, good catch!  Applied, thanks.

Thank you!
diff mbox series

Patch

diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 8176de4a5e8c..821f20e2f223 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -517,7 +517,7 @@  (define-syntax-rule (warn exp ...)
     (unless warned?
       (match (vhash-assoc "PS1" actual)
         (#f #f)
-        (str
+        ((_ . str)
          (when (and (getenv "PS1") (string=? str (getenv "PS1")))
            (warning (G_ "'PS1' is the same in sub-shell~%"))
            (display-hint (G_ "Consider setting a different prompt for