unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: Hartmut Goebel <h.goebel@crazy-compilers.com>
Cc: 42180@debbugs.gnu.org, 51061@debbugs.gnu.org
Subject: [bug#42180] bug#51061: [PATCH v2 01/23] guix: Add extracting-download.
Date: Thu, 07 Oct 2021 23:55:00 +0200	[thread overview]
Message-ID: <877deoa4az.fsf@gnu.org> (raw)
In-Reply-To: <626e4718c45c95a7278460f132bd38e08835e9f4.1633533541.git.h.goebel@crazy-compilers.com> (Hartmut Goebel's message of "Wed, 6 Oct 2021 17:20:19 +0200")

Hi Hartmut,

Hartmut Goebel <h.goebel@crazy-compilers.com> skribis:

> * guix/extracting-download.scm: New file
> * Makefile.am (MODULES): Add it.

I see you already pushed this change, but AFAICS it hasn’t seen any real
review—not great.  We don’t commit the whole project to supporting new
APIs at this level without first having collectively looked into them.

I’ll make some quick comments for now.  You might consider reverting to
leave people enough time to comment without pressure.

First, could you explain the rationale and use cases?

I can imagine reasons to do it this way, but also reasons to not do it
this way.

[...]

> +++ b/guix/extracting-download.scm
> @@ -0,0 +1,179 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
> +;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org>
> +;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
> +;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>

This many people?  :-)

> +(define* (http-fetch/extract url filename-to-extract hash-algo hash
> +                    #:optional name
> +                    #:key (system (%current-system)) (guile (default-guile)))

Why ‘http-fetch’ when we have a generic ‘url-fetch’?

We’d rather like to see ‘url-fetch/extract’, and it should be expressed
in ~10 lines around (@ (guix download) url-fetch).

> +  "Return a fixed-output derivation that fetches an archive at URL, and
> +extracts FILE_TO_EXTRACT from the archive.  The FILE_TO_EXTRACT is expected to
> +have hash HASH of type HASH-ALGO (a symbol).  By default, the file name is the
> +base name of URL; optionally, NAME can specify a different file name."
> +  (define file-name
> +    (match url
> +      ((head _ ...)
> +       (basename head))
> +      (_
> +       (basename url))))
> +
> +  (define guile-zlib
> +    (module-ref (resolve-interface '(gnu packages guile)) 'guile-zlib))
> +
> +  (define guile-json
> +    (module-ref (resolve-interface '(gnu packages guile)) 'guile-json-4))
> +
> +  (define gnutls
> +    (module-ref (resolve-interface '(gnu packages tls)) 'gnutls))
> +
> +  (define inputs
> +    `(("tar" ,(module-ref (resolve-interface '(gnu packages base))
> +                          'tar))))
> +
> +  (define config.scm
> +    (scheme-file "config.scm"
> +                 #~(begin
> +                     (define-module (guix config)
> +                       #:export (%system))
> +
> +                     (define %system
> +                       #$(%current-system)))))
> +
> +  (define modules
> +    (cons `((guix config) => ,config.scm)
> +          (delete '(guix config)
> +                  (source-module-closure '((guix build download)
> +                                           (guix build utils)
> +                                           (guix utils)
> +                                           (web uri))))))
> +
> +  (define build
> +    (with-imported-modules modules
> +      (with-extensions (list guile-json gnutls ;for (guix swh)
> +                             guile-zlib)

This is really problematic: this code imports a ton of modules from the
host side.  (guix utils) is typically never imported on the build side
because it pulls in everything.  (web uri) must not be imported because
it’s part of Guile (I think there’s a warning for this).  All the
boilerplate above is because we’re importing the world.

> +(define* (download-to-store/extract store url filename-to-extract
> +                                    #:optional (name (basename url))
> +                                    #:key (log (current-error-port))
> +                                    (verify-certificate? #t))

What about this one?  What’s the intended use case?

Last, we’ve put a lot of effort over the years in properly documenting
things, like:

  https://guix.gnu.org/manual/en/html_node/origin-Reference.html#index-url_002dfetch

This should be held to the same standards.

Thanks,
Ludo’.




  parent reply	other threads:[~2021-10-07 21:56 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-03 17:40 [bug#42180] [PATCH 00/22] Add extracting download, importer for hex.pm and rebar3 build-system for Erlang Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 01/22] guix: Add extracting-download Hartmut Goebel
2020-07-06  8:08   ` zimoun
2020-07-06  8:15     ` Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 02/22] guix: Add importer for hex.pm Hartmut Goebel
2020-11-02 14:18   ` [bug#42180] [PATCH 0/1] " pukkamustard
2020-11-02 14:18     ` [bug#42180] [PATCH 1/1] " pukkamustard
2020-07-03 17:43 ` [bug#42180] [PATCH 03/22] guix: Add rebar3 build-system Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 04/22] gnu: Add erlang-cf Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 05/22] gnu: Add erlang-certifi Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 06/22] gnu: Add erlang-erlware-commons Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 07/22] gnu: Add erlang-cth-readable Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 08/22] gnu: Add erlang-bbmustache Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 09/22] gnu: Add erlang-getopt Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 10/22] gnu: Add erlang-eunit-formatters Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 11/22] gnu: Add erlang-providers Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 12/22] gnu: Add erlang-parse-trans Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 13/22] gnu: Add erlang-hex-core Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 14/22] gnu: Add erlang-ssl-verify-fun Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 15/22] gnu: Add erlang-relx Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 16/22] gnu: Add rebar3 Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 17/22] gnu: Add erlang-edown Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 18/22] gnu: Add erlang-jsone Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 19/22] gnu: Add erlang-proper Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 20/22] gnu: Add erlang-rebar3-raw-deps Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 21/22] gnu: Add erlang-rebar3-git-vsn Hartmut Goebel
2020-07-03 17:43 ` [bug#42180] [PATCH 22/22] gnu: Add erlang-rebar3-proper Hartmut Goebel
     [not found] ` <handler.42180.B.159379803013215.ack@debbugs.gnu.org>
2021-01-22 20:20   ` [bug#42180] Acknowledgement ([PATCH 00/22] Add extracting download, importer for hex.pm and rebar3 build-system for Erlang) Hartmut Goebel
2021-10-06 15:20 ` [bug#42180] [PATCH v2 01/23] guix: Add extracting-download Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 02/23] guix: Add importer for hex.pm Hartmut Goebel
2021-10-06 19:37     ` Maxime Devos
2021-10-06 20:23       ` Hartmut Goebel
2021-10-06 19:38     ` [bug#42180] [bug#51061] " Maxime Devos
2021-10-06 20:25       ` Hartmut Goebel
2021-10-07 22:01     ` [bug#42180] bug#51061: [PATCH v2 01/23] guix: Add extracting-download Ludovic Courtès
2021-10-06 15:20   ` [bug#42180] [PATCH v2 03/23] guix: Add rebar3 build-system Hartmut Goebel
2021-10-06 18:56     ` [bug#51061] " Maxime Devos
2021-10-06 20:27       ` [bug#42180] " Hartmut Goebel
2021-10-06 21:25         ` Maxime Devos
2021-10-06 21:36           ` Hartmut Goebel
2021-10-06 21:47             ` [bug#42180] " Maxime Devos
2021-10-07 20:57               ` Hartmut Goebel
2021-10-07 22:20                 ` [bug#51061] [PATCH v2 01/23] guix: Add extracting-download Ludovic Courtès
2021-10-08  9:49                   ` Hartmut Goebel
2021-10-09 13:16                     ` [bug#42180] bug#51061: " Ludovic Courtès
2021-10-08 20:25                   ` [bug#51061] " Hartmut Goebel
2021-10-07 22:09     ` [bug#42180] bug#51061: " Ludovic Courtès
2021-10-06 15:20   ` [bug#42180] [PATCH v2 04/23] gnu: Add erlang-cf Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 05/23] gnu: Add erlang-certifi Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 06/23] gnu: Add erlang-erlware-commons Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 07/23] gnu: Add erlang-cth-readable Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 08/23] gnu: Add erlang-bbmustache Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 09/23] gnu: Add erlang-getopt Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 10/23] gnu: Add erlang-eunit-formatters Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 11/23] gnu: Add erlang-providers Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 12/23] gnu: Add erlang-parse-trans Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 13/23] gnu: Add erlang-hex-core Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 14/23] gnu: Add erlang-ssl-verify-fun Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 15/23] gnu: Add erlang-relx Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 16/23] gnu: Add rebar3 Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 17/23] gnu: Add erlang-edown Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 18/23] gnu: Add erlang-jsone Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 19/23] gnu: Add erlang-proper Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 20/23] gnu: Add erlang-rebar3-raw-deps Hartmut Goebel
2021-10-06 15:20   ` [bug#42180] [PATCH v2 21/23] gnu: Add erlang-rebar3-git-vsn Hartmut Goebel
2021-10-06 18:43     ` Maxime Devos
2021-10-06 21:09       ` Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 22/23] gnu: Add erlang-rebar3-proper Hartmut Goebel
2021-10-06 15:20   ` [bug#51061] [PATCH v2 23/23] gnu: Add erlang-covertool Hartmut Goebel
2021-10-07 21:55   ` Ludovic Courtès [this message]
2021-10-07 22:25     ` [bug#51061] [bug#42180] bug#51061: [PATCH v2 01/23] guix: Add extracting-download Tobias Geerinckx-Rice via Guix-patches via
2021-10-07 22:34       ` Tobias Geerinckx-Rice via Guix-patches via
2021-10-08  9:10         ` Hartmut Goebel
2021-10-08  9:39           ` Hartmut Goebel
2021-10-08 21:00             ` Tobias Geerinckx-Rice via Guix-patches via
2021-10-08  5:49     ` [bug#51061] " Maxime Devos
2021-10-08  7:05       ` [bug#51061] " Ludovic Courtès
2021-10-07 20:58 ` bug#42180: (no subject) Hartmut Goebel

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=877deoa4az.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=42180@debbugs.gnu.org \
    --cc=51061@debbugs.gnu.org \
    --cc=h.goebel@crazy-compilers.com \
    /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).