From a34cedc45e06c1142d3548d69182f4eb880c1f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 15 Sep 2014 15:05:52 +0200 Subject: [PATCH] gnu: Add OPAM. * gnu/packages/ocaml.scm (opam): New variable. --- gnu/packages/ocaml.scm | 67 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index bcd4c196c5..b4e48ccc4c 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -23,7 +23,11 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) - #:use-module (gnu packages perl)) + #:use-module (gnu packages perl) + #:use-module (gnu packages python) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages version-control) + #:use-module (gnu packages curl)) (define-public ocaml (package @@ -78,3 +82,64 @@ an emphasis on expressiveness and safety. Developed for more than 20 years at Inria it benefits from one of the most advanced type systems and supports functional, imperative and object-oriented styles of programming.") (license (list qpl gpl2)))) + +(define-public opam + (package + (name "opam") + (version "1.1.1") + (source (origin + (method url-fetch) + ;; Use the '-full' version, which includes all the dependencies. + (uri (string-append + "https://github.com/ocaml/opam/releases/download/" + version "/opam-full-" version ".tar.gz") + ;; (string-append "https://github.com/ocaml/opam/archive/" + ;; version ".tar.gz") + ) + (sha256 + (base32 + "1frzqkx6yn1pnyd9qz3bv3rbwv74bmc1xji8kl41r1dkqzfl3xqv")))) + (build-system gnu-build-system) + (arguments + '(;; Sometimes, 'make -jX' would fail right after ./configure with + ;; "Fatal error: exception End_of_file". + #:parallel-build? #f + + ;; For some reason, 'ocp-build' needs $TERM to be set. + #:make-flags '("TERM=screen") + #:test-target "tests" + + ;; FIXME: There's an obscure test failure: + ;; …/_obuild/opam/opam.asm install P1' failed. + #:tests? #f + + #:phases (alist-cons-before + 'build 'pre-build + (lambda* (#:key inputs #:allow-other-keys) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "src/core/opamSystem.ml" + (("\"/bin/sh\"") + (string-append "\"" bash "/bin/sh\""))))) + (alist-cons-before + 'check 'pre-check + (lambda _ + (setenv "HOME" (getcwd)) + (and (system "git config --global user.email guix@gnu.org") + (system "git config --global user.name Guix"))) + %standard-phases)))) + (native-inputs + `(("git" ,git) ;for the tests + ("python" ,python))) ;for the tests + (inputs + `(("ocaml" ,ocaml) + ("ncurses" ,ncurses) + ("curl" ,curl))) + (home-page "http://opam.ocamlpro.com/") + (synopsis "Package manager for OCaml") + (description + "OPAM is a tool to manage OCaml packages. It supports multiple +simultaneous compiler installations, flexible package constraints, and a +Git-friendly development workflow.") + + ;; The 'LICENSE' file waives some requirements compared to LGPLv3. + (license lgpl3)))