Package: guix-patches;
Reported by: Efraim Flashner <efraim <at> flashner.co.il>
Date: Mon, 9 Oct 2023 12:32:02 UTC
Severity: normal
Tags: patch
Done: Efraim Flashner <efraim <at> flashner.co.il>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Efraim Flashner <efraim <at> flashner.co.il> To: 66421 <at> debbugs.gnu.org Cc: Efraim Flashner <efraim <at> flashner.co.il>, Efraim Flashner <efraim <at> flashner.co.il> Subject: [bug#66421] [PATCH] guix: import: Don't import yanked rust crates. Date: Mon, 9 Oct 2023 15:28:01 +0300
* guix/import/crate.scm (<crate-version>): Add yanked? field. (crate->guix-package)[find-crate-version]: Remove versions which have been yanked. * tests/crate.scm: Adjust tests for new yanked? field. --- Before this patch `guix import core-foundation-sys` would give 0.8.4 (the listed max version), `guix import core-foundation-sys <at> 0.8` would give 0.8.5 (which was yanked but was higher than 0.8.4). Similarly, before `guix import core-foundation-sys <at> 0.7` gave 0.7.2 and after 0.7.0. guix/import/crate.scm | 7 ++++++- tests/crate.scm | 40 +++++++++++++++++++++++++++------------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/guix/import/crate.scm b/guix/import/crate.scm index 6e10ebb5d4..a7eafb023e 100644 --- a/guix/import/crate.scm +++ b/guix/import/crate.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2021 Nicolas Goaziou <mail <at> nicolasgoaziou.fr> ;;; Copyright © 2022 Hartmut Goebel <h.goebel <at> crazy-compilers.com> ;;; Copyright © 2023 Simon Tournier <zimon.toutoune <at> gmail.com> +;;; Copyright © 2023 Efraim Flashner <efraim <at> flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -82,6 +83,7 @@ (define-json-mapping <crate-version> make-crate-version crate-version? (match-lambda ('null #f) ((? string? str) str))) + (yanked? crate-version-yanked? "yanked") ;boolean (links crate-version-links)) ;alist ;; Crate dependency. Each dependency (each edge in the graph) is annotated as @@ -256,12 +258,15 @@ (define* (crate->guix-package crate-name #:key version include-dev-deps? (semver->string (last versions))))) ;; find the highest version of a crate that fulfills the semver <range> + ;; and hasn't been yanked (define (find-crate-version crate range) (let* ((semver-range (string->semver-range range)) (versions (sort (filter (lambda (entry) - (semver-range-contains? semver-range (first entry))) + (and + (not (crate-version-yanked? (second entry))) + (semver-range-contains? semver-range (first entry)))) (map (lambda (ver) (list (string->semver (crate-version-number ver)) ver)) diff --git a/tests/crate.scm b/tests/crate.scm index 720fcb212c..5aea5efaf3 100644 --- a/tests/crate.scm +++ b/tests/crate.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016 David Craven <david <at> craven.ch> ;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo <at> gnu.org> ;;; Copyright © 2020 Martin Becze <mjbecze <at> riseup.net> +;;; Copyright © 2023 Efraim Flashner <efraim <at> flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,21 +77,24 @@ (define test-foo-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/foo/0.8.1/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234212, \"num\": \"1.0.0\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/foo/1.0.0/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234214, \"num\": \"1.0.3\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/foo/1.0.3/dependencies\" - } + }, + \"yanked\": false } ] } @@ -123,14 +127,16 @@ (define test-root-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/root/1.0.0/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234242, \"num\": \"1.0.4\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/root/1.0.4/dependencies\" - } + }, + \"yanked\": false } ] } @@ -178,21 +184,24 @@ (define test-intermediate-a-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/intermediate-a/1.0.40/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234250, \"num\": \"1.0.42\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/intermediate-a/1.0.42/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234252, \"num\": \"1.1.0-alpha.1\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/intermediate-a/1.1.0-alpha.1/dependencies\" - } + }, + \"yanked\": false } ] } @@ -235,7 +244,8 @@ (define test-intermediate-b-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/intermediate-b/1.2.3/dependencies\" - } + }, + \"yanked\": false } ] } @@ -268,14 +278,16 @@ (define test-leaf-alice-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/leaf-alice/0.7.3/dependencies\" - } + }, + \"yanked\": false }, { \"id\": 234272, \"num\": \"0.7.5\", \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/leaf-alice/0.7.5/dependencies\" - } + }, + \"yanked\": false } ] } @@ -302,7 +314,8 @@ (define test-leaf-bob-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/leaf-bob/3.0.1/dependencies\" - } + }, + \"yanked\": false } ] } @@ -597,7 +610,8 @@ (define test-doctool-crate \"license\": \"MIT OR Apache-2.0\", \"links\": { \"dependencies\": \"/api/v1/crates/doctool/2.2.2/dependencies\" - } + }, + \"yanked\": false } ] } base-commit: 9b77bd0b9b4f3de69390da0ba7db5b9dbc01e554 -- Efraim Flashner <efraim <at> flashner.co.il> רנשלפ םירפא GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.