[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#38408] [PATCH v9 2/8] guix: import: crate: Use semver to resovle mo
From: |
Efraim Flashner |
Subject: |
[bug#38408] [PATCH v9 2/8] guix: import: crate: Use semver to resovle module versions |
Date: |
Mon, 17 Feb 2020 16:57:59 +0200 |
On Mon, Feb 17, 2020 at 03:35:20PM +0100, Ludovic Courtès wrote:
> Hi Martin & Efraim,
>
> Thinking more about it, I’m not sure I fully understand why we need to
> pay attention to semver here:
>
> Martin Becze <address@hidden> skribis:
>
> > +(define* (crate->guix-package crate-name #:key version #:allow-other-keys)
> > "Fetch the metadata for CRATE-NAME from crates.io, and return the
> > `package' s-expression corresponding to that package, or #f on failure.
> > When VERSION is specified, attempt to fetch that version; otherwise fetch
> > the
> > latest version of CRATE-NAME."
> >
> > + (define (semver-range-contains-string? range version)
> > + (semver-range-contains? (string->semver-range range)
> > + (string->semver version)))
> > +
> > (define (normal-dependency? dependency)
> > - (eq? (crate-dependency-kind dependency) 'normal))
> > + (or (eq? (crate-dependency-kind dependency) 'build)
> > + (eq? (crate-dependency-kind dependency) 'normal)))
> >
> > (define crate
> > (lookup-crate crate-name))
> > @@ -204,21 +218,36 @@ latest version of CRATE-NAME."
> > (or version
> > (crate-latest-version crate)))
> >
> > - (define version*
> > + (define (find-version crate range)
> > + "finds the a vesion of a crate that fulfils the semver <range>"
> > (find (lambda (version)
> > - (string=? (crate-version-number version)
> > - version-number))
> > + (semver-range-contains-string?
> > + range
> > + (crate-version-number version)))
> > (crate-versions crate)))
>
> The reason I wonder is that the HTTP API gives us rather precise
> dependency requirements:
>
> --8<---------------cut here---------------start------------->8---
> scheme@(guix import crate)> (crate-version-dependencies (car (crate-versions
> (lookup-crate "blake2-rfc"))))
> $8 = (#<<crate-dependency> id: "arrayvec" kind: normal requirement: "^0.4.6">
> #<<crate-dependency> id: "constant_time_eq" kind: normal requirement:
> "^0.1.0"> #<<crate-dependency> id: "data-encoding" kind: dev requirement:
> "^2.0.0"> #<<crate-dependency> id: "clippy" kind: normal requirement:
> "^0.0.41">)
> --8<---------------cut here---------------end--------------->8---
>
> In the example above, the importer could “just” fetch version 0.4.6 of
> arrayvec, version 0.1.0 of constant_time_eq, etc., no?
>
> It’s an approximation because the caret (^) means more than just this,
> but hopefully it’s a good approximation.
>
> Am I missing something?
>
> Ludo’.
Here we're looking at a minimum of 0.4.6 for arrayvec. According to
here¹ we'd really want to import 0.4.12, which is the latest 0.4.x
release.
¹ https://crates.io/crates/arrayvec/versions
--
Efraim Flashner <address@hidden> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
signature.asc
Description: PGP signature
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, (continued)
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Ludovic Courtès, 2020/02/20
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/20
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Ludovic Courtès, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Leo Famulari, 2020/02/21
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/23
- [bug#38408] [PATCH v9 3/8] Added Guile-Semver as a dependency to guix, Martin Becze, 2020/02/23
[bug#38408] [PATCH v9 6/8] guix: import: crate: memorize crate->guix-package, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 2/8] guix: import: crate: Use semver to resovle module versions, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 7/8] guix: import: utils: trim patch version from names, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 8/8] guix: import: parametrized importing of dev dependencies, Martin Becze, 2020/02/04
[bug#38408] [PATCH v9 0/8] recursive semver crate importer!, Leo Famulari, 2020/02/20