home-environment-variables-service-type does not quote things

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Maxime Devos
Owner
unassigned
Submitted by
Maxime Devos
Severity
important

Debbugs page

M
M
Maxime Devos wrote on 19 Mar 2022 14:04
(address . bug-guix@gnu.org)
8edc244df527278786d4d0e1dfb33afce441546d.camel@telenet.be
Hi guix,

Consider the following home configuration:

(use-modules (gnu home) (gnu packages) (gnu home services)
(gnu services) (guix gexp) (gnu home services shells))

(define formula-of-the-day
;; TODO: add some more formulae, randomise
"$US dollar/€euro = 1.11")

(home-environment
(packages '())
(services
(list (simple-service 'extra-environment-variables
home-environment-variables-service-type
`(("formula of the (reconfiguration) day" . ,formula-of-the-day))))))

Now start a container with this configuration with "guix home container":

$ guix home container home-configuration.scm

[start output block]
WARNING: (guile-user): imported module (guix build utils) overrides
core binding `delete'
/gnu/store/[...]/setup-environment: line 33: syntax error near
unexpected token `('
/gnu/store/[...]/setup-environment: line 33: `export formula of the
(reconfiguration) day=$US dollar/€euro = 1.11'
Backtrace:
In ice-9/boot-9.scm:
1752:10 11 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
10 (apply-smob/0 #<thunk 7f8d3bd36f40>)
In ice-9/boot-9.scm:
724:2 9 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
In ice-9/eval.scm:
619:8 8 (_ #(#(#<directory (guile-user) 7f8d3bd30c80>)))
In ice-9/command-line.scm:
185:18 7 (_ #<input: string 7f8d3bd29850>)
In unknown file:
6 (eval (begin (use-modules (guix build utils) (# ?) ?) ?)
?)
In ice-9/eval.scm:
619:8 5 (_ #f)
In unknown file:
4 (primitive-load "/gnu/store/6xn1fyljn05cjgx3sakhmds88sc?")
In ice-9/eval.scm:
293:34 3 (_ #(#(#(#(#(#(#(#(#<directory ?> ?) ?) ?) ?) ?) ?) ?) ?))
159:9 2 (_ #(#(#(#(#(#(#(#(#<directory ?> ?) ?) ?) ?) ?) ?) ?) ?))
159:9 1 (_ #(#(#(#(#(#(#(#(#<directory ?> ?) ?) ?) ?) ?) ?) ?) ?))
In unknown file:
0 (string-split #<eof> #\nul)

ERROR: In procedure string-split:
In procedure string-split: Wrong type argument in position 1 (expecting
string): #<eof>
[end output block]

To investigate, I took a look at 'setup-environment':

[lots of exports]
export formula of the (reconfiguration) day=$US dollar/€euro = 1.11

There are at least two issues here:

* The variable 'formula of the (reconfiguration) day' was not quoted.

I don't know how to do this in bash though, if it is even possible
at all. If it turns out not to be possible, I'd prefer that to
be mentioned by a nice error message, e.g. "environment variable
names may not contain FOOs" or "environment variable names must
consist of BARs".

* The value '$US dollar/€euro' was not quoted, so bash would
expand $US (to the empty string, since $US is not defined).

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYjZFfBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7iDtAP4qk6u/F3zjHt7YxwfdZtiw8JMo
SdL/cgOOSXil9GyOZwEA/fCRGd+rZcCj/ic3zS/+ETcnDCdtyjUDUeHWVmpsEwA=
=7A3p
-----END PGP SIGNATURE-----


L
L
Ludovic Courtès wrote on 7 Apr 2022 09:46
control message for bug #54469
(address . control@debbugs.gnu.org)
87ee28et9u.fsf@gnu.org
severity 54469 important
quit
L
L
Ludovic Courtès wrote on 13 Jul 2022 16:13
Re: bug#54469: home-environment-variables-service-type does not quote things
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 54469@debbugs.gnu.org)
87v8s08v3n.fsf@gnu.org
Hi,

Maxime Devos <maximedevos@telenet.be> skribis:

Toggle quote (14 lines)
> (use-modules (gnu home) (gnu packages) (gnu home services)
> (gnu services) (guix gexp) (gnu home services shells))
>
> (define formula-of-the-day
> ;; TODO: add some more formulae, randomise
> "$US dollar/€euro = 1.11")
>
> (home-environment
> (packages '())
> (services
> (list (simple-service 'extra-environment-variables
> home-environment-variables-service-type
> `(("formula of the (reconfiguration) day" . ,formula-of-the-day))))))

Fixed in af4c103595a725194318f40fc5aba110772ff417… except for checking
the name of the variable.

I guess we should stick to the grammar for “names” that Bash defines
(info "(bash) Definitions") and error out if the variable name doesn’t
comply?

Ludo’.
M
M
Maxime Devos wrote on 21 Jul 2022 05:30
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 54469@debbugs.gnu.org)
2e23d60c-f4cb-b5a0-6067-c01ef18eea19@telenet.be
On 14-07-2022 01:13, Ludovic Courtès wrote:
Toggle quote (7 lines)
> [...]
> Fixed in af4c103595a725194318f40fc5aba110772ff417… except for checking
> the name of the variable.
>
> I guess we should stick to the grammar for “names” that Bash defines
> (info "(bash) Definitions") and error out if the variable name doesn’t
> comply?
Yes -- supporting arbitrary variable names would be nice but that just
sticking to those (and erroring out) should be good enough in practice.
FWIW, (guix search-paths) also does export this="that", so it looks like
the quoting and name checking could be generalised a little to also
extend to etc/profile.
Greetings,
Maxime.
Attachment: OpenPGP_signature
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 54469@patchwise.org

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