Merge pull request #10964 from vbgl/master

menhir: refactor to generic; init at 20151110 for OCaml >= 4.02
This commit is contained in:
vbgl 2015-11-12 01:15:26 +01:00
commit b3d2a2874a
2 changed files with 55 additions and 47 deletions

@ -1,51 +1,12 @@
{stdenv, fetchurl, ocaml, findlib}:
{ stdenv, fetchurl, ocaml, findlib
, version ? if stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.02" then "20151110" else "20140422"
}@args:
let
ocaml_version = (builtins.parseDrvName ocaml.name).version;
sha256 =
if version == "20140422" then "1ki1f2id6a14h9xpv2k8yb6px7dyw8cvwh39csyzj4qpzx7wia0d"
else if version == "20151110" then "12ijr1gd808f79d7k7ji9zg23xr4szayfgvm6njqamh0jnspq70r"
else throw ("menhir: unknown version " ++ version);
in
stdenv.mkDerivation {
name = "menhir-20140422";
src = fetchurl {
url = http://pauillac.inria.fr/~fpottier/menhir/menhir-20140422.tar.gz;
sha256 = "1ki1f2id6a14h9xpv2k8yb6px7dyw8cvwh39csyzj4qpzx7wia0d";
};
buildInputs = [ocaml findlib];
createFindlibDestdir = true;
preBuild = ''
#Fix makefiles.
RM=$(type -p rm)
CHMOD=$(type -p chmod)
ENV=$(type -p env)
for f in src/Makefile demos/OMakefile* demos/Makefile* demos/ocamldep.wrapper
do
substituteInPlace $f \
--replace /bin/rm $RM \
--replace /bin/chmod $CHMOD \
--replace /usr/bin/env $ENV
done
export PREFIX=$out
'';
meta = with stdenv.lib; {
homepage = http://pauillac.inria.fr/~fpottier/menhir/;
description = "A LR(1) parser generator for OCaml";
longDescription = ''
Menhir is a LR(1) parser generator for the Objective Caml programming
language. That is, Menhir compiles LR(1) grammar specifications down
to OCaml code. Menhir was designed and implemented by François Pottier
and Yann Régis-Gianas.
'';
license = with licenses; [
qpl /* generator */
lgpl2 /* library */
];
platforms = ocaml.meta.platforms;
maintainers = with maintainers; [ z77z ];
};
}
import ./generic.nix (args // { inherit version sha256; })

@ -0,0 +1,47 @@
{ version, sha256, stdenv, fetchurl, ocaml, findlib }:
stdenv.mkDerivation {
name = "menhir-${version}";
src = fetchurl {
url = "http://pauillac.inria.fr/~fpottier/menhir/menhir-${version}.tar.gz";
inherit sha256;
};
buildInputs = [ ocaml findlib ];
createFindlibDestdir = true;
preBuild = ''
#Fix makefiles.
RM=$(type -p rm)
CHMOD=$(type -p chmod)
ENV=$(type -p env)
for f in src/Makefile demos/OMakefile* demos/Makefile* demos/ocamldep.wrapper
do
substituteInPlace $f \
--replace /bin/rm $RM \
--replace /bin/chmod $CHMOD \
--replace /usr/bin/env $ENV
done
export PREFIX=$out
'';
meta = with stdenv.lib; {
homepage = http://pauillac.inria.fr/~fpottier/menhir/;
description = "A LR(1) parser generator for OCaml";
longDescription = ''
Menhir is a LR(1) parser generator for the Objective Caml programming
language. That is, Menhir compiles LR(1) grammar specifications down
to OCaml code. Menhir was designed and implemented by François Pottier
and Yann Régis-Gianas.
'';
license = with licenses; [
qpl /* generator */
lgpl2 /* library */
];
platforms = ocaml.meta.platforms;
maintainers = with maintainers; [ z77z ];
};
}