diff options
author | Julien Lepiller <julien@lepiller.eu> | 2019-02-01 16:16:25 +0100 |
---|---|---|
committer | Julien Lepiller <julien@lepiller.eu> | 2019-02-05 22:33:08 +0100 |
commit | beee37ecdb246bf503c72e7da11e51d0b7d1a0b0 (patch) | |
tree | d4f18ad73bbda01687dee9c450111eae52cbc223 /guix/import | |
parent | 0f4432c620f8d569ef29ca74bad2b7eebd803441 (diff) | |
download | gnu-guix-beee37ecdb246bf503c72e7da11e51d0b7d1a0b0.tar gnu-guix-beee37ecdb246bf503c72e7da11e51d0b7d1a0b0.tar.gz |
import: opam: Replace "_" with "-" in imported names.
* guix/import/opam.scm (ocaml-name->guix-name): Replace "_" with "-".
(opam->guix-packages): Add upstream name when we cannot guess it
properly.
Diffstat (limited to 'guix/import')
-rw-r--r-- | guix/import/opam.scm | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/guix/import/opam.scm b/guix/import/opam.scm index 6ffb16b49b..fa8dc86d32 100644 --- a/guix/import/opam.scm +++ b/guix/import/opam.scm @@ -127,12 +127,17 @@ path to the repository." (lambda _ (peg:tree (match-pattern records (get-string-all (current-input-port))))))) +(define (substitute-char str what with) + (string-join (string-split str what) with)) + (define (ocaml-name->guix-name name) - (cond - ((equal? name "ocamlfind") "ocaml-findlib") - ((string-prefix? "ocaml" name) name) - ((string-prefix? "conf-" name) (substring name 5)) - (else (string-append "ocaml-" name)))) + (substitute-char + (cond + ((equal? name "ocamlfind") "ocaml-findlib") + ((string-prefix? "ocaml" name) name) + ((string-prefix? "conf-" name) (substring name 5)) + (else (string-append "ocaml-" name))) + #\_ "-")) (define (metadata-ref file lookup) (fold (lambda (record acc) @@ -247,6 +252,10 @@ path to the repository." ,@(if (null? native-inputs) '() `((native-inputs ,(list 'quasiquote native-inputs)))) + ,@(if (equal? name (guix-name->opam-name (ocaml-name->guix-name name))) + '() + `((properties + ,(list 'quasiquote `((upstream-name . ,name)))))) (home-page ,(metadata-ref opam-content "homepage")) (synopsis ,(metadata-ref opam-content "synopsis")) (description ,(metadata-ref opam-content "description")) @@ -259,6 +268,11 @@ path to the repository." (opam->guix-package name)) #:guix-name ocaml-name->guix-name)) +(define (guix-name->opam-name name) + (if (string-prefix? "ocaml-" name) + (substring name 6) + name)) + (define (guix-package->opam-name package) "Given an OCaml PACKAGE built from OPAM, return the name of the package in OPAM." @@ -266,10 +280,9 @@ package in OPAM." (package-properties package) 'upstream-name)) (name (package-name package))) - (cond - (upstream-name upstream-name) - ((string-prefix? "ocaml-" name) (substring name 6)) - (else name)))) + (if upstream-name + upstream-name + (guix-name->opam-name name)))) (define (opam-package? package) "Return true if PACKAGE is an OCaml package from OPAM" |