forked from mirrors/nixpkgs
Merge pull request #4703 from jirkamarsik/ocp-indent
Added ocp-indent-1.4.2b and its dependency ocp-build-1.99.8-beta
This commit is contained in:
commit
f100b7221a
40
pkgs/development/tools/ocaml/ocp-build/default.nix
Normal file
40
pkgs/development/tools/ocaml/ocp-build/default.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{ stdenv, fetchurl, ocaml, findlib, ncurses }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
|
||||||
|
name = "ocp-build-1.99.8-beta";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/OCamlPro/ocp-build/archive/ocp-build.1.99.8-beta.tar.gz";
|
||||||
|
sha256 = "06qh8v7k5m52xbivas08lblspsnvdl0vd7ghfj6wvpnfl8qvqabn";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ ocaml findlib ncurses ];
|
||||||
|
|
||||||
|
patches = [ ./fix-for-no-term.patch ];
|
||||||
|
|
||||||
|
# In the Nix sandbox, the TERM variable is unset and stty does not
|
||||||
|
# work. In such a case, ocp-build crashes due to a bug. The
|
||||||
|
# ./fix-for-no-term.patch fixes this bug in the source code and hence
|
||||||
|
# also in the final installed version of ocp-build. However, it does not
|
||||||
|
# fix the bug in the precompiled bootstrap version of ocp-build that is
|
||||||
|
# used during the compilation process. In order to bypass the bug until
|
||||||
|
# it's also fixed upstream, we simply set TERM to some valid entry in the
|
||||||
|
# terminfo database during the bootstrap.
|
||||||
|
TERM = "xterm";
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "http://typerex.ocamlpro.com/ocp-build.html";
|
||||||
|
description = "A build tool for OCaml";
|
||||||
|
longDescription = ''
|
||||||
|
ocp-build is a build system for OCaml application, based on simple
|
||||||
|
descriptions of packages. ocp-build combines the descriptions of
|
||||||
|
packages, and optimize the parallel compilation of files depending on
|
||||||
|
the number of cores and the automatically-infered dependencies
|
||||||
|
between source files.
|
||||||
|
'';
|
||||||
|
license = licenses.gpl3;
|
||||||
|
platforms = ocaml.meta.platforms;
|
||||||
|
maintainers = [ maintainers.jirkamarsik ];
|
||||||
|
};
|
||||||
|
}
|
11
pkgs/development/tools/ocaml/ocp-build/fix-for-no-term.patch
Normal file
11
pkgs/development/tools/ocaml/ocp-build/fix-for-no-term.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- ocp-build-ocp-build.1.99.8-beta/src/ocp-build/buildTerm.ml 2014-10-27 13:54:37.532023502 +0100
|
||||||
|
+++ ocp-build-ocp-build.1.99.8-beta/src/ocp-build/buildTerm.ml.new 2014-10-27 13:54:43.397099033 +0100
|
||||||
|
@@ -49,7 +49,7 @@
|
||||||
|
| _ -> failwith "stty"
|
||||||
|
end
|
||||||
|
| _ -> raise Not_found
|
||||||
|
- with Unix.Unix_error _ | End_of_file | Failure _ ->
|
||||||
|
+ with Unix.Unix_error _ | End_of_file | Failure _ | Not_found ->
|
||||||
|
try
|
||||||
|
(* shell envvar *)
|
||||||
|
int_of_string (Sys.getenv "COLUMNS")
|
41
pkgs/development/tools/ocaml/ocp-indent/default.nix
Normal file
41
pkgs/development/tools/ocaml/ocp-indent/default.nix
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
{ stdenv, fetchurl, 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.3-beta";
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
|
||||||
|
name = "ocp-indent-1.4.2b";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/OCamlPro/ocp-indent/archive/1.4.2b.tar.gz";
|
||||||
|
sha256 = "1p0n2zcl5kf543x2xlqrz1aa51f0dqal8l392sa41j6wx82j0gpb";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [ ocaml findlib ocpBuild opam cmdliner ];
|
||||||
|
|
||||||
|
createFindlibDestdir = true;
|
||||||
|
|
||||||
|
# The supplied installer uses opam-installer which breaks when run
|
||||||
|
# normally since it tries to `mkdir $HOME`. However, we can use
|
||||||
|
# `opam-installer --script` to get the shell script that performs only
|
||||||
|
# the installation and just run that. Furthermore, we do the same that is
|
||||||
|
# done by pkgs/development/ocaml-modules/react and rename the paths meant
|
||||||
|
# for opam-installer so that they are in line with the other OCaml
|
||||||
|
# libraries in Nixpkgs.
|
||||||
|
installPhase = ''
|
||||||
|
opam-installer --script --prefix=$out ocp-indent.install \
|
||||||
|
| sed s!lib/ocp-indent!lib/ocaml/${getVersion ocaml}/site-lib/ocp-indent! \
|
||||||
|
| sh
|
||||||
|
'';
|
||||||
|
|
||||||
|
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;
|
||||||
|
maintainers = [ maintainers.jirkamarsik ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -3641,6 +3641,10 @@ let
|
||||||
|
|
||||||
ocaml_text = callPackage ../development/ocaml-modules/ocaml-text { };
|
ocaml_text = callPackage ../development/ocaml-modules/ocaml-text { };
|
||||||
|
|
||||||
|
ocpBuild = callPackage ../development/tools/ocaml/ocp-build { };
|
||||||
|
|
||||||
|
ocpIndent = callPackage ../development/tools/ocaml/ocp-indent { };
|
||||||
|
|
||||||
ocsigen_server = callPackage ../development/ocaml-modules/ocsigen-server { };
|
ocsigen_server = callPackage ../development/ocaml-modules/ocsigen-server { };
|
||||||
|
|
||||||
ounit = callPackage ../development/ocaml-modules/ounit { };
|
ounit = callPackage ../development/ocaml-modules/ounit { };
|
||||||
|
|
Loading…
Reference in a new issue