unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Nikita Karetnikov <nikita@karetnikov.org>
Cc: guix-devel@gnu.org
Subject: Re: Proposal: prefetch tarballs in a batch
Date: Fri, 25 Apr 2014 13:51:42 +0200	[thread overview]
Message-ID: <87oazpaapd.fsf@gnu.org> (raw)
In-Reply-To: <871twmo25m.fsf@karetnikov.org> (Nikita Karetnikov's message of "Fri, 25 Apr 2014 01:20:21 +0400")

Nikita Karetnikov <nikita@karetnikov.org> skribis:

> 1. ‘guix prefetch’ tries to configure and build some packages instead of
>    just downloading them.  I tried the following on a machine with the
>    empty store:
>
>    a. Ran ‘guix prefetch hello’.  Some packages were downloaded and
>       built (I gathered those are needed to download the other packages,
>       so I didn’t write down the names.  If I recall correctly, Guile
>       was in that list.)

Yes, by default ‘guile-final’ is used to build derivations (including
download derivations), so that needs to be built before anything else
can be done.  (And that involves building gcc, libc, etc. first.)

>    b. Invoked ‘guix build hello’ without network access.  The command
>       succeeded.  No questions here.
>
>    c. Called ‘guix prefetch emacs’.  These packages were configured and
>       built: pkg-config, libunistring, ncurses, libatomic_ops, patch,
>       tar, xz, gzip, zlib, which, gc, perl, m4, readline, libffi,
>       texinfo, libtool, gmp, libtasn1, nettle, guile, gnutls.
>
>       Are these essential, or is there an error in ‘guix prefetch’?
>       According to the build logs, the install prefix of gmp is
>       ‘/gnu/store/hpaz49xz76p4qmpjc9r33hni1w781y66-gmp-5.1.3’, which
>       doesn’t appear in the lists provided by ‘guix prefetch hello’ and
>       ‘guix prefetch emacs’.  I’m not sure why it’s the case.

Perhaps these were just the prerequisites for ‘guile-final’ no?

> 2. I think it would be nice to output the location of a tarball after
>    running ‘guix prefetch’, but I’m not sure how to get the relevant
>    derivation.  For ‘hello’, it’s neither
>
>      (package-source-derivation store (package-source hello))
>
>    nor
>
>      (package-derivation store hello)
>
>    because the derivation listed in the initial output of ‘guix prefetch
>    hello’ differs.  Of course, it’s possible to filter the list
>    produced by
>
>      (build-derivations
>       store
>       (map (lambda (drv)
>              ;; (format #t "   ~a~%" (derivation-file-name drv))
>              (format #t "   ~a~%" drv)
>              drv)
>            (derivations-to-prefetch
>             store
>             (package-derivation store package)))))
>
>    But it’s error-prone, so I’d rather avoid that.

I don’t understand.  You can do:

--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (derivation->output-path
                       (package-source-derivation s (package-source hello)))
$4 = "/gnu/store/070fnjll8hb3q2l4373bbahh2i1n2qhg-hello-2.9.tar.gz"
--8<---------------cut here---------------end--------------->8---

Isn’t it what you want?

> 3. I’m planning to add ‘--dry-run’, which will simply print the list of
>    needed derivations.

I think this should use ‘show-what-to-build’, as in ‘guix build’ and
other commands, so that it would also show what other derivations need
to be built, such as those for ‘guile-final’.

> What options would you like to see implemented?

Probably all of ‘%standard-build-options’ from (guix scripts build) can
be made available?

Thanks for the nice work!

Ludo’.

  reply	other threads:[~2014-04-25 11:51 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-27 23:25 Proposal: prefetch tarballs in a batch Nikita Karetnikov
2014-03-28 13:23 ` Ludovic Courtès
2014-04-01 23:23   ` Nikita Karetnikov
2014-04-02 12:57     ` Ludovic Courtès
2014-04-02 22:37       ` Nikita Karetnikov
2014-04-03  7:24         ` Ludovic Courtès
2014-04-09 22:29           ` Nikita Karetnikov
2014-04-10  8:21             ` Ludovic Courtès
2014-04-12 20:19               ` Nikita Karetnikov
2014-04-12 22:44                 ` Ludovic Courtès
2014-04-24 21:20                   ` Nikita Karetnikov
2014-04-25 11:51                     ` Ludovic Courtès [this message]
2014-04-25 12:04                     ` Ludovic Courtès
2014-05-06 12:37                       ` Nikita Karetnikov
2014-05-06 20:02                         ` Ludovic Courtès
2014-05-07 23:14                           ` Nikita Karetnikov
2014-05-08 16:35                             ` Ludovic Courtès
2014-05-11 14:52                               ` Nikita Karetnikov
2014-05-11 19:17                                 ` Ludovic Courtès
2014-09-02 21:06                                   ` Ludovic Courtès
2014-09-02 22:05                                     ` Nikita Karetnikov
2014-09-02 21:04                               ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87oazpaapd.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=nikita@karetnikov.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).