unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#54469: home-environment-variables-service-type does not quote things
@ 2022-03-19 21:04 Maxime Devos
  2022-07-13 23:13 ` Ludovic Courtès
  0 siblings, 1 reply; 3+ messages in thread
From: Maxime Devos @ 2022-03-19 21:04 UTC (permalink / raw)
  To: 54469

[-- Attachment #1: Type: text/plain, Size: 2828 bytes --]

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.

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#54469: home-environment-variables-service-type does not quote things
  2022-03-19 21:04 bug#54469: home-environment-variables-service-type does not quote things Maxime Devos
@ 2022-07-13 23:13 ` Ludovic Courtès
  2022-07-21 12:30   ` Maxime Devos
  0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2022-07-13 23:13 UTC (permalink / raw)
  To: Maxime Devos; +Cc: 54469

Hi,

Maxime Devos <maximedevos@telenet.be> skribis:

> (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’.




^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#54469: home-environment-variables-service-type does not quote things
  2022-07-13 23:13 ` Ludovic Courtès
@ 2022-07-21 12:30   ` Maxime Devos
  0 siblings, 0 replies; 3+ messages in thread
From: Maxime Devos @ 2022-07-21 12:30 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 54469


[-- Attachment #1.1.1: Type: text/plain, Size: 672 bytes --]


On 14-07-2022 01:13, Ludovic Courtès wrote:
> [...]
> 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 #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 929 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-07-21 12:42 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-19 21:04 bug#54469: home-environment-variables-service-type does not quote things Maxime Devos
2022-07-13 23:13 ` Ludovic Courtès
2022-07-21 12:30   ` Maxime Devos

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).