import: crate: Correct interpretation of dual-licensing strings.
* guix/import/crate.scm (%dual-license-rx): New variable. (crate->guix-package)[string->license]: Rewrite to match it. * tests/crate.scm (test-crate): Adjust "license" field to current practice.
This commit is contained in:
parent
2791870d09
commit
191668bc97
|
@ -32,6 +32,7 @@
|
|||
#:use-module (guix upstream)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (json)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-2)
|
||||
|
@ -175,11 +176,19 @@ and LICENSE."
|
|||
(close-port port)
|
||||
pkg))
|
||||
|
||||
(define %dual-license-rx
|
||||
;; Dual licensing is represented by a string such as "MIT OR Apache-2.0".
|
||||
;; This regexp matches that.
|
||||
(make-regexp "^(.*) OR (.*)$"))
|
||||
|
||||
(define (crate->guix-package crate-name)
|
||||
"Fetch the metadata for CRATE-NAME from crates.io, and return the
|
||||
`package' s-expression corresponding to that package, or #f on failure."
|
||||
(define (string->license string)
|
||||
(map spdx-string->license (string-split string #\/)))
|
||||
(match (regexp-exec %dual-license-rx string)
|
||||
(#f (list (spdx-string->license string)))
|
||||
(m (list (spdx-string->license (match:substring m 1))
|
||||
(spdx-string->license (match:substring m 2))))))
|
||||
|
||||
(define (normal-dependency? dependency)
|
||||
(eq? (crate-dependency-kind dependency) 'normal))
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
\"actual_versions\": [
|
||||
{ \"id\": \"foo\",
|
||||
\"num\": \"1.0.0\",
|
||||
\"license\": \"MIT/Apache-2.0\",
|
||||
\"license\": \"MIT OR Apache-2.0\",
|
||||
\"links\": {
|
||||
\"dependencies\": \"/api/v1/crates/foo/1.0.0/dependencies\"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue