summaryrefslogtreecommitdiff
path: root/guix/import/crate.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/import/crate.scm')
-rw-r--r--guix/import/crate.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 20efa131d5..b133529ba7 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -150,6 +150,12 @@ record or #f if it was not found."
((args ...)
`((arguments (,'quasiquote ,args))))))
+(define (version->semver-prefix version)
+ "Return the version up to and including the first non-zero part"
+ (first
+ (map match:substring
+ (list-matches "^(0+\\.){,2}[0-9]+" version))))
+
(define* (make-crate-sexp #:key name version cargo-inputs cargo-development-inputs
home-page synopsis description license build?)
"Return the `package' s-expression for a rust package with the given NAME,
@@ -160,7 +166,7 @@ and LICENSE."
(match-lambda
((name version)
(list (crate-name->package-name name)
- (version-major+minor version))))
+ (version->semver-prefix version))))
inputs))
(let* ((port (http-fetch (crate-uri name version)))
@@ -194,7 +200,7 @@ and LICENSE."
((license) license)
(_ `(list ,@license)))))))
(close-port port)
- (package->definition pkg #t)))
+ (package->definition pkg (version->semver-prefix version))))
(define (string->license string)
(filter-map (lambda (license)