mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
gnu: Add ocaml-js-build-tools.
* gnu/packages/ocaml.scm (ocaml-js-build-tools): New variable.
This commit is contained in:
parent
5eed45a8d7
commit
f95ebba516
1 changed files with 62 additions and 0 deletions
|
@ -66,6 +66,46 @@ (define (ocaml-forge-uri name version file-number)
|
|||
(number->string file-number) "/" name "-" version
|
||||
".tar.gz"))
|
||||
|
||||
;; Janestreet packages are found in a similar way and all need the same patch.
|
||||
(define (janestreet-origin name version hash)
|
||||
(origin (method url-fetch)
|
||||
(uri (string-append "https://ocaml.janestreet.com/ocaml-core/"
|
||||
(version-major+minor version) "/files/"
|
||||
name "-" version ".tar.gz"))
|
||||
(sha256 (base32 hash))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
(let ((pattern (string-append "lib/" name)))
|
||||
`(begin
|
||||
;; install.ml contains an invalid reference to the ppx file and
|
||||
;; propagates this error to the generated META file. It
|
||||
;; looks for it in the "lib" directory, but it is installed in
|
||||
;; "lib/ocaml/site-lib/package". This substitute does not change
|
||||
;; this file for non ppx packages.
|
||||
(substitute* "install.ml"
|
||||
((,pattern) (string-append "lib/ocaml/site-lib/" ,name)))
|
||||
;; The standard Makefile would try to install janestreet modules
|
||||
;; in OCaml's directory in the store, which is read-only.
|
||||
(substitute* "Makefile"
|
||||
(("--prefix")
|
||||
"--libdir $(LIBDIR) --prefix")))))))
|
||||
|
||||
;; They also require almost the same set of arguments
|
||||
(define janestreet-arguments
|
||||
`(#:use-make? #t
|
||||
#:make-flags
|
||||
(list (string-append "CONFIGUREFLAGS=--prefix "
|
||||
(assoc-ref %outputs "out")
|
||||
" --enable-tests")
|
||||
(string-append "LIBDIR="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib/ocaml/site-lib")
|
||||
;; for ocaml-bin-prot, otherwise ignored
|
||||
(string-append "OCAML_TOPLEVEL_PATH="
|
||||
(assoc-ref %build-inputs "findlib")
|
||||
"/lib/ocaml/site-lib"))
|
||||
#:phases (modify-phases %standard-phases (delete 'configure))))
|
||||
|
||||
(define-public ocaml
|
||||
(package
|
||||
(name "ocaml")
|
||||
|
@ -1942,3 +1982,25 @@ (define-public ocaml-oasis
|
|||
system in your OCaml projects. It helps to create standard entry points in your
|
||||
build system and allows external tools to analyse your project easily.")
|
||||
(license license:lgpl2.1+))) ; with ocaml static compilation exception
|
||||
|
||||
(define-public ocaml-js-build-tools
|
||||
(package
|
||||
(name "ocaml-js-build-tools")
|
||||
(version "113.33.06")
|
||||
(source (janestreet-origin "js-build-tools" version
|
||||
"0r8z4fz8iy5y6hkdlkpwf6rk4qigcr3dzyv35585xgg2ahf12zy6"))
|
||||
(native-inputs
|
||||
`(("oasis" ,ocaml-oasis)
|
||||
("opam" ,opam)))
|
||||
(build-system ocaml-build-system)
|
||||
(arguments janestreet-arguments)
|
||||
(home-page "https://github.com/janestreet/js-build-tools")
|
||||
(synopsis "Collection of tools to help building Jane Street Packages")
|
||||
(description "This package contains tools to help building Jane Street
|
||||
packages, but can be used for other purposes. It contains:
|
||||
@enumerate
|
||||
@item an @command{oasis2opam-install} tool to produce a @file{.install} file
|
||||
from the oasis build log
|
||||
@item a @code{js_build_tools} ocamlbuild plugin with various goodies.
|
||||
@end enumerate")
|
||||
(license license:asl2.0)))
|
||||
|
|
Loading…
Reference in a new issue