[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/01: gnu: Add ocaml-findlib.
From: |
Andreas Enge |
Subject: |
01/01: gnu: Add ocaml-findlib. |
Date: |
Sat, 13 Feb 2016 08:17:05 +0000 |
andreas pushed a commit to branch master
in repository guix.
commit a747baba0006a73e975868ce78009fc46fa6405b
Author: Jan Nieuwenhuizen <address@hidden>
Date: Thu Feb 11 18:53:07 2016 +0100
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(+), 0 deletions(-)
diff --git a/gnu-system.am b/gnu-system.am
index f1b9655..fd9795e 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 1311b1b..f0ad6d6 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015 Andreas Enge <address@hidden>
;;; Copyright © 2015 David Hashe <address@hidden>
;;; Copyright © 2016 Eric Bavier <address@hidden>
+;;; Copyright © 2016 Jan Nieuwenhuizen <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -42,6 +43,7 @@
#: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 @@ a collection of files and directories to be stored on
different hosts
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 0000000..238f9ca
--- /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)"; }; \