From: Martin Becze <mjbecze@riseup.net>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 38408@debbugs.gnu.org, Efraim Flashner <efraim@flashner.co.il>,
jsoo1@asu.edu, Leo Famulari <leo@famulari.name>
Subject: [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix
Date: Tue, 24 Mar 2020 10:19:12 -0400 [thread overview]
Message-ID: <34c9958a-2453-601d-574f-9c9d59214b17@riseup.net> (raw)
In-Reply-To: <87mu86njj3.fsf@gnu.org>
Thanks for the feedback Ludo! I will try to get this done today.
On 3/24/20 6:18 AM, Ludovic Courtès wrote:
> Hi Martin & all,
>
> I apologize for taking so long and dropping the ball. Partly that’s
> because this is non-trivial, thanks for working on it, Martin!
>
> Some quick comments:
>
> Martin Becze <mjbecze@riseup.net> skribis:
>
>> From 494f7c874781f64b702e31841c95c95c68fb28fc Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Fri, 21 Feb 2020 10:41:44 -0500
>> Subject: [PATCH v12 8/8] guix: self: Adds guile-semver as a depenedency.
>>
>> * guix/self.scm (compiled-guix) Added guile-semver as a depenedency.
>
> Good.
>
>> From 492db2aed32bb68e50eb43660d5ec3811fdb9a80 Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Sun, 23 Feb 2020 04:27:42 -0500
>> Subject: [PATCH v12 7/8] gnu: Add guile3.0-semver.
>>
>> * gnu/packages/guile-xyz.scm (guile3.0-semver): New variable.
>
> Applied.
>
>> From 2561fbf64e7ea47a0436b3751cbeea0032f8a77b Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Mon, 3 Feb 2020 16:19:49 -0500
>> Subject: [PATCH v12 6/8] import: crate: Parametrized importing of dev
>> dependencies.
>>
>> This changes the behavoir of the recusive crate importer so that it will
>> include importing of development dependencies for the top level package
>> but will not inculded the development dependencies for any other imported
>> package.
>>
>> * guix/import/crate.scm (make-crate-sexp): Add the key BUILD?.
>> (crate->guix-package): Add the key INCLUDE-DEV-DEPS?.
>> (crate-recursive-import): Likewise.
>> * guix/scripts/import/crate.scm (guix-import-crate): Likewise.
>> * tests/crate.scm (cargo-recursive-import): Likewise.
>
> LGTM.
>
>> From cb69a7c4844c68f89b783a1026751ab945fcab5d Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Thu, 30 Jan 2020 11:19:13 -0500
>> Subject: [PATCH v12 5/8] import: utils: Trim patch version from names.
>>
>> This remove the the patch version from input names. For example
>> 'rust-my-crate-1.1.2' now becomes 'rust-my-crate-1.1'
>>
>> * guix/import/utils.scm (package->definition): Trim patch version from
>> generated package names.
>> * tests/crate.scm: (cargo>guix-package): Likewise.
>> (cargo-recursive-import): Likewise.
>
> LGTM.
>
>> From 3f2dbc2a47a2e5e46871fbdeabe951f55d26b557 Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Thu, 30 Jan 2020 11:17:00 -0500
>> Subject: [PATCH v12 4/8] import: crate: Memorize crate->guix-package.
>>
>> This adds memorization to procedures that involve network lookups.
>> 'mem-lookup-crate; is used on every dependency of a package to find
>> it's versions. 'mem-crate->guix-package; is needed becuase
>> 'topological-sort' depduplicates after dependencies have been turned
>> into packages.
>>
>> * guix/import/crate.scm (mem-crate->guix-package): New procedure.
>> (mem-lookup-crate): New procedure.
>
> This should also mention changes to ‘crate-recursive-import’.
>
> Regarding identifiers, please avoid abbreviations (info "(guix)
> Formatting Code").
>
>> +(define mem-lookup-crate (memoize lookup-crate))
>> +
>> (define (crate-version-dependencies version)
>> "Return the list of <crate-dependency> records of VERSION, a
>> <crate-version>."
>> @@ -216,7 +219,7 @@ latest version of CRATE-NAME."
>> (eq? (crate-dependency-kind dependency) 'normal)))
>>
>> (define crate
>> - (lookup-crate crate-name))
>> + (mem-lookup-crate crate-name))
>
> I’d suggest calling ‘mem-lookup-crate’ ‘lookup-crate*’ for instance.
> Can we also make its definition local to ‘crate-version-dependencies’ or
> would that defeat your caching goals?
>
>> (define version-number
>> (or version
>> @@ -238,7 +241,7 @@ latest version of CRATE-NAME."
>> containing pairs of (name version)"
>> (sort (map (lambda (dep)
>> (let* ((name (crate-dependency-id dep))
>> - (crate (lookup-crate name))
>> + (crate (mem-lookup-crate name))
>> (req (crate-dependency-requirement dep))
>> (ver (find-version crate req)))
>> (list name
>> @@ -265,9 +268,11 @@ latest version of CRATE-NAME."
>> string->license))
>> cargo-inputs))))
>>
>> +(define mem-crate->guix-package (memoize crate->guix-package))
>> +
>> (define* (crate-recursive-import crate-name #:key version)
>> (recursive-import crate-name
>> - #:repo->guix-package crate->guix-package
>> + #:repo->guix-package mem-crate->guix-package
>
> Please make ‘mem-crate->guix-package’ local to ‘crate-recursive-import’
> and call it ‘crate->guix-package*’ for instance.
>
> (Memoization should always be used as a last resort: it’s a neat hack,
> but it’s a hack. :-) In particular, it has the problem that its cache
> cannot be easily invalidated. That said, I realize that other importers
> do this already, so that’s OK.)
>
>> From 81056961d065e197fe8f1f2096c858776debf485 Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Thu, 30 Jan 2020 10:52:28 -0500
>> Subject: [PATCH v12 3/8] import: crate: Deduplicate dependencies.
>>
>> * guix/import/crate.scm (crate-version-dependencies): Deduplicate crate dependencies.
>
> Applied.
>
>> From 98129432b4d746fd2a12a005ebe2d36e8ee0f600 Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Tue, 4 Feb 2020 03:50:48 -0500
>> Subject: [PATCH v12 2/8] import: crate: Use guile-semver to resovle module
> ^^
> Typo. :-)
>
>
>> * guix/import/crate.scm (make-crate-sexp): Added '#:skip-build?' to build
>> system args. Pass a VERSION argument to 'cargo-inputs'. Move
>> 'package-definition' from scripts/import/crate.scm to here.
>> (crate->guix-package): Use guile-semver to resolve the correct module versions.
>> (crate-name->package-name): Reuse the procedure 'guix-name' instead of
>> duplicating its logic.
>> (module) Added guile-semver as a soft dependency.
>> * guix/import/utils.scm (package-names->package-inputs): Implemented
>> handling of (name version) pairs.
>> * guix/scripts/import/crate.scm (guix-import-crate): Move
>> 'package-definition' from here to guix/import/crate.scm.
>> * tests/crate.scm: (recursuve-import) Added version data to the test.
>
> [...]
>
>> + (define (format-inputs inputs)
>> + (map
>> + (match-lambda
>> + ((name version) (list (crate-name->package-name name)
>> + (version-major+minor version))))
>> + inputs))
>
> Nitpick: please format as:
>
> (map (match-lambda
> ((name version)
> (list …)))
> inputs)
>
>> +(define* (crate->guix-package crate-name #:key version #:allow-other-keys)
>
> Please avoid #:allow-other-keys. In general, it’s best to know exactly
> what parameters a procedure expects and to benefit from compile-time
> warnings when we make a mistake; thus, #:allow-other-keys should only be
> used as a last resort.
>
>> + (define (find-version crate range)
>> + "finds the a vesion of a crate that fulfils the semver <range>"
> ^ ^
> Typos.
> For inner procedures, please write a comment instead of a docstring.
>
>> From 356bf29011097367a6e95dd45e71050db8bfa8e4 Mon Sep 17 00:00:00 2001
>> From: Martin Becze <mjbecze@riseup.net>
>> Date: Tue, 4 Feb 2020 07:18:18 -0500
>> Subject: [PATCH v12 1/8] import: utils: 'recursive-import' accepts an optional
>> version parameter.
>>
>> This adds a key VERSION to 'recursive-import' and move the paramter REPO to a
>> key. This also changes all the things that rely on 'recursive-import'
>>
>> * guix/import/utils.scm (recursive-import): Add the VERSION key. Make REPO a
>> key.
>> (package->definition): Added optional 'append-version?'.
>> * guix/import/cran.scm (cran->guix-package): Change the REPO parameter to a key.
>> (cran-recursive-import): Likewise.
>> * guix/import/elpa.scm (elpa->guix-pakcage): Likewise.
>> (elpa-recursive-import): Likewise.
>> * guix/import/gem.scm (gem->guix-package): Likewise.
>> (recursive-import): Likewise.
>> * guix/import/opam.scm (opam-recurive-import): Likewise.
>> * guix/import/pypi.scm (pypi-recursive-import): Likewise.
>> * guix/import/stackage.scm (stackage-recursive-import): Likewise.
>> * guix/scripts/import/cran.scm: (guix-import-cran) Likewise.
>> * guix/scripts/import/elpa.scm: (guix-import-elpa) Likewise.
>> * tests/elpa.scm: (eval-test-with-elpa) Likewise.
>> * tests/import-utils.scm Likewise.
>
> [...]
>
>> (define cran->guix-package
>> (memoize
>> - (lambda* (package-name #:optional (repo 'cran))
>> + (lambda* (package-name #:key (repo 'cran) #:allow-other-keys)
>
> I would change #:allow-other-keys to just ‘version’ (a #:version
> parameter) in all the importers.
>
> It does mean that #:version would be ignored by those importers, so
> perhaps we can add a TODO comment, but eventually someone might
> implement it.
>
> If you want you can resubmit patches #1 and #2 to begin with.
>
> Thank you!
>
> Ludo’.
>
next prev parent reply other threads:[~2020-03-24 14:20 UTC|newest]
Thread overview: 107+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-10 21:39 [bug#44560] [PATCH v16 0/6] New take on: Semantic version aware recursive importer for crates Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 1/6] import: utils: 'recursive-import' accepts an optional version parameter Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 2/6] guix: self: Add guile-semver as a depenedency Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 3/6] import: crate: Use guile-semver to resolve module versions Hartmut Goebel
2020-11-10 22:13 ` Hartmut Goebel
2019-11-28 0:13 ` [bug#38408] [PATCH 0/3] (WIP) Semantic version aware recusive importer for crates Martin Becze
2019-11-28 0:16 ` [bug#38408] [PATCH 1/3] gnu: added new function, find-packages-by-name*/direct Martin Becze
2019-11-28 0:16 ` [bug#38408] [PATCH 2/3] gnu: added new procedure, recusive-import-semver Martin Becze
2019-11-28 0:16 ` [bug#38408] [PATCH 3/3] Rewrote some of guix/import/crate.scm to use recursive-import-semver and updated script and test Martin Becze
2019-11-30 16:36 ` Martin Becze
2019-12-01 9:00 ` Efraim Flashner
2019-12-05 20:05 ` [bug#38408] [PATCH v2 0/5] Semantic version aware recusive importer for crates Martin Becze
2019-12-05 20:05 ` [bug#38408] [PATCH v2 1/5] gnu: added new function, find-packages-by-name*/direct Martin Becze
2019-12-05 20:05 ` [bug#38408] [PATCH v2 2/5] gnu: added new procedure, recusive-import-semver Martin Becze
2019-12-05 20:05 ` [bug#38408] [PATCH v2 3/5] Rewrote some of guix/import/crate.scm to use recursive-import-semver and updated script and test Martin Becze
2019-12-05 20:05 ` [bug#38408] [PATCH v2 4/5] added "#:skip-build? #t" to the output of (make-crate-sexp). Most the the packages imported will be libaries and won't need to build. The top level package will build them though Martin Becze
2019-12-05 20:05 ` [bug#38408] [PATCH v2 5/5] guix: crate: Depublicated build and normal dependencies Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 0/5] Semantic version aware recusive importer for crates Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 1/5] gnu: added new function, find-packages-by-name*/direct Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 2/5] gnu: added new procedure, recusive-import-semver Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 3/5] Rewrote some of guix/import/crate.scm to use recursive-import-semver and updated script and test Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 4/5] added "#:skip-build? #t" to the output of (make-crate-sexp). Most the the packages imported will be libaries and won't need to build. The top level package will build them though Martin Becze
2019-12-06 18:21 ` [bug#38408] [PATCH v3 5/5] guix: crate: Depublicated dependencies Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 0/6] Semantic version aware recusive importer for crates Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 1/6] gnu: added new function, find-packages-by-name*/direct Martin Becze
2019-12-19 22:00 ` Ludovic Courtès
2019-12-20 18:37 ` Martin Becze
2019-12-27 18:38 ` Ludovic Courtès
2020-01-18 16:40 ` [bug#38408] [PATCH v6] Semantic version aware recusive importer for crates Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 2/6] gnu: added new procedure, recusive-import-semver Martin Becze
2019-12-19 22:07 ` Ludovic Courtès
2019-12-20 18:46 ` Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 3/6] Rewrote some of guix/import/crate.scm to use recursive-import-semver and updated script and test Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 4/6] added "#:skip-build? #t" to the output of (make-crate-sexp). Most the the packages imported will be libaries and won't need to build. The top level package will build them though Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 5/6] guix: crate: Depublicated dependencies Martin Becze
2019-12-10 19:23 ` [bug#38408] [PATCH v4 6/6] guix: import: recursive-import-semver: allow the range of a package to be specified when begining import Martin Becze
2019-12-16 23:30 ` [bug#38408] Rewrote recursive-import-semver based on topological-sort Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 0/8] recursive semver crate importer! Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 1/8] guix: import: (recursive-import) Allow for version numbers Martin Becze
2020-02-17 10:03 ` Efraim Flashner
2020-02-04 12:18 ` [bug#38408] [PATCH v9 2/8] guix: import: crate: Use semver to resovle module versions Martin Becze
2020-02-17 14:35 ` Ludovic Courtès
2020-02-17 14:57 ` Efraim Flashner
2020-02-17 15:37 ` Ludovic Courtès
2020-02-18 8:56 ` Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix Martin Becze
2020-02-17 10:03 ` Efraim Flashner
2020-02-17 14:36 ` Ludovic Courtès
2020-02-18 9:30 ` Martin Becze
2020-02-20 9:40 ` Ludovic Courtès
2020-02-20 16:54 ` Martin Becze
2020-02-21 9:01 ` Ludovic Courtès
2020-02-21 16:25 ` Martin Becze
2020-02-21 16:27 ` Leo Famulari
2020-02-23 20:34 ` Martin Becze
2020-02-23 21:05 ` Martin Becze
2020-03-11 20:20 ` Martin Becze
2020-03-21 18:35 ` Martin Becze
2020-03-22 19:26 ` Leo Famulari
2020-03-22 20:10 ` Leo Famulari
2020-03-23 9:50 ` Martin Becze
2020-03-23 16:28 ` Martin Becze
2020-03-24 10:18 ` Ludovic Courtès
2020-03-24 14:19 ` Martin Becze [this message]
2020-03-24 19:00 ` Martin Becze
2020-04-12 15:07 ` Martin Becze
2020-04-12 16:59 ` Ludovic Courtès
2020-04-17 14:57 ` Martin Becze
2020-04-29 19:50 ` Martin Becze
2020-04-29 19:51 ` Martin Becze
2020-05-08 19:57 ` Martin Becze
2020-08-18 9:44 ` Martin Becze
2020-07-05 0:23 ` Jakub Kądziołka
2020-02-04 12:18 ` [bug#38408] [PATCH v9 4/8] guix: import: utils: allow generation of inputs to be version aware Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 5/8] guix: import: crate: deduplicate dependencies Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 6/8] guix: import: crate: memorize crate->guix-package Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 7/8] guix: import: utils: trim patch version from names Martin Becze
2020-02-04 12:18 ` [bug#38408] [PATCH v9 8/8] guix: import: parametrized importing of dev dependencies Martin Becze
2020-02-20 18:53 ` [bug#38408] [PATCH v9 0/8] recursive semver crate importer! Leo Famulari
2020-02-21 8:35 ` Martin Becze
2020-02-21 12:15 ` Efraim Flashner
2020-02-21 16:29 ` Martin Becze
2020-11-07 22:19 ` [bug#38408] [PATCH 0/3] (WIP) Semantic version aware recusive importer for crates Hartmut Goebel
2020-11-07 22:35 ` Marius Bakke
2020-11-09 17:15 ` Hartmut Goebel
2020-11-09 17:27 ` Nicolas Goaziou
2020-11-11 15:06 ` [bug#38408] [PATCH v16 3/6] import: crate: Use guile-semver to resolve module versions Timothy Sample
2020-11-16 19:07 ` [bug#44694] [PATCH v17 0/8] New take continued: Semantic version aware recursive Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 1/8] guix: self: Add guile-semver as a depenedency Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 2/8] import: utils: 'recursive-import' accepts an optional version parameter Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 3/8] import: crate: Use guile-semver to resolve module versions Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 4/8] import: crate: Memorize crate->guix-package Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 5/8] import: crate: Parameterized importing of dev dependencies Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 6/8] import: utils: Trim patch version from names Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 7/8] import: crate: Trim version for names after left-most non-zero part Hartmut Goebel
2020-11-16 19:07 ` [bug#38408] [PATCH v17 8/8] import: crate: Use existing package satisfying semver requirement Hartmut Goebel
2020-11-17 21:54 ` [bug#38408] [PATCH v17 0/8] New take continued: Semantic version aware recursive Martin Becze
2020-12-02 21:13 ` bug#38408: " Hartmut Goebel
2020-12-02 21:48 ` [bug#38408] " Leo Famulari
2020-11-17 21:43 ` [bug#38408] [PATCH v16 3/6] import: crate: Use guile-semver to resolve module versions Martin Becze
2020-11-17 21:51 ` Martin Becze
2020-11-18 7:56 ` Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 4/6] import: crate: Memorize crate->guix-package Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 5/6] import: utils: Trim patch version from names Hartmut Goebel
2020-11-10 21:39 ` [bug#38408] [PATCH v16 6/6] import: crate: Parameterized importing of dev dependencies Hartmut Goebel
2020-11-10 22:21 ` Hartmut Goebel
2020-11-10 22:24 ` [bug#38408] [PATCH v16 0/6] New take on: Semantic version aware recursive importer for crates 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=34c9958a-2453-601d-574f-9c9d59214b17@riseup.net \
--to=mjbecze@riseup.net \
--cc=38408@debbugs.gnu.org \
--cc=efraim@flashner.co.il \
--cc=jsoo1@asu.edu \
--cc=leo@famulari.name \
--cc=ludo@gnu.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).