From a747baba0006a73e975868ce78009fc46fa6405b Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Thu, 11 Feb 2016 18:53:07 +0100 Subject: gnu: Add ocaml-findlib. * gnu/packages/ocaml.scm (ocaml-findlib): New variable. * gnu/packages/patches/ocaml-findlib-make-install.patch: New file. * gnu-system.am (dist_patch_DATA): Register it. --- gnu-system.am | 1 + gnu/packages/ocaml.scm | 51 ++++++++++++++++++++++ .../patches/ocaml-findlib-make-install.patch | 20 +++++++++ 3 files changed, 72 insertions(+) create mode 100644 gnu/packages/patches/ocaml-findlib-make-install.patch diff --git a/gnu-system.am b/gnu-system.am index f1b9655be8..fd9795e58c 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -624,6 +624,7 @@ dist_patch_DATA = \ gnu/packages/patches/nvi-assume-preserve-path.patch \ gnu/packages/patches/nvi-dbpagesize-binpower.patch \ gnu/packages/patches/nvi-db4.patch \ + gnu/packages/patches/ocaml-findlib-make-install.patch \ gnu/packages/patches/openexr-missing-samples.patch \ gnu/packages/patches/openimageio-boost-1.60.patch \ gnu/packages/patches/openjpeg-CVE-2015-6581.patch \ diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 1311b1bc37..f0ad6d6d18 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe ;;; Copyright © 2016 Eric Bavier +;;; Copyright © 2016 Jan Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ (define-module (gnu packages ocaml) #:use-module (gnu packages lynx) #:use-module (gnu packages perl) #:use-module (gnu packages python) + #:use-module (gnu packages m4) #:use-module (gnu packages ncurses) #:use-module (gnu packages version-control) #:use-module (gnu packages curl)) @@ -613,3 +615,52 @@ (define-public unison brought up to date by propagating the changes in each replica to the other.") (license gpl3+))) + +(define-public ocaml-findlib + (package + (name "ocaml-findlib") + (version "1.6.1") + (source (origin + (method url-fetch) + (uri (string-append "http://download.camlcity.org/download/" + "findlib" "-" version ".tar.gz")) + (sha256 + (base32 + "02abg1lsnwvjg3igdyb8qjgr5kv1nbwl4gaf8mdinzfii5p82721")) + (patches + (list (search-patch "ocaml-findlib-make-install.patch"))))) + (build-system gnu-build-system) + (native-inputs + `(("camlp4" ,camlp4) + ("m4" ,m4) + ("ocaml" ,ocaml))) + (arguments + `(#:tests? #f ; no test suite + #:parallel-build? #f + #:make-flags (list "all" "opt") + #:phases (modify-phases %standard-phases + (replace + 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (system* + "./configure" + "-bindir" (string-append out "/bin") + "-config" (string-append out "/etc/ocamfind.conf") + "-mandir" (string-append out "/share/man") + "-sitelib" (string-append out "/lib/ocaml/site-lib") + "-with-toolbox"))))))) + (home-page "http://projects.camlcity.org/projects/findlib.html") + (synopsis "Management tool for OCaml libraries") + (description + "The \"findlib\" library provides a scheme to manage reusable software +components (packages), and includes tools that support this scheme. Packages +are collections of OCaml modules for which metainformation can be stored. The +packages are kept in the filesystem hierarchy, but with strict directory +structure. The library contains functions to look the directory up that +stores a package, to query metainformation about a package, and to retrieve +dependency information about multiple packages. There is also a tool that +allows the user to enter queries on the command-line. In order to simplify +compilation and linkage, there are new frontends of the various OCaml +compilers that can directly deal with packages.") + (license x11))) diff --git a/gnu/packages/patches/ocaml-findlib-make-install.patch b/gnu/packages/patches/ocaml-findlib-make-install.patch new file mode 100644 index 0000000000..238f9ca3ce --- /dev/null +++ b/gnu/packages/patches/ocaml-findlib-make-install.patch @@ -0,0 +1,20 @@ +Ocaml wants to install its "core" libraries in OCAML_CORE_STDLIB. That +does not work in a store-based distribution. + +A solution was already provided by Nix + + https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/ocaml/findlib/install_topfind.patch + +regenerated for Guix. + +--- findlib-1.5.3/src/findlib/Makefile 2014-09-16 13:21:46.000000000 +0200 ++++ findlib-1.5.3/src/findlib/Makefile.new 2014-10-01 14:30:54.141082521 +0200 +@@ -89,7 +89,7 @@ + install: all + mkdir -p "$(prefix)$(OCAML_SITELIB)/$(NAME)" + mkdir -p "$(prefix)$(OCAMLFIND_BIN)" +- test $(INSTALL_TOPFIND) -eq 0 || cp topfind "$(prefix)$(OCAML_CORE_STDLIB)" ++ test $(INSTALL_TOPFIND) -eq 0 || cp topfind "$(prefix)$(OCAML_SITELIB)" + files=`$(TOP)/tools/collect_files $(TOP)/Makefile.config findlib.cmi findlib.mli findlib.cma topfind.cmi topfind.mli fl_package_base.mli fl_package_base.cmi fl_metascanner.mli fl_metascanner.cmi fl_metatoken.cmi findlib_top.cma findlib.cmxa findlib.a findlib.cmxs findlib_dynload.cma findlib_dynload.cmxa findlib_dynload.a findlib_dynload.cmxs fl_dynload.mli fl_dynload.cmi META` && \ + cp $$files "$(prefix)$(OCAML_SITELIB)/$(NAME)" + f="ocamlfind$(EXEC_SUFFIX)"; { test -f ocamlfind_opt$(EXEC_SUFFIX) && f="ocamlfind_opt$(EXEC_SUFFIX)"; }; \ -- cgit v1.2.3