From 80078966ca7f623efbcf712195b6f3eec267115b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Mon, 25 Apr 2016 11:40:22 +0200 Subject: [PATCH 1/7] ocamlPackages.ocp-build : 0.99.16-beta -> 0.99.17-beta --- .../tools/ocaml/ocp-build/default.nix | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pkgs/development/tools/ocaml/ocp-build/default.nix b/pkgs/development/tools/ocaml/ocp-build/default.nix index 5ae27b476b4..503616511e5 100644 --- a/pkgs/development/tools/ocaml/ocp-build/default.nix +++ b/pkgs/development/tools/ocaml/ocp-build/default.nix @@ -1,20 +1,25 @@ -{ stdenv, fetchFromGitHub, ocaml, findlib, ncurses }: +{ stdenv, fetchFromGitHub, ocaml, findlib, ncurses, buildOcaml }: +let + version = "1.99.17-beta"; +in +buildOcaml { -let version = "1.99.16-beta"; in - -stdenv.mkDerivation { - - name = "ocp-build-${version}"; + name = "ocp-build"; + inherit version; src = fetchFromGitHub { owner = "OCamlPro"; repo = "ocp-build"; rev = version; - sha256 = "1nkd7wlf1vrc4p20bs94vbkd970q2ag23csh9a897ka65rk08gvw"; + sha256 = "0k1gi5v9as5l8h5illgl5prsd5z1i14y5j2k920ay1a3rv697b02"; }; - buildInputs = [ ocaml findlib ncurses ]; + buildInputs = [ ocaml ]; + propagatedBuildInputs = [ ncurses ]; preInstall = "mkdir -p $out/bin"; + preConfigure = '' + export configureFlags="$configureFlags --with-metadir=$OCAMLFIND_DESTDIR" + ''; meta = with stdenv.lib; { homepage = http://www.typerex.org/ocp-build.html; From 7bb3a04064c622628876a984531aa72c3f904152 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Wed, 20 Jul 2016 14:53:33 +0200 Subject: [PATCH 2/7] ocamlPackages.merlin : 2.3.1 -> 2.5.0 For ocaml > 4.02 only --- pkgs/development/tools/ocaml/merlin/default.nix | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/ocaml/merlin/default.nix b/pkgs/development/tools/ocaml/merlin/default.nix index 9538d8e1cc2..ed441ea8c10 100644 --- a/pkgs/development/tools/ocaml/merlin/default.nix +++ b/pkgs/development/tools/ocaml/merlin/default.nix @@ -1,9 +1,19 @@ -{ stdenv, fetchzip, ocaml, findlib, yojson, menhir +{ stdenv, fetchzip, ocaml, findlib, yojson, menhir, lib , withEmacsMode ? false, emacs }: assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.00"; -let version = "2.3.1"; in +let + version = if lib.versionOlder (lib.getVersion ocaml) "4.02.0" + then + "2.3.1" + else + "2.5.0"; + hashes = { + "2.3.1" = "192jamcc7rmvadlqqsjkzsl6hlgwhg9my1qc89fxh1lmd4qdsrpn"; + "2.5.0" = "1q09mnq4qmh6vfn45qxh2v81l364iazcpjs5dyczmlhln8b25bff"; + }; +in stdenv.mkDerivation { @@ -11,7 +21,7 @@ stdenv.mkDerivation { src = fetchzip { url = "https://github.com/the-lambda-church/merlin/archive/v${version}.tar.gz"; - sha256 = "192jamcc7rmvadlqqsjkzsl6hlgwhg9my1qc89fxh1lmd4qdsrpn"; + sha256 = hashes."${version}"; }; buildInputs = [ ocaml findlib yojson menhir ] From f0bbb906e95ee6ff146cad5fdfe568b9653f4b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Wed, 20 Jul 2016 14:51:20 +0200 Subject: [PATCH 3/7] ocamlPackages.ppx_tools : Add a version for ocaml 4.03 --- .../ocaml-modules/ppx_tools/default.nix | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/pkgs/development/ocaml-modules/ppx_tools/default.nix b/pkgs/development/ocaml-modules/ppx_tools/default.nix index 377dc32751a..33bf180cd7f 100644 --- a/pkgs/development/ocaml-modules/ppx_tools/default.nix +++ b/pkgs/development/ocaml-modules/ppx_tools/default.nix @@ -1,21 +1,30 @@ -{ stdenv, fetchzip, ocaml, findlib }: +{ stdenv, fetchFromGitHub, ocaml, findlib }: -stdenv.mkDerivation { - name = "ocaml-ppx_tools-5.0+4.02"; - src = fetchzip { - url = https://github.com/alainfrisch/ppx_tools/archive/5.0+4.02.0.tar.gz; - sha256 = "16drjk0qafjls8blng69qiv35a84wlafpk16grrg2i3x19p8dlj8"; - }; +let + version = + if stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.03" then "5.0+4.03.0" else "5.0+4.02.0"; +in + stdenv.mkDerivation { + name = "ocaml-ppx_tools-${version}"; + src = fetchFromGitHub { + owner = "alainfrisch"; + repo = "ppx_tools"; + rev = version; + sha256 = if version == "5.0+4.03.0" + then "061v1fl5z7z3ywi4ppryrlcywnvnqbsw83ppq72qmkc7ma4603jg" + else "16drjk0qafjls8blng69qiv35a84wlafpk16grrg2i3x19p8dlj8" + ; + }; - buildInputs = [ ocaml findlib ]; + buildInputs = [ ocaml findlib ]; - createFindlibDestdir = true; + createFindlibDestdir = true; - meta = with stdenv.lib; { - description = "Tools for authors of ppx rewriters"; - homepage = http://www.lexifi.com/ppx_tools; - license = licenses.mit; - platforms = ocaml.meta.platforms or []; - maintainers = with maintainers; [ vbgl ]; - }; -} + meta = with stdenv.lib; { + description = "Tools for authors of ppx rewriters"; + homepage = http://www.lexifi.com/ppx_tools; + license = licenses.mit; + platforms = ocaml.meta.platforms or []; + maintainers = with maintainers; [ vbgl ]; + }; + } From 7c2ecbe921a77ee210217ee122b446cb511c7a4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Wed, 13 Jul 2016 14:54:01 +0200 Subject: [PATCH 4/7] ocamlPackages.camlp4 : add version for ocaml_4_03 --- pkgs/development/tools/ocaml/camlp4/4_03.nix | 45 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 +- 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/tools/ocaml/camlp4/4_03.nix diff --git a/pkgs/development/tools/ocaml/camlp4/4_03.nix b/pkgs/development/tools/ocaml/camlp4/4_03.nix new file mode 100644 index 00000000000..f05a556c388 --- /dev/null +++ b/pkgs/development/tools/ocaml/camlp4/4_03.nix @@ -0,0 +1,45 @@ +{stdenv, fetchzip, which, ocaml, ocamlbuild}: +let + ocaml_version = (stdenv.lib.getVersion ocaml); + version = "4.03+1"; + +in + +assert stdenv.lib.versionAtLeast ocaml_version "4.02"; + +stdenv.mkDerivation { + name = "camlp4-${version}"; + src = fetchzip { + url = "https://github.com/ocaml/camlp4/archive/${version}.tar.gz"; + sha256 = "1f2ndch6f1m4fgnxsjb94qbpwjnjgdlya6pard44y6n0dqxi1wsq"; + }; + + buildInputs = [ which ocaml ocamlbuild ]; + + dontAddPrefix = true; + + preConfigure = '' + configureFlagsArray=( + --bindir=$out/bin + --libdir=$out/lib/ocaml/${ocaml_version}/site-lib + --pkgdir=$out/lib/ocaml/${ocaml_version}/site-lib + ) + ''; + + postConfigure = '' + substituteInPlace camlp4/META.in \ + --replace +camlp4 $out/lib/ocaml/${ocaml_version}/site-lib/camlp4 + ''; + + + makeFlags = "all"; + + installTargets = "install install-META"; + + meta = with stdenv.lib; { + description = "A software system for writing extensible parsers for programming languages"; + homepage = https://github.com/ocaml/camlp4; + platforms = ocaml.meta.platforms or []; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e88d7fe991b..7731c82f057 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5015,7 +5015,9 @@ in camlidl = callPackage ../development/tools/ocaml/camlidl { }; camlp4 = - if lib.versionOlder "4.02" ocaml_version + if lib.versionOlder "4.03" ocaml_version + then callPackage ../development/tools/ocaml/camlp4/4_03.nix { } + else if lib.versionOlder "4.02" ocaml_version then callPackage ../development/tools/ocaml/camlp4 { } else null; From ce90c9027482175d7bc1ff9b51088dc008a9c02c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Wed, 13 Jul 2016 14:56:05 +0200 Subject: [PATCH 5/7] ocamlPackages.ocamlbuild : init at 0.9.2 --- .../tools/ocaml/ocamlbuild/default.nix | 42 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 +++ 2 files changed, 48 insertions(+) create mode 100644 pkgs/development/tools/ocaml/ocamlbuild/default.nix diff --git a/pkgs/development/tools/ocaml/ocamlbuild/default.nix b/pkgs/development/tools/ocaml/ocamlbuild/default.nix new file mode 100644 index 00000000000..6feab7645f1 --- /dev/null +++ b/pkgs/development/tools/ocaml/ocamlbuild/default.nix @@ -0,0 +1,42 @@ +{stdenv, fetchFromGitHub, ocaml, findlib, buildOcaml, type_conv, camlp4, + ocamlmod, ocamlify, ounit, expect}: +let + version = "0.9.2"; +in +stdenv.mkDerivation { + name = "ocamlbuild"; + inherit version; + + src = fetchFromGitHub { + owner = "ocaml"; + repo = "ocamlbuild"; + rev = version; + sha256 = "0q4bvik08v444g1pill9zgwal48xs50jf424lbryfvqghhw5xjjc"; + }; + + createFindlibDestdir = true; + + buildInputs = [ ocaml findlib ]; + + configurePhase = '' + make -f configure.make Makefile.config \ + "OCAMLBUILD_PREFIX=$out" \ + "OCAMLBUILD_BINDIR=$out/bin" \ + "OCAMLBUILD_LIBDIR=$OCAMLFIND_DESTDIR" + ''; + + # configurePhase = "ocaml setup.ml -configure --prefix $out"; + # buildPhase = "ocaml setup.ml -build"; + # installPhase = "ocaml setup.ml -install"; + + # meta = with stdenv.lib; { + # homepage = http://oasis.forge.ocamlcore.org/; + # description = "Configure, build and install system for OCaml projects"; + # license = licenses.lgpl21; + # platforms = ocaml.meta.platforms or []; + # maintainers = with maintainers; [ + # vbgl z77z + # ]; + # }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7731c82f057..840224c973e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5228,6 +5228,12 @@ in core = callPackage ../development/ocaml-modules/core { }; + ocamlbuild = + if lib.versionOlder "4.03" ocaml_version then + callPackage ../development/tools/ocaml/ocamlbuild { } + else + null; + ocaml_cryptgps = callPackage ../development/ocaml-modules/cryptgps { }; ocaml_data_notation = callPackage ../development/ocaml-modules/odn { }; From 2cb301d1436f5163d5f6b968700285edbf479cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Thu, 21 Jul 2016 11:18:06 +0200 Subject: [PATCH 6/7] ocamlPackages.ocp-index : 1.1.2 -> 1.1.4 And split according to ocaml version --- .../tools/ocaml/ocp-index/default.nix | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/pkgs/development/tools/ocaml/ocp-index/default.nix b/pkgs/development/tools/ocaml/ocp-index/default.nix index 37f90c41100..5ca1aed810c 100644 --- a/pkgs/development/tools/ocaml/ocp-index/default.nix +++ b/pkgs/development/tools/ocaml/ocp-index/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchzip, ocaml, findlib, ocpBuild, ocpIndent, opam, cmdliner, ncurses, re, lambdaTerm, libev }: +{ stdenv, fetchFromGitHub, ocaml, findlib, ocpBuild, ocpIndent, opam, cmdliner, ncurses, re, lambdaTerm, libev }: let inherit (stdenv.lib) getVersion versionAtLeast optional; in @@ -7,23 +7,34 @@ assert versionAtLeast (getVersion ocpBuild) "1.99.6-beta"; assert versionAtLeast (getVersion ocpIndent) "1.4.2"; let - version = "1.1.2"; - patch402 = fetchurl { - url = https://raw.githubusercontent.com/ocaml/opam-repository/master/packages/ocp-index/ocp-index.1.1.2/files/ocaml.4.02.patch; - sha256 = "1wcpn2pv7h8ia3ybmzdlm8v5hfvq1rgmlj02wwj0yh3vqjvxqvsm"; + version = "1.1.4"; + ocaml_version = getVersion ocaml; + srcs = { + "4.03.0" = { + rev = "${version}-4.03"; + sha256 = "0c6s5radwyvxf9hrq2y9lirk72z686k9yzd0vgzy98yrrp1w56mv"; + }; + "4.02.3" = { + rev = "${version}-4.02"; + sha256 = "057ss3lz754b2pznkb3zda5h65kjgqnvabvfqwqcz4qqxxki2yc8"; + }; + "4.01.0" = { + rev = "${version}"; + sha256 = "106bnc8jhmjnychcl8k3gl9n6b50bc66qc5hqf1wkbkk9kz4vc9d"; + }; }; + + src = fetchFromGitHub ({ + owner = "OCamlPro"; + repo = "ocp-index"; + } // srcs."${ocaml_version}"); in stdenv.mkDerivation { name = "ocp-index-${version}"; - src = fetchzip { - url = "http://github.com/OCamlPro/ocp-index/archive/${version}.tar.gz"; - sha256 = "0cz0bz5nisc5r23b1w07q2bl489gd09mg8rp9kyq9m6rj669b18l"; - }; - - patches = optional (versionAtLeast (getVersion ocaml) "4.02") patch402; + inherit src; buildInputs = [ ocaml findlib ocpBuild opam cmdliner ncurses re libev ] ++ optional (versionAtLeast (getVersion lambdaTerm) "1.7") lambdaTerm; From 08b85f5f9917cad708faab7fc81b1c155d478328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9ophane=20Hufschmitt?= Date: Wed, 13 Jul 2016 14:52:50 +0200 Subject: [PATCH 7/7] ocaml : add 4.03 compiler --- pkgs/development/compilers/ocaml/4.01.0.nix | 85 ++----------------- pkgs/development/compilers/ocaml/4.02.nix | 83 ++---------------- pkgs/development/compilers/ocaml/4.03.nix | 6 ++ pkgs/development/compilers/ocaml/generic.nix | 89 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +- 5 files changed, 109 insertions(+), 159 deletions(-) create mode 100644 pkgs/development/compilers/ocaml/4.03.nix create mode 100644 pkgs/development/compilers/ocaml/generic.nix diff --git a/pkgs/development/compilers/ocaml/4.01.0.nix b/pkgs/development/compilers/ocaml/4.01.0.nix index 1d323ec0cba..aa6cf68d2c9 100644 --- a/pkgs/development/compilers/ocaml/4.01.0.nix +++ b/pkgs/development/compilers/ocaml/4.01.0.nix @@ -1,82 +1,7 @@ -let - safeX11 = stdenv: !(stdenv.isArm || stdenv.isMips); -in - -{ stdenv, fetchurl, ncurses, buildEnv, libX11, xproto, useX11 ? safeX11 stdenv }: - -if useX11 && !(safeX11 stdenv) - then throw "x11 not available in ocaml with arm or mips arch" - else # let the indentation flow - -let - useNativeCompilers = !stdenv.isMips; - inherit (stdenv.lib) optionals optionalString; -in - -stdenv.mkDerivation rec { - - x11env = buildEnv { name = "x11env"; paths = [libX11 xproto]; }; - x11lib = x11env + "/lib"; - x11inc = x11env + "/include"; - - name = "ocaml-4.01.0"; - - src = fetchurl { - url = "http://caml.inria.fr/pub/distrib/ocaml-4.01/${name}.tar.bz2"; - sha256 = "b1ca708994180236917ae79e17606da5bd334ca6acd6873a550027e1c0ec874a"; - }; - +import ./generic.nix rec { + major_version = "4"; + minor_version = "01"; + patch_version = "0"; patches = [ ./fix-clang-build-on-osx.diff ]; - - prefixKey = "-prefix "; - configureFlags = ["-no-tk"] ++ optionals useX11 [ "-x11lib" x11lib - "-x11include" x11inc ]; - - buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt"; - buildInputs = [ncurses] ++ optionals useX11 [ libX11 xproto ]; - installTargets = "install" + optionalString useNativeCompilers " installopt"; - preConfigure = '' - CAT=$(type -tp cat) - sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang - ''; - postBuild = '' - mkdir -p $out/include - ln -sv $out/lib/ocaml/caml $out/include/caml - ''; - - passthru = { - nativeCompilers = useNativeCompilers; - }; - - meta = with stdenv.lib; { - homepage = http://caml.inria.fr/ocaml; - branch = "4.01"; - license = with licenses; [ - qpl /* compiler */ - lgpl2 /* library */ - ]; - description = "Most popular variant of the Caml language"; - - longDescription = - '' - OCaml is the most popular variant of the Caml language. From a - language standpoint, it extends the core Caml language with a - fully-fledged object-oriented layer, as well as a powerful module - system, all connected by a sound, polymorphic type system featuring - type inference. - - The OCaml system is an industrial-strength implementation of this - language, featuring a high-performance native-code compiler (ocamlopt) - for 9 processor architectures (IA32, PowerPC, AMD64, Alpha, Sparc, - Mips, IA64, HPPA, StrongArm), as well as a bytecode compiler (ocamlc) - and an interactive read-eval-print loop (ocaml) for quick development - and portability. The OCaml distribution includes a comprehensive - standard library, a replay debugger (ocamldebug), lexer (ocamllex) and - parser (ocamlyacc) generators, a pre-processor pretty-printer (camlp4) - and a documentation generator (ocamldoc). - ''; - - platforms = with platforms; linux ++ darwin; - }; - + sha256 = "03d7ida94s1gpr3gadf4jyhmh5rrszd5s4m4z59daaib25rvfyv7"; } diff --git a/pkgs/development/compilers/ocaml/4.02.nix b/pkgs/development/compilers/ocaml/4.02.nix index 91b543151e3..5ea494f53b3 100644 --- a/pkgs/development/compilers/ocaml/4.02.nix +++ b/pkgs/development/compilers/ocaml/4.02.nix @@ -1,80 +1,7 @@ -let - safeX11 = stdenv: !(stdenv.isArm || stdenv.isMips); -in - -{ stdenv, fetchurl, ncurses, buildEnv, libX11, xproto, useX11 ? safeX11 stdenv }: - -assert useX11 -> !stdenv.isArm && !stdenv.isMips; - -let - useNativeCompilers = !stdenv.isMips; - inherit (stdenv.lib) optionals optionalString; -in - -stdenv.mkDerivation rec { - - x11env = buildEnv { name = "x11env"; paths = [libX11 xproto]; }; - x11lib = x11env + "/lib"; - x11inc = x11env + "/include"; - - name = "ocaml-4.02.3"; - - src = fetchurl { - url = "http://caml.inria.fr/pub/distrib/ocaml-4.02/${name}.tar.xz"; - sha256 = "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3"; - }; - +import ./generic.nix rec { + major_version = "4"; + minor_version = "02"; + patch_version = "0"; patches = [ ./ocamlbuild.patch ]; - - prefixKey = "-prefix "; - configureFlags = optionals useX11 [ "-x11lib" x11lib - "-x11include" x11inc ]; - - buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt"; - buildInputs = [ncurses] ++ optionals useX11 [ libX11 xproto ]; - installTargets = "install" + optionalString useNativeCompilers " installopt"; - preConfigure = '' - CAT=$(type -tp cat) - sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang - ''; - postBuild = '' - mkdir -p $out/include - ln -sv $out/lib/ocaml/caml $out/include/caml - ''; - - passthru = { - nativeCompilers = useNativeCompilers; - }; - - meta = with stdenv.lib; { - homepage = http://caml.inria.fr/ocaml; - branch = "4.02"; - license = with licenses; [ - qpl /* compiler */ - lgpl2 /* library */ - ]; - description = "Most popular variant of the Caml language"; - - longDescription = - '' - OCaml is the most popular variant of the Caml language. From a - language standpoint, it extends the core Caml language with a - fully-fledged object-oriented layer, as well as a powerful module - system, all connected by a sound, polymorphic type system featuring - type inference. - - The OCaml system is an industrial-strength implementation of this - language, featuring a high-performance native-code compiler (ocamlopt) - for 9 processor architectures (IA32, PowerPC, AMD64, Alpha, Sparc, - Mips, IA64, HPPA, StrongArm), as well as a bytecode compiler (ocamlc) - and an interactive read-eval-print loop (ocaml) for quick development - and portability. The OCaml distribution includes a comprehensive - standard library, a replay debugger (ocamldebug), lexer (ocamllex) and - parser (ocamlyacc) generators, a pre-processor pretty-printer (camlp4) - and a documentation generator (ocamldoc). - ''; - - platforms = with platforms; linux ++ darwin; - }; - + sha256 = "1qwwvy8nzd87hk8rd9sm667nppakiapnx4ypdwcrlnav2dz6kil3"; } diff --git a/pkgs/development/compilers/ocaml/4.03.nix b/pkgs/development/compilers/ocaml/4.03.nix new file mode 100644 index 00000000000..c9536c487d0 --- /dev/null +++ b/pkgs/development/compilers/ocaml/4.03.nix @@ -0,0 +1,6 @@ +import ./generic.nix rec { + major_version = "4"; + minor_version = "03"; + patch_version = "0"; + sha256 = "09p3iwwi55r6rbrpyp8f0wmkb0ppcgw67yxw6yfky60524wayp39"; +} diff --git a/pkgs/development/compilers/ocaml/generic.nix b/pkgs/development/compilers/ocaml/generic.nix new file mode 100644 index 00000000000..f75d6384b90 --- /dev/null +++ b/pkgs/development/compilers/ocaml/generic.nix @@ -0,0 +1,89 @@ +{ minor_version, major_version, patch_version +, url ? null +, sha256, ...}@args: +let + versionNoPatch = "${toString major_version}.${toString minor_version}"; + version = "${versionNoPatch}.${toString patch_version}"; + real_url = if url == null then + "http://caml.inria.fr/pub/distrib/ocaml-${versionNoPatch}/ocaml-${version}.tar.xz" + else url; + safeX11 = stdenv: !(stdenv.isArm || stdenv.isMips); +in + +{ stdenv, fetchurl, ncurses, buildEnv, libX11, xproto, useX11 ? safeX11 stdenv }: + +assert useX11 -> !stdenv.isArm && !stdenv.isMips; + +let + useNativeCompilers = !stdenv.isMips; + inherit (stdenv.lib) optionals optionalString; + name = "ocaml-${version}"; +in + +stdenv.mkDerivation (args // rec { + + x11env = buildEnv { name = "x11env"; paths = [libX11 xproto]; }; + x11lib = x11env + "/lib"; + x11inc = x11env + "/include"; + + inherit name; + + src = fetchurl { + url = real_url; + inherit sha256; + }; + + prefixKey = "-prefix "; + configureFlags = optionals useX11 [ "-x11lib" x11lib + "-x11include" x11inc ]; + + buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt"; + buildInputs = [ncurses] ++ optionals useX11 [ libX11 xproto ]; + installTargets = "install" + optionalString useNativeCompilers " installopt"; + preConfigure = '' + CAT=$(type -tp cat) + sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang + ''; + postBuild = '' + mkdir -p $out/include + ln -sv $out/lib/ocaml/caml $out/include/caml + ''; + + passthru = { + nativeCompilers = useNativeCompilers; + }; + + meta = with stdenv.lib; { + homepage = http://caml.inria.fr/ocaml; + branch = "4.03"; + license = with licenses; [ + qpl /* compiler */ + lgpl2 /* library */ + ]; + description = "Most popular variant of the Caml language"; + + longDescription = + '' + OCaml is the most popular variant of the Caml language. From a + language standpoint, it extends the core Caml language with a + fully-fledged object-oriented layer, as well as a powerful module + system, all connected by a sound, polymorphic type system featuring + type inference. + + The OCaml system is an industrial-strength implementation of this + language, featuring a high-performance native-code compiler (ocamlopt) + for 9 processor architectures (IA32, PowerPC, AMD64, Alpha, Sparc, + Mips, IA64, HPPA, StrongArm), as well as a bytecode compiler (ocamlc) + and an interactive read-eval-print loop (ocaml) for quick development + and portability. The OCaml distribution includes a comprehensive + standard library, a replay debugger (ocamldebug), lexer (ocamllex) and + parser (ocamlyacc) generators, a pre-processor pretty-printer (camlp4) + and a documentation generator (ocamldoc). + ''; + + platforms = with platforms; linux ++ darwin; + }; + +}) + + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 840224c973e..d071b765808 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4957,6 +4957,8 @@ in ocaml_4_02 = callPackage ../development/compilers/ocaml/4.02.nix { }; + ocaml_4_03 = callPackage ../development/compilers/ocaml/4.03.nix { }; + orc = callPackage ../development/compilers/orc { }; metaocaml_3_09 = callPackage ../development/compilers/ocaml/metaocaml-3.09.nix { }; @@ -5439,7 +5441,8 @@ in ocamlPackages_4_00_1 = mkOcamlPackages ocaml_4_00_1 pkgs.ocamlPackages_4_00_1; ocamlPackages_4_01_0 = mkOcamlPackages ocaml_4_01_0 pkgs.ocamlPackages_4_01_0; ocamlPackages_4_02 = mkOcamlPackages ocaml_4_02 pkgs.ocamlPackages_4_02; - ocamlPackages_latest = ocamlPackages_4_02; + ocamlPackages_4_03 = mkOcamlPackages ocaml_4_03 pkgs.ocamlPackages_4_03; + ocamlPackages_latest = ocamlPackages_4_03; ocaml_make = callPackage ../development/ocaml-modules/ocamlmake { };