From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Bakke Subject: Re: [PATCH 09/10] gnu: Add ocaml-js-build-tools. Date: Wed, 18 Jan 2017 23:21:07 +0100 Message-ID: <87shog6mcs.fsf@kirby.i-did-not-set--mail-host-address--so-tickle-me> References: <20170118202802.5073-1-julien@lepiller.eu> <20170118202802.5073-10-julien@lepiller.eu> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:56544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cTybS-00010L-IT for guix-devel@gnu.org; Wed, 18 Jan 2017 17:21:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cTybP-0007KY-Fo for guix-devel@gnu.org; Wed, 18 Jan 2017 17:21:14 -0500 Received: from out1-smtp.messagingengine.com ([66.111.4.25]:44517) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cTybP-0007Jo-77 for guix-devel@gnu.org; Wed, 18 Jan 2017 17:21:11 -0500 In-Reply-To: <20170118202802.5073-10-julien@lepiller.eu> 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: Julien Lepiller , guix-devel@gnu.org --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Julien Lepiller writes: > * 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): New patch. > --- > gnu/local.mk | 1 + > gnu/packages/ocaml.scm | 49 ++++++++++++++++= ++++++ > .../patches/ocaml-janestreet-fix-libdir.patch | 36 ++++++++++++++++ > 3 files changed, 86 insertions(+) > create mode 100644 gnu/packages/patches/ocaml-janestreet-fix-libdir.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index 5b919dd86..7b210c7b3 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -778,6 +778,7 @@ dist_patch_DATA =3D \ > %D%/packages/patches/ocaml-CVE-2015-8869.patch \ > %D%/packages/patches/ocaml-Add-a-.file-directive.patch \ > %D%/packages/patches/ocaml-findlib-make-install.patch \ > + %D%/packages/patches/ocaml-janestreet-fix-libdir.patch \ > %D%/packages/patches/ocaml-omake-fix-non-determinism.patch \ > %D%/packages/patches/ola-readdir-r.patch \ > %D%/packages/patches/openexr-missing-samples.patch \ > diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm > index 35e0d081e..120095118 100644 > --- a/gnu/packages/ocaml.scm > +++ b/gnu/packages/ocaml.scm > @@ -66,6 +66,35 @@ > (number->string file-number) "/" name "-" version > ".tar.gz")) >=20=20 > +;; 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)) > + (patches (search-patches "ocaml-janestreet-fix-libdir.patch")) > + (modules '((guix build utils))) > + (snippet `(substitute* "install.ml" > + (((string-append "lib/" ,name)) > + (string-append "lib/ocaml/site-lib/" ,= name)))))) > + > +;; They also require almost the same set of arguments > +(define janestreet-arguments > + `(#:use-make? #t > + #:make-flags > + (list (string-append "CONFIGUREFLAGS=3D--prefix " > + (assoc-ref %outputs "out") > + " --enable-tests") > + (string-append "LIBDIR=3D" > + (assoc-ref %outputs "out") > + "/lib/ocaml/site-lib") > + ;; for ocaml-bin-prot, otherwise ignored > + (string-append "OCAML_TOPLEVEL_PATH=3D" > + (assoc-ref %build-inputs "findlib") > + "/lib/ocaml/site-lib")) > + #:phases (modify-phases %standard-phases (delete 'configure)))) > + > (define-public ocaml > (package > (name "ocaml") > @@ -1927,3 +1956,23 @@ 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 an 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 packages contains tools to help building Jane Str= eet > +Packages. However most of it is general purpose. It contains: The second sentence is difficult to parse. Maybe ", but can also be used for other purposes." > + > +- an oasis2opam-install tool to produce a .install file from the oasis b= uild log > +- an js_build_tools ocamlbuild plugin with various goodies") Please use @enumerate here too. Hopefully someone else can chime in on the helper functions above, if it works I'd say they are fine. LGTM! > + (license license:asl2.0))) > diff --git a/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch b/gnu= /packages/patches/ocaml-janestreet-fix-libdir.patch > new file mode 100644 > index 000000000..07cabe3c4 > --- /dev/null > +++ b/gnu/packages/patches/ocaml-janestreet-fix-libdir.patch > @@ -0,0 +1,36 @@ > +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 > + > + reinstall: $(NAME).install > +- opam-installer -u --prefix $(PREFIX) $(NAME).install &> /dev/null || t= rue > +- opam-installer -i --prefix $(PREFIX) $(NAME).install > ++ opam-installer -u --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).instal= l &> /dev/null || true > ++ opam-installer -i --prefix $(PREFIX) --libdir $(LIBDIR) $(NAME).install > + > + bin.tar.gz: $(NAME).install > + rm -rf _install > + mkdir _install > +- opam-installer -i --prefix _install $(NAME).install > ++ opam-installer -i --prefix _install --libdir $(LIBDIR) $(NAME).install > + tar czf bin.tar.gz -C _install . > + rm -rf _install > + > + bin.lzo: $(NAME).install > + rm -rf _install > + mkdir _install > +- opam-installer -i --prefix _install $(NAME).install > ++ opam-installer -i --prefix _install --libdir $(LIBDIR) $(NAME).install > + cd _install && lzop -1 -P -o ../bin.lzo `find . -type f` > + rm -rf _install > + > --=20 > 2.11.0 --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAlh/6lMACgkQoqBt8qM6 VPqkPQgAnbq8URBlSdWCN5RntzUX7XklF4aFTawiDP8NcEP9V/hlppns/2cZKz4A 8HnLPHbmtWu3wQp3qhK8F9x7v1JkgakKDBPwnTGTYEy3PtykQqASm4gesGzI2m37 bxIaczjD9OLW6Ki61W/cSBLi1VEW8hF6ERrjQ6n90we1hu+6zjrwZZZc2hjVSD9D r4ygkD8YPbsQAduHkuZW1awQAH8U6JCFedB5Q8ilFcnj/XUmbhSop39WmLZPOofy f1sraehD+cjkwCL19e1CTU6mxyIcvk+DiwS3jVxToUvHtUSlg5GMqrIG1xDtCF/e M83o+BxOyjbpIpTKiFDuiwsa1vsV8A== =2la7 -----END PGP SIGNATURE----- --=-=-=--