[email protected] (Ludovic Courtès) writes: > Hello, > > Zachary Kanfer <[email protected]> skribis: > >> Running `guix package -m` on a file with this line `(list icedtea-2.6 >> "jdk")` gives an error "In procedure module-lookup: Unbound variable: >> icedtea-2.6". >> >> I get the same error for the following lines: >> >> `(list icedtea-2.6.6 "jdk")` >> `(list [email protected] "jdk")` >> >> `guix package -s icedtea` reports that there is a version 2.6.6. How do I >> specify this in a manifest file? Thanks. > > You should use ‘specification->package’ as discussed at > <https://www.gnu.org/software/guix/manual/html_node/Using-the-Configuration-System.html#index-specification_002d_003epackage>. > > The ‘specification->package’ procedure takes a spec like those you’d > write on the ‘guix package -i’ command line, and returns the > corresponding package. ‘specification->package+output’ works similarly > but also returns the specified output (the part that comes after the > colon). > > So your manifest would look something like: > > (use-modules (gnu)) > > (packages->manifest > (map (compose list specification->package+output) > '("[email protected]:jdk" "emacs" "vim" …))) > > HTH! > > Ludo’.
Just for fun, I tried running some commands in a REPL. I wanted to find out why the "list" procedure was being used here. What I saw was this: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (specification->package+output "[email protected]:jdk") $6 = #<package [email protected] gnu/packages/java.scm:347 39a6000> $7 = "jdk" scheme@(guile-user)> (list (specification->package+output "[email protected]:jdk")) $8 = (#<package [email protected] gnu/packages/java.scm:347 39a6000>) scheme@(guile-user)> (map (compose list specification->package+output) '("[email protected]:jdk")) $9 = ((#<package [email protected] gnu/packages/java.scm:347 39a6000> "jdk")) scheme@(guile-user)> --8<---------------cut here---------------end--------------->8--- Why does the string "jdk" appear in $9 but not in $8? It looks like the list procedure ignored the second value (the "jdk" string) when producing $8, but not when producing $9. Is that true? Why? -- Chris
signature.asc
Description: PGP signature
