diff --git a/pkgs/development/ocaml-modules/menhir/default.nix b/pkgs/development/ocaml-modules/menhir/default.nix index 5cf2f97e4b74..c8243f326715 100644 --- a/pkgs/development/ocaml-modules/menhir/default.nix +++ b/pkgs/development/ocaml-modules/menhir/default.nix @@ -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; }) diff --git a/pkgs/development/ocaml-modules/menhir/generic.nix b/pkgs/development/ocaml-modules/menhir/generic.nix new file mode 100644 index 000000000000..8758ff3cffbc --- /dev/null +++ b/pkgs/development/ocaml-modules/menhir/generic.nix @@ -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 ]; + }; +}