[PATCH 0/3] Fix "guix import crate"

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote on 24 Apr 2023 17:48
(address . guix-patches@gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230424154801.1539772-1-zimon.toutoune@gmail.com
Hi,

Consider,

Toggle snippet (4 lines)
$ guix import crate non-existent
guix import: error: failed to download meta-data for package 'non-existent'

and then,

Toggle snippet (16 lines)
$ guix import crate non-existent -r
Backtrace:
5 (primitive-load "/home/simon/.config/guix/current/bin/guix")
In guix/ui.scm:
2300:7 4 (run-guix . _)
2263:10 3 (run-guix-command _ . _)
In guix/scripts/import.scm:
89:11 2 (guix-import . _)
In guix/import/utils.scm:
638:27 1 (recursive-import "non-existent" #:repo->guix-package _ #:guix-name _ #:version _ . _)
630:33 0 (lookup-node "non-existent" #f)

guix/import/utils.scm:630:33: In procedure lookup-node:
Wrong number of values returned to continuation (expected 2)

as reported by #63030 [1]. This patch set fixes that.

Note that ’guile-semver’ is already part of ’self’ but not part of ’guix’,
therefore “guix shell -D guix” does not provide the necessary guile-semver for
testing with ./pre-inst-env.



Simon Tournier (3):
guix: import: crate: Fix incorrect returned values.
scripts: import: crate: Handle non-existent package.
gnu: guix: Add guile-semver.

gnu/packages/package-management.scm | 1 +
guix/import/crate.scm | 54 +++++++++++++++--------------
guix/scripts/import/crate.scm | 20 ++++++-----
3 files changed, 40 insertions(+), 35 deletions(-)


base-commit: 9350347dabd0f25f89fd2a703a250b20872ad911
--
2.38.1
S
S
Simon Tournier wrote on 24 Apr 2023 17:51
[PATCH 1/3] guix: import: crate: Fix incorrect returned values.
(address . 63053@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230424155119.1540974-1-zimon.toutoune@gmail.com
* guix/import/crate.scm (crate->guix-package): Return compatible values with
'recursive-import'.
---
guix/import/crate.scm | 54 ++++++++++++++++++++++---------------------
1 file changed, 28 insertions(+), 26 deletions(-)

Toggle diff (74 lines)
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 514eca2229..6e10ebb5d4 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2022 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -293,32 +294,33 @@ (define (sort-map-dependencies deps)
(match-lambda* (((name _) ...)
(apply string-ci<? name)))))
- (and crate version*
- (let* ((dependencies (crate-version-dependencies version*))
- (dep-crates dev-dep-crates (partition normal-dependency? dependencies))
- (cargo-inputs (sort-map-dependencies dep-crates))
- (cargo-development-inputs (if include-dev-deps?
- (sort-map-dependencies dev-dep-crates)
- '())))
- (values
- (make-crate-sexp #:build? include-dev-deps?
- #:name crate-name
- #:version (crate-version-number version*)
- #:cargo-inputs cargo-inputs
- #:cargo-development-inputs cargo-development-inputs
- #:home-page
- (let ((home-page (crate-home-page crate)))
- (if (string? home-page)
- home-page
- (let ((repository (crate-repository crate)))
- (if (string? repository)
- repository
- ""))))
- #:synopsis (crate-description crate)
- #:description (crate-description crate)
- #:license (and=> (crate-version-license version*)
- string->license))
- (append cargo-inputs cargo-development-inputs)))))
+ (if (and crate version*)
+ (let* ((dependencies (crate-version-dependencies version*))
+ (dep-crates dev-dep-crates (partition normal-dependency? dependencies))
+ (cargo-inputs (sort-map-dependencies dep-crates))
+ (cargo-development-inputs (if include-dev-deps?
+ (sort-map-dependencies dev-dep-crates)
+ '())))
+ (values
+ (make-crate-sexp #:build? include-dev-deps?
+ #:name crate-name
+ #:version (crate-version-number version*)
+ #:cargo-inputs cargo-inputs
+ #:cargo-development-inputs cargo-development-inputs
+ #:home-page
+ (let ((home-page (crate-home-page crate)))
+ (if (string? home-page)
+ home-page
+ (let ((repository (crate-repository crate)))
+ (if (string? repository)
+ repository
+ ""))))
+ #:synopsis (crate-description crate)
+ #:description (crate-description crate)
+ #:license (and=> (crate-version-license version*)
+ string->license))
+ (append cargo-inputs cargo-development-inputs)))
+ (values #f '())))
(define* (crate-recursive-import crate-name #:key version)
(recursive-import crate-name
--
2.38.1
S
S
Simon Tournier wrote on 24 Apr 2023 17:51
[PATCH 3/3] gnu: guix: Add guile-semver.
(address . 63053@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230424155119.1540974-3-zimon.toutoune@gmail.com
* gnu/packages/package-management.scm (guix)[propagated-inputs]: Add
guile-semver.
---
gnu/packages/package-management.scm | 1 +
1 file changed, 1 insertion(+)

Toggle diff (14 lines)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 5d2416f35b..65baf4093c 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -476,6 +476,7 @@ (define code
("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json-4)
("guile-lib" ,guile-lib)
+ ("guile-semver" ,guile-semver)
("guile-sqlite3" ,guile-sqlite3)
("guile-ssh" ,guile-ssh)
("guile-git" ,guile-git)
--
2.38.1
S
S
Simon Tournier wrote on 24 Apr 2023 17:51
[PATCH 2/3] scripts: import: crate: Handle non-existent package.
(address . 63053@debbugs.gnu.org)(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
20230424155119.1540974-2-zimon.toutoune@gmail.com

* guix/scripts/import/crate.scm (guix-import-crate): Handle non-existent
package input.
---
guix/scripts/import/crate.scm | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)

Toggle diff (40 lines)
diff --git a/guix/scripts/import/crate.scm b/guix/scripts/import/crate.scm
index 97152904ac..038faa87db 100644
--- a/guix/scripts/import/crate.scm
+++ b/guix/scripts/import/crate.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
+;;; Copyright © 2023 Simon Tournier <zimon.toutoune@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -90,15 +91,16 @@ (define (parse-options)
(define-values (name version)
(package-name->name+version spec))
- (if (assoc-ref opts 'recursive)
- (crate-recursive-import name #:version version)
- (let ((sexp (crate->guix-package name #:version version #:include-dev-deps? #t)))
- (unless sexp
- (leave (G_ "failed to download meta-data for package '~a'~%")
- (if version
- (string-append name "@" version)
- name)))
- (list sexp))))
+ (match (if (assoc-ref opts 'recursive)
+ (crate-recursive-import name #:version version)
+ (crate->guix-package name #:version version #:include-dev-deps? #t))
+ ((or #f '())
+ (leave (G_ "failed to download meta-data for package '~a'~%")
+ (if version
+ (string-append name "@" version)
+ name)))
+ ((? list? sexps) sexps)
+ (sexp (list sexp))))
(()
(leave (G_ "too few arguments~%")))
((many ...)
--
2.38.1
L
L
Ludovic Courtès wrote on 30 Apr 2023 23:09
Re: bug#63053: [PATCH 0/3] Fix "guix import crate"
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)(address . 63053-done@debbugs.gnu.org)
87lei9oz4w.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (4 lines)
> guix: import: crate: Fix incorrect returned values.
> scripts: import: crate: Handle non-existent package.
> gnu: guix: Add guile-semver.

Applied, thanks! :-)

Ludo’.
Closed
?