From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zachary Kanfer Subject: How do I make a manifest file that installs a specific version of a dependency? Date: Sun, 12 Mar 2017 00:55:01 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a114a804e8c78d6054a823db1 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54537) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cmwTV-00058v-Oo for help-guix@gnu.org; Sun, 12 Mar 2017 00:55:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cmwTU-0003LI-U8 for help-guix@gnu.org; Sun, 12 Mar 2017 00:55:25 -0500 Received: from mail-qk0-x235.google.com ([2607:f8b0:400d:c09::235]:35322) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cmwTU-0003KG-Pb for help-guix@gnu.org; Sun, 12 Mar 2017 00:55:24 -0500 Received: by mail-qk0-x235.google.com with SMTP id v125so199826567qkh.2 for ; Sat, 11 Mar 2017 21:55:23 -0800 (PST) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: help-guix@gnu.org --001a114a804e8c78d6054a823db1 Content-Type: text/plain; charset=UTF-8 In the thread beginning here (https://lists.gnu.org/ archive/html/help-guix/2016-11/msg00000.html), I was given the advice to install icedtea@2.6 and see if that fixes my keystore problem. But I have no idea how to do so with a manifest file. I don't want to run `guix package -i` commands by hand; I want a manifest file. 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 icedtea@2.6.6 "jdk")` `guix package -s icedtea` reports that there is a version 2.6.6. How do I specify this in a manifest file? Thanks. --001a114a804e8c78d6054a823db1 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
In the thread beginning here (https://lists.gnu.org/archive/html/help-guix/2016-= 11/msg00000.html), I was given the advice to install icedtea@2.6 and se= e if that fixes my keystore problem.

But I have no idea how to= do so with a manifest file. I don't want to run `guix package -i` comm= ands by hand; I want a manifest file.

Running `guix package -m= ` on a file with this line `(list icedtea-2.6 "jdk")` gives an er= ror "In procedure module-lookup: Unbound variable: icedtea-2.6".<= br>
I get the same error for the following lines:

`(list ic= edtea-2.6.6 "jdk")`
`(list icedtea@2.6.6 "jdk")`
=
`guix package -s icedtea` reports that there is a version 2.6.6. = How do I specify this in a manifest file? Thanks.
--001a114a804e8c78d6054a823db1-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: How do I make a manifest file that installs a specific version of a dependency? Date: Sun, 12 Mar 2017 22:50:37 +0100 Message-ID: <87shmi17wy.fsf@gnu.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:44433) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnBO0-0003SX-1s for help-guix@gnu.org; Sun, 12 Mar 2017 17:50:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnBNw-0003B7-Vg for help-guix@gnu.org; Sun, 12 Mar 2017 17:50:44 -0400 In-Reply-To: (Zachary Kanfer's message of "Sun, 12 Mar 2017 00:55:01 -0500") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Zachary Kanfer Cc: help-guix@gnu.org Hello, Zachary Kanfer 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 icedtea@2.6.6 "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 =E2=80=98specification->package=E2=80=99 as discussed at . The =E2=80=98specification->package=E2=80=99 procedure takes a spec like th= ose you=E2=80=99d write on the =E2=80=98guix package -i=E2=80=99 command line, and returns the corresponding package. =E2=80=98specification->package+output=E2=80=99 wor= ks 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) '("icedtea@2.6.6:jdk" "emacs" "vim" =E2=80=A6))) HTH! Ludo=E2=80=99. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zachary Kanfer Subject: Re: How do I make a manifest file that installs a specific version of a dependency? Date: Sun, 12 Mar 2017 19:50:07 -0400 Message-ID: References: <87shmi17wy.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a113c5e7264dab8054a914292 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47833) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnDFw-00012T-7j for help-guix@gnu.org; Sun, 12 Mar 2017 19:50:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnDFv-00044t-50 for help-guix@gnu.org; Sun, 12 Mar 2017 19:50:32 -0400 In-Reply-To: <87shmi17wy.fsf@gnu.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= Cc: help-guix@gnu.org --001a113c5e7264dab8054a914292 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thanks for responding. When I run this, I got this error: Directory '/gnu/store/jvj247prbwy1jn20svy4ls5yjscpmiss-xdg-mime-database/share/mime/p= ackages' does not exist! My manifest file only installs racket and icedtea@2.6.6:jdk. If I rerun the same command, I get "nothing to be done". As a side note, is this the commonly recommended way to structure the manifest file? The documentation for `guix package -m` instead says to use `use-package-modules`, and doesn't mention anything about `specification->package+output`. On Sun, Mar 12, 2017 at 5:50 PM, Ludovic Court=C3=A8s wrote: > Hello, > > Zachary Kanfer 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 icedtea@2.6.6 "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 =E2=80=98specification->package=E2=80=99 as discussed at > the-Configuration-System.html#index-specification_002d_003epackage>. > > The =E2=80=98specification->package=E2=80=99 procedure takes a spec like = those you=E2=80=99d > write on the =E2=80=98guix package -i=E2=80=99 command line, and returns = the > corresponding package. =E2=80=98specification->package+output=E2=80=99 w= orks 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) > '("icedtea@2.6.6:jdk" "emacs" "vim" =E2=80=A6))) > > HTH! > > Ludo=E2=80=99. > --001a113c5e7264dab8054a914292 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Thanks for responding. When I run this, I got this er= ror:

Directory '/gnu/store/jvj247prbwy1jn20svy4ls5yjscpmiss-xdg-= mime-database/share/mime/packages' does not exist!

My= manifest file only installs racket and icedtea@2.6.6:jdk. If I rerun the s= ame command, I get "nothing to be done".

= As a side note, is this the commonly recommended way to structure the manif= est file? The documentation for `guix package -m` instead says to use `use-= package-modules`, and doesn't mention anything about `specification->= ;package+output`.

On Sun, Mar 12, 2017 at 5:50 PM, Ludovic Court=C3=A8s <ludo@gnu.org&g= t; wrote:
Hello,

Zachary Kanfer <zkanfer@gmail.com> skribis:

> Running `guix package -m` on a file with this line `(list icedtea-2.6<= br> > "jdk")` gives an error "In procedure module-lookup: Unb= ound variable:
> icedtea-2.6".
>
> I get the same error for the following lines:
>
> `(list icedtea-2.6.6 "jdk")`
> `(list icedtea@2.6.6 "jdk")`
>
> `guix package -s icedtea` reports that there is a version 2.6.6. How d= o I
> specify this in a manifest file? Thanks.

You should use =E2=80=98specification->package=E2=80=99 as discus= sed at
<
https://www.gnu.org/software/guix/manual/ht= ml_node/Using-the-Configuration-System.html#index-specification_0= 02d_003epackage>.

The =E2=80=98specification->package=E2=80=99 procedure takes a spec like= those you=E2=80=99d
write on the =E2=80=98guix package -i=E2=80=99 command line, and returns th= e
corresponding package.=C2=A0 =E2=80=98specification->package+output= =E2=80=99 works similarly
but also returns the specified output (the part that comes after the
colon).

So your manifest would look something like:

=C2=A0 (use-modules (gnu))

=C2=A0 (packages->manifest
=C2=A0 =C2=A0(map (compose list specification->package+output)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 '("icedtea@2.6.6:jdk" "emacs= " "vim" =E2=80=A6)))

HTH!

Ludo=E2=80=99.

--001a113c5e7264dab8054a914292-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Marusich Subject: Re: How do I make a manifest file that installs a specific version of a dependency? Date: Mon, 13 Mar 2017 01:17:36 -0700 Message-ID: <87mvcpy4in.fsf@gmail.com> References: <87shmi17wy.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45249) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnLAp-0005iZ-2n for help-guix@gnu.org; Mon, 13 Mar 2017 04:17:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnLAk-0002Oz-3F for help-guix@gnu.org; Mon, 13 Mar 2017 04:17:47 -0400 In-Reply-To: <87shmi17wy.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Sun, 12 Mar 2017 22:50:37 +0100") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: help-guix@gnu.org, Zachary Kanfer --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Hello, > > Zachary Kanfer 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 icedtea@2.6.6 "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 =E2=80=98specification->package=E2=80=99 as discussed at > . > > The =E2=80=98specification->package=E2=80=99 procedure takes a spec like = those you=E2=80=99d > write on the =E2=80=98guix package -i=E2=80=99 command line, and returns = the > corresponding package. =E2=80=98specification->package+output=E2=80=99 w= orks 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) > '("icedtea@2.6.6:jdk" "emacs" "vim" =E2=80=A6))) > > HTH! > > Ludo=E2=80=99. 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: =2D-8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (specification->package+output "icedtea@2.6.9:jdk") $6 =3D # $7 =3D "jdk" scheme@(guile-user)> (list (specification->package+output "icedtea@2.6.9:jd= k")) $8 =3D (#) scheme@(guile-user)> (map (compose list specification->package+output) '("i= cedtea@2.6.9:jdk")) $9 =3D ((# "jdk")) scheme@(guile-user)> =2D-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? =2D-=20 Chris --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEy/WXVcvn5+/vGD+x3UCaFdgiRp0FAljGVaAACgkQ3UCaFdgi Rp0vZQ/9EkE5ZDjwiWHhZ+phYL9GPi8X3OplK4vrE/A8XxzluZvLALidEnKbTx7O hyNujh4i6/XAcPasK2d+vvR4nMjs5rgceldB26mpdjOnvYY5JFmCRaHkHEWbpklK Cz1y1j+hIsXMfF7gVV5cjwX6N4rmwbAPugRIweInxlgRUif28JznXYoXzjaudFhq M1p5eYNbX2LJW+hMIzWUYmWPUOwKa13vBHDEJhAw5O5QQlEQjNn/dYYwe1tzqe5U g4gN83yKsduDUqQgRaJPD4WJMcioED94era1SW3x8bAXmAtLUDFC2gkXwlfzfKt7 ax77w73vQvYhpnVijb7QrvDprgV6mNshzljCLSwf4ox9QG13hsTIANkx3RGvezAI BeI2dYIzga78tzt6b7CyaQV3gqJWLZiJyArsEwtPY2iDp3b58coDCNyPqJNpzisQ EI6DIcoVkVh8Y8jxmLHF78bgDyaAeiH5srK1Vp4NJpeEA4lF6pnrPFnwAsJAFfX7 CKWt74L4p2LOrjlOrrokiwFAKfVkAI5BuuLH4SZLt2LioisL5V7xqHc2Pqiam96Z oSg5LcH7nxIwc2uLfSqHqmDzOGxx2R0miOjzj7o9KBzb+KvrMaojqI83XaK/VOwN LVwU2hroZavBUm4IcoghPZA+EUc2Q2JBO8Hh+/1rdEVIBQO0s0M= =TO+I -----END PGP SIGNATURE----- --=-=-=-- From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: How do I make a manifest file that installs a specific version of a dependency? Date: Mon, 13 Mar 2017 09:24:24 +0100 Message-ID: <8737eheg93.fsf@gnu.org> References: <87shmi17wy.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47365) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnLHL-0006kK-1H for help-guix@gnu.org; Mon, 13 Mar 2017 04:24:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnLHH-0005AK-1y for help-guix@gnu.org; Mon, 13 Mar 2017 04:24:30 -0400 In-Reply-To: (Zachary Kanfer's message of "Sun, 12 Mar 2017 19:50:07 -0400") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Zachary Kanfer Cc: help-guix@gnu.org Hi, Zachary Kanfer skribis: > Thanks for responding. When I run this, I got this error: > > Directory > '/gnu/store/jvj247prbwy1jn20svy4ls5yjscpmiss-xdg-mime-database/share/mime= /packages' > does not exist! > > My manifest file only installs racket and icedtea@2.6.6:jdk. If I rerun t= he > same command, I get "nothing to be done". Is this really an error? Does =E2=80=9Cguix package -I=E2=80=9D lists both= Racket and IcedTea as installed? I suspect this message might be a harmless warning from one of the profile hooks, but it=E2=80=99s admittedly confusing. > As a side note, is this the commonly recommended way to structure the > manifest file? The documentation for `guix package -m` instead says to use > `use-package-modules`, and doesn't mention anything about > `specification->package+output`. The documentation has been updated to suggest that: https://git.savannah.gnu.org/cgit/guix.git/commit/?id=3D6cd1059340 (It will show up in the on-line copy when we update it.) Thanks, Ludo=E2=80=99. From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: How do I make a manifest file that installs a specific version of a dependency? Date: Mon, 13 Mar 2017 10:20:03 +0100 Message-ID: <87lgs9a5z0.fsf@gnu.org> References: <87shmi17wy.fsf@gnu.org> <87mvcpy4in.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:35341) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cnM9C-0008Hn-49 for help-guix@gnu.org; Mon, 13 Mar 2017 05:20:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cnM98-00063z-3G for help-guix@gnu.org; Mon, 13 Mar 2017 05:20:10 -0400 In-Reply-To: <87mvcpy4in.fsf@gmail.com> (Chris Marusich's message of "Mon, 13 Mar 2017 01:17:36 -0700") List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Chris Marusich Cc: help-guix@gnu.org, Zachary Kanfer Chris Marusich skribis: > 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: > > scheme@(guile-user)> (specification->package+output "icedtea@2.6.9:jdk") > $6 =3D # > $7 =3D "jdk" > scheme@(guile-user)> (list (specification->package+output "icedtea@2.6.9:= jdk")) > $8 =3D (#) > scheme@(guile-user)> (map (compose list specification->package+output) '(= "icedtea@2.6.9:jdk")) > $9 =3D ((# "jdk"= )) > scheme@(guile-user)> > > 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? =E2=80=98specification->package+output=E2=80=99 returns two values; in Sche= me that really means returning two values, and this is completely different from returning a two-element list or anything like that (info "(guile) Multiple Values"). Guile automatically truncates multiple-value returns: if a procedure returns, say, two values but its continuation expects only one, then the second return value is dismissed. Like this: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (values 1 2) $2 =3D 1 $3 =3D 2 ;the REPL lists all the return values scheme@(guile-user)> (list (values 1 2)) $4 =3D (1) ;continuation of the =E2=80=98values=E2=80=99 form expects one = value --8<---------------cut here---------------end--------------->8--- =E2=80=98call-with-values=E2=80=99 is the primitive that allows you to retr= ieve all the return values: --8<---------------cut here---------------start------------->8--- scheme@(guile-user)> (call-with-values (lambda () (values 1 2)) list) ;continuation expects any number of values $5 =3D (1 2) scheme@(guile-user)> (call-with-values (lambda () (values 1 2)) (lambda (a b) ;continuation expects two values (list b a))) $6 =3D (2 1) --8<---------------cut here---------------end--------------->8--- I must say that this is more complicated than I=E2=80=99d like in the case = of =E2=80=98specification->package+output=E2=80=99. HTH! Ludo=E2=80=99.