From 32e12ff4ed94797960a842410ca96dc2c29bc97b Mon Sep 17 00:00:00 2001 From: romildo Date: Wed, 31 May 2017 16:16:24 -0300 Subject: [PATCH 1/5] cmdliner_1_0: init at 1.0.0 Version 1.0 breaks API and some packages does currently not compile with it. So it is added as a new package. --- .../ocaml-modules/cmdliner/1.0.nix | 42 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 2 + 2 files changed, 44 insertions(+) create mode 100644 pkgs/development/ocaml-modules/cmdliner/1.0.nix diff --git a/pkgs/development/ocaml-modules/cmdliner/1.0.nix b/pkgs/development/ocaml-modules/cmdliner/1.0.nix new file mode 100644 index 00000000000..9448610a378 --- /dev/null +++ b/pkgs/development/ocaml-modules/cmdliner/1.0.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam, topkg, result }: + +let + pname = "cmdliner"; +in + +assert stdenv.lib.versionAtLeast ocaml.version "4.01.0"; + +stdenv.mkDerivation rec { + name = "ocaml-${pname}-${version}"; + version = "1.0.0"; + + src = fetchurl { + url = "http://erratique.ch/software/${pname}/releases/${pname}-${version}.tbz"; + sha256 = "1ryn7qis0izg0wcal8zdlikzzl689l75y6f4zc6blrm93y5agy9x"; + }; + + unpackCmd = "tar xjf $src"; + + nativeBuildInputs = [ ocamlbuild opam topkg ]; + buildInputs = [ ocaml findlib ]; + propagatedBuildInputs = [ result ]; + + createFindlibDestdir = true; + + buildPhase = '' + ocaml -I ${findlib}/lib/ocaml/${ocaml.version}/site-lib pkg/pkg.ml build + ''; + + installPhase = '' + opam-installer --script --prefix=$out | sh + ln -s $out/lib/${pname} $out/lib/ocaml/${ocaml.version}/site-lib/ + ''; + + meta = with stdenv.lib; { + homepage = http://erratique.ch/software/cmdliner; + description = "An OCaml module for the declarative definition of command line interfaces"; + license = licenses.bsd3; + platforms = ocaml.meta.platforms or []; + maintainers = [ maintainers.vbgl ]; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 83c7d610c72..bf0ea759abd 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -130,6 +130,8 @@ let cmdliner = callPackage ../development/ocaml-modules/cmdliner { }; + cmdliner_1_0 = callPackage ../development/ocaml-modules/cmdliner/1.0.nix { }; + cohttp = callPackage ../development/ocaml-modules/cohttp { lwt = ocaml_lwt; }; From 61b8fddf5251e418eda3e93d63a0a608e56cc848 Mon Sep 17 00:00:00 2001 From: romildo Date: Wed, 31 May 2017 16:22:35 -0300 Subject: [PATCH 2/5] cmdliner: 1.0.0 -> 0.9.8 Downgrade to version 0.9.8 because the new version 1.0.0 breaks API and some pacakges do not yet compile with it. --- .../ocaml-modules/cmdliner/default.nix | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/pkgs/development/ocaml-modules/cmdliner/default.nix b/pkgs/development/ocaml-modules/cmdliner/default.nix index 9448610a378..e8824f31807 100644 --- a/pkgs/development/ocaml-modules/cmdliner/default.nix +++ b/pkgs/development/ocaml-modules/cmdliner/default.nix @@ -1,33 +1,30 @@ -{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam, topkg, result }: +{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }: let pname = "cmdliner"; in -assert stdenv.lib.versionAtLeast ocaml.version "4.01.0"; +assert stdenv.lib.versionAtLeast ocaml.version "3.12"; stdenv.mkDerivation rec { + name = "ocaml-${pname}-${version}"; - version = "1.0.0"; + version = "0.9.8"; src = fetchurl { url = "http://erratique.ch/software/${pname}/releases/${pname}-${version}.tbz"; - sha256 = "1ryn7qis0izg0wcal8zdlikzzl689l75y6f4zc6blrm93y5agy9x"; + sha256 = "0hdxlkgiwjml9dpaa80282a8350if7mc1m6yz2mrd7gci3fszykx"; }; unpackCmd = "tar xjf $src"; - - nativeBuildInputs = [ ocamlbuild opam topkg ]; + nativeBuildInputs = [ ocamlbuild opam ]; buildInputs = [ ocaml findlib ]; - propagatedBuildInputs = [ result ]; createFindlibDestdir = true; - buildPhase = '' - ocaml -I ${findlib}/lib/ocaml/${ocaml.version}/site-lib pkg/pkg.ml build - ''; - - installPhase = '' + configurePhase = "ocaml pkg/git.ml"; + buildPhase = "ocaml pkg/build.ml native=true native-dynlink=true"; + installPhase = '' opam-installer --script --prefix=$out | sh ln -s $out/lib/${pname} $out/lib/ocaml/${ocaml.version}/site-lib/ ''; From 98058ef4447158761f5fb501f6f78de69e22aaa8 Mon Sep 17 00:00:00 2001 From: romildo Date: Wed, 31 May 2017 17:13:28 -0300 Subject: [PATCH 3/5] ocp-indent: depends on cmdliner minimum version 1.0.0 --- pkgs/top-level/ocaml-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index bf0ea759abd..4c8bf5ce14d 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -388,7 +388,7 @@ let ocpBuild = callPackage ../development/tools/ocaml/ocp-build { }; - ocpIndent = callPackage ../development/tools/ocaml/ocp-indent { }; + ocpIndent = callPackage ../development/tools/ocaml/ocp-indent { cmdliner = cmdliner_1_0; }; ocp-index = callPackage ../development/tools/ocaml/ocp-index { }; From 7ba979cac370ebe4bbb4af565b198e116a4a6214 Mon Sep 17 00:00:00 2001 From: romildo Date: Thu, 1 Jun 2017 18:43:27 -0300 Subject: [PATCH 4/5] ocp-indent: readd old version 1.5.2 Some packages (ocp-index, for instance) are not yet compatible with newer versions of ocp-indent. So version 1.5.2 is still needed. --- .../tools/ocaml/ocp-indent/1.5.2.nix | 37 +++++++++++++++++++ pkgs/top-level/ocaml-packages.nix | 1 + 2 files changed, 38 insertions(+) create mode 100644 pkgs/development/tools/ocaml/ocp-indent/1.5.2.nix diff --git a/pkgs/development/tools/ocaml/ocp-indent/1.5.2.nix b/pkgs/development/tools/ocaml/ocp-indent/1.5.2.nix new file mode 100644 index 00000000000..ee70a80b6af --- /dev/null +++ b/pkgs/development/tools/ocaml/ocp-indent/1.5.2.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchzip, ocaml, findlib, ocpBuild, opam, cmdliner }: + +let inherit (stdenv.lib) getVersion versionAtLeast; in + +assert versionAtLeast (getVersion ocaml) "3.12.1"; +assert versionAtLeast (getVersion ocpBuild) "1.99.6-beta"; +assert versionAtLeast "0.9.8" (getVersion cmdliner); + +stdenv.mkDerivation { + + name = "ocp-indent-1.5.2"; + + src = fetchzip { + url = "https://github.com/OCamlPro/ocp-indent/archive/1.5.2.tar.gz"; + sha256 = "0ynv2yhm7akpvqp72pdabhddwr352s1k85q8m1khsvspgg1mkiqz"; + }; + + nativeBuildInputs = [ ocpBuild opam ]; + + buildInputs = [ ocaml findlib cmdliner ]; + + createFindlibDestdir = true; + + preConfigure = "patchShebangs ./install.sh"; + + postInstall = '' + mv $out/lib/{ocp-indent,ocaml/${getVersion ocaml}/site-lib/} + ''; + + meta = with stdenv.lib; { + homepage = "http://typerex.ocamlpro.com/ocp-indent.html"; + description = "A customizable tool to indent OCaml code"; + license = licenses.gpl3; + platforms = ocaml.meta.platforms or []; + maintainers = [ maintainers.jirkamarsik ]; + }; +} diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index 4c8bf5ce14d..ff6e12b63c1 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -389,6 +389,7 @@ let ocpBuild = callPackage ../development/tools/ocaml/ocp-build { }; ocpIndent = callPackage ../development/tools/ocaml/ocp-indent { cmdliner = cmdliner_1_0; }; + ocpIndent_1_5_2 = callPackage ../development/tools/ocaml/ocp-indent/1.5.2.nix { }; ocp-index = callPackage ../development/tools/ocaml/ocp-index { }; From 4103994414cf55ede5242ea19b8ca7a8982376d7 Mon Sep 17 00:00:00 2001 From: romildo Date: Thu, 1 Jun 2017 18:47:59 -0300 Subject: [PATCH 5/5] ocp-index: add explicitly dependency on ocpIndent_1_5_2 ocp-index does not yet compile with newer versions of ocp-indent. --- pkgs/top-level/ocaml-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index ff6e12b63c1..ab82597b9e5 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -391,7 +391,7 @@ let ocpIndent = callPackage ../development/tools/ocaml/ocp-indent { cmdliner = cmdliner_1_0; }; ocpIndent_1_5_2 = callPackage ../development/tools/ocaml/ocp-indent/1.5.2.nix { }; - ocp-index = callPackage ../development/tools/ocaml/ocp-index { }; + ocp-index = callPackage ../development/tools/ocaml/ocp-index { ocpIndent = ocpIndent_1_5_2; }; ocplib-endian = callPackage ../development/ocaml-modules/ocplib-endian { };