From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Lepiller Subject: Re: [PATCH 09/10] gnu: Add ocaml-js-build-tools. Date: Mon, 30 Jan 2017 23:48:08 +0100 Message-ID: <20170130234808.654acf45@lepiller.eu> References: <20170127221228.4370-1-julien@lepiller.eu> <20170127221228.4370-10-julien@lepiller.eu> <87inowgawq.fsf@gnu.org> <20170130220850.77b8e4a4@lepiller.eu> <87h94gkx0g.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="MP_/TQnYsn/ixMhiYvSdOj_UsPc" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cYKkO-0007au-B5 for guix-devel@gnu.org; Mon, 30 Jan 2017 17:48:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cYKkK-00079W-33 for guix-devel@gnu.org; Mon, 30 Jan 2017 17:48:28 -0500 Received: from dau94-h03-89-91-205-84.dsl.sta.abo.bbox.fr ([89.91.205.84]:38077 helo=skaro.lepiller.eu) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cYKkJ-00079S-Hc for guix-devel@gnu.org; Mon, 30 Jan 2017 17:48:24 -0500 Received: from localhost (localhost [127.0.0.1]) by skaro.lepiller.eu (Postfix) with ESMTP id 037D88022F for ; Mon, 30 Jan 2017 23:48:21 +0100 (CET) Received: from skaro.lepiller.eu ([127.0.0.1]) by localhost (lepiller.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oZSAamGw6Ckq for ; Mon, 30 Jan 2017 23:48:14 +0100 (CET) Received: from localhost (128-79-116-134.hfc.dyn.abo.bbox.fr [128.79.116.134]) by skaro.lepiller.eu (Postfix) with ESMTPSA id 057D08011D for ; Mon, 30 Jan 2017 23:48:13 +0100 (CET) In-Reply-To: <87h94gkx0g.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org --MP_/TQnYsn/ixMhiYvSdOj_UsPc Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On Mon, 30 Jan 2017 23:23:27 +0100 ludo@gnu.org (Ludovic Court=C3=A8s) wrote: > Julien Lepiller skribis: >=20 > > On Mon, 30 Jan 2017 10:22:13 +0100 > > ludo@gnu.org (Ludovic Court=C3=A8s) wrote: > > =20 > >> Julien Lepiller skribis: > >> =20 > >> > +++ b/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch > >> > @@ -0,0 +1,39 @@ > >> > +This patch adds a --libdir option to opam-installer so it > >> > installs the plugin +in the specified directory rather than in > >> > the default one (ocaml's directory in +the store, which is > >> > forbidden). +diff -aur package.pristine/Makefile > >> > package.new/Makefile +--- package.pristine/Makefile > >> > 2016-02-06 01:55:14.650150309 +0100 ++++ > >> > package.new/Makefile 2016-02-06 01:57:56.012174364 +0100 > >> > +@@ -29,26 +29,26 @@ > >> > + ocaml -I js-utils js-utils/gen_install.ml > >> > + > >> > + install: $(NAME).install > >> > +- opam-installer -i --prefix $(PREFIX) $(NAME).install > >> > ++ opam-installer -i --prefix $(PREFIX) --libdir $(LIBDIR) > >> > $(NAME).install + > >> > + uninstall: $(NAME).install > >> > +- opam-installer -u --prefix $(PREFIX) $(NAME).install > >> > ++ opam-installer -u --prefix $(PREFIX) --libdir $(LIBDIR) > >> > $(NAME).install =20 > >>=20 > >> On second thought, I think it=E2=80=99d be simpler and more maintainab= le > >> to do this as a substitution in the snippet. > >>=20 > >> WDYT? > >>=20 > >> (It will also avoid =E2=80=98guix lint=E2=80=99 complaints about the p= atch file > >> name not matching the package name. :-)) > >>=20 > >> Ludo=E2=80=99. =20 > > > > Sure, here it is :) > > > > From 8cd3ba3a3f9702a89f8f52c75c33d3d02f20f60b Mon Sep 17 00:00:00 > > 2001 From: Julien Lepiller > > Date: Fri, 30 Dec 2016 16:27:27 +0100 > > Subject: [PATCH 2/2] gnu: Add ocaml-bin-prot. > > > > * gnu/packages/ocaml.scm (ocaml-bin-prot): New variable. =20 >=20 > Wait, I was commenting on ocaml-js-build-tools, not on ocaml-bin-prot: >=20 > https://lists.gnu.org/archive/html/guix-devel/2017-01/threads.html#02134 >=20 > Could it be that you=E2=80=99re replying to the wrong message? :-) >=20 > Ludo=E2=80=99. I was replying to the correct message, but not with the correct patch. --MP_/TQnYsn/ixMhiYvSdOj_UsPc Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=0001-gnu-Add-ocaml-js-build-tools.patch >From 96a8ec5f4ad68c14f49335bf58d27ef21c2419f7 Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Fri, 27 Jan 2017 22:58:50 +0100 Subject: [PATCH 1/2] gnu: Add ocaml-js-build-tools. * gnu/packages/ocaml.scm (ocaml-js-build-tools): New variable. * gnu/packages/patches/ocaml-janestreet-fix-libdir.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/packages/ocaml.scm | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index ba0f5cd4c..6e1e745fe 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -66,6 +66,46 @@ (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))) + ;; 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 @@ file (POSIX like) and filename.") 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))) -- 2.11.0 --MP_/TQnYsn/ixMhiYvSdOj_UsPc--