nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 fetchurl,
6 ocaml,
7 findlib,
8}:
9
10let
11 params =
12 if lib.versionAtLeast ocaml.version "4.07" then
13 rec {
14 version = "0.2";
15 src = fetchFromGitHub {
16 owner = "grain-lang";
17 repo = "dypgen";
18 rev = version;
19 hash = "sha256-fKuO/e5YbA2B7XcghWl9pXxwvKw9YlhnmZDZcuKe3cs=";
20 };
21 }
22 else if lib.versionOlder ocaml.version "4.06" then
23 {
24 version = "20120619-1";
25 src = fetchurl {
26 url = "http://dypgen.free.fr/dypgen-20120619-1.tar.bz2";
27 sha256 = "ecb53d6e469e9ec4d57ee6323ff498d45b78883ae13618492488e7c5151fdd97";
28 };
29 }
30 else
31 throw "dypgen is not available for OCaml ${ocaml.version}";
32in
33
34stdenv.mkDerivation {
35 pname = "ocaml${ocaml.version}-dypgen";
36 inherit (params) src version;
37
38 nativeBuildInputs = [
39 ocaml
40 findlib
41 ];
42
43 strictDeps = true;
44
45 createFindlibDestdir = true;
46
47 buildPhase = ''
48 make
49 '';
50
51 makeFlags = [
52 "BINDIR=$(out)/bin"
53 "MANDIR=$(out)/usr/share/man/man1"
54 "DYPGENLIBDIR=$(out)/lib/ocaml/${ocaml.version}/site-lib"
55 ];
56
57 meta = {
58 homepage = "http://dypgen.free.fr";
59 description = "Dypgen GLR self extensible parser generator";
60 license = lib.licenses.cecill-b;
61 inherit (ocaml.meta) platforms;
62 };
63}