mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
import: opam: Use dune-build-system when possible.
* guix/import/opam.scm (opam->guix-package): Detect when dune can be used.
This commit is contained in:
parent
3e159dd0a4
commit
7b1c7ecdfb
1 changed files with 48 additions and 32 deletions
|
@ -247,39 +247,55 @@ (define (opam->guix-package name)
|
|||
(url-dict (metadata-ref opam-content "url"))
|
||||
(source-url (metadata-ref url-dict "src"))
|
||||
(requirements (metadata-ref opam-content "depends"))
|
||||
(dependencies (dependency-list->names requirements))
|
||||
(dependencies (filter
|
||||
(lambda (name)
|
||||
(not (member name '("dune" "jbuilder"))))
|
||||
(dependency-list->names requirements)))
|
||||
(native-dependencies (depends->native-inputs requirements))
|
||||
(inputs (dependency-list->inputs (depends->inputs requirements)))
|
||||
(native-inputs (dependency-list->inputs (depends->native-inputs requirements))))
|
||||
(call-with-temporary-output-file
|
||||
(lambda (temp port)
|
||||
(and (url-fetch source-url temp)
|
||||
(values
|
||||
`(package
|
||||
(name ,(ocaml-name->guix-name name))
|
||||
(version ,(if (string-prefix? "v" version)
|
||||
(substring version 1)
|
||||
version))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri ,source-url)
|
||||
(sha256 (base32 ,(guix-hash-url temp)))))
|
||||
(build-system ocaml-build-system)
|
||||
,@(if (null? inputs)
|
||||
'()
|
||||
`((inputs ,(list 'quasiquote inputs))))
|
||||
,@(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"))
|
||||
(license #f))
|
||||
dependencies))))))
|
||||
(native-inputs (dependency-list->inputs
|
||||
;; Do not add dune nor jbuilder since they are
|
||||
;; implicit inputs of the dune-build-system.
|
||||
(filter
|
||||
(lambda (name)
|
||||
(not (member name '("dune" "jbuilder"))))
|
||||
native-dependencies))))
|
||||
;; If one of these are required at build time, it means we
|
||||
;; can use the much nicer dune-build-system.
|
||||
(let ((use-dune? (or (member "dune" native-dependencies)
|
||||
(member "jbuilder" native-dependencies))))
|
||||
(call-with-temporary-output-file
|
||||
(lambda (temp port)
|
||||
(and (url-fetch source-url temp)
|
||||
(values
|
||||
`(package
|
||||
(name ,(ocaml-name->guix-name name))
|
||||
(version ,(if (string-prefix? "v" version)
|
||||
(substring version 1)
|
||||
version))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri ,source-url)
|
||||
(sha256 (base32 ,(guix-hash-url temp)))))
|
||||
(build-system ,(if use-dune?
|
||||
'dune-build-system
|
||||
'ocaml-build-system))
|
||||
,@(if (null? inputs)
|
||||
'()
|
||||
`((inputs ,(list 'quasiquote inputs))))
|
||||
,@(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"))
|
||||
(license #f))
|
||||
dependencies)))))))
|
||||
|
||||
(define (opam-recursive-import package-name)
|
||||
(recursive-import package-name #f
|
||||
|
|
Loading…
Reference in a new issue