summary refs log tree commit diff
path: root/pkgs/development/tools/ocaml/deriving/default.nix
blob: d53f41b5da5cd016530a44a136bb843a090bb686 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{stdenv, fetchurl, zlib, ocaml, findlib, ncurses
, versionedDerivation, unzip
, version ?
    let match = {
      "ocaml-3.10.0" = "for-3.10.0";
      "ocaml-3.12.1" = "for-3.12.1";
    }; in stdenv.lib.maybeAttr ocaml.name (throw "no matching source of ocaml-deriving for ocaml version: ${ocaml.name}") match
}:

/*
Usage example:

== main.ml ==
type t = | A | B
  deriving (Show)

print_string (Show.show<t> (A));;
==

ocamlopt -pp $out/bin/deriving -I $d/lib -I $d/syntax nums.cmxa show.cmx main.ml
*/

versionedDerivation "ocaml-deriving" version {

  "for-3.10.0" = {
    name = "deriving-0.1.1a";
      # ocaml: 3.10.0
    src = fetchurl {
      url = https://deriving.googlecode.com/files/deriving-0.1.1a.tar.gz;
      sha256 = "0ppmqhc23kccfjn3cnd9n205ky627ni8f5djf8sppmc3lc1m97mb";
    };
  };

  "for-3.12.1" = {
    name = "deriving-git20100903";

    # https://github.com/jaked/deriving
    src = fetchurl {
      name = "for-3.12.0.zip";
      url = https://codeload.github.com/jaked/deriving/zip/c7b9cea3eb4bbfb9e09673faf725f70247c9df78;
      sha256 = "1zrmpqb5lsjmizqs68czmfpsbz9hz30pf97w11kkby175hhj84gi";
    };

    buildInputs = [ unzip ];
  };

}
{
  buildInputs = [ocaml findlib];

  installPhase = ''
    # not all tests compile !?
    # (cd tests; make)

    ensureDir $out/bin
    cp -a lib $out/
    cp -a syntax $out

    # this allows -pp deriving
    ln -s $out/syntax/deriving $out/bin/deriving
  '';

  meta = {
    homepage = "https://code.google.com/p/deriving/source/checkout";
    description = "A library of cryptographic primitives for OCaml";
    license = stdenv.lib.licenses.mit;
    platforms = ocaml.meta.platforms;
    maintainers = [
      stdenv.lib.maintainers.z77z
    ];
  };
}