[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

Debbugs page

Simon Tournier wrote 2 years ago
(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
Simon Tournier wrote 2 years ago
[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
Simon Tournier wrote 2 years ago
[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
Simon Tournier wrote 2 years ago
[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
Ludovic Courtès wrote 2 years ago
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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 63053@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 63053
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help