summary refs log tree commit diff
path: root/pkgs/development/compilers/aliceml/default.nix
blob: db1a8640753ab82ec2b9b8c2d09b16415b150972 (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
{stdenv, gcc, glibc, fetchurl, fetchgit, libtool, autoconf, automake, file, gnumake, which, zsh, m4, pkgconfig, perl, gnome2, pango, sqlite, libxml2, zlib, gmp, smlnj }:

stdenv.mkDerivation {
  name = "aliceml-1.4-7d44dc8e";

  src = fetchgit {
    url = "https://github.com/aliceml/aliceml";
    rev = "7d44dc8e4097c6f85888bbf4ff86d51fe05b0a08";
    sha256 = "1xpvia00cpig0i7qvz29sx7xjic6kd472ng722x4rapz8mjnf8bk";
    fetchSubmodules = true;
  };

  gecodeSrc = fetchurl {
    url = "http://www.gecode.org/download/gecode-1.3.1.tar.gz";
    sha256 = "0mgc6llbq166jmlq3alvagqsg3730670zvbwwkdgsqklw70v9355";
  };

  buildInputs = [
    stdenv gcc glibc
    libtool gnumake autoconf automake
    file which zsh m4 gnome2.gtk zlib gmp
    gnome2.libgnomecanvas pango sqlite
    libxml2 pkgconfig perl smlnj
  ];

  makePatch = ./make.patch;
  seamPatch = ./seam.patch;

  phases = [ "unpackPhase" "patchPhase" "configurePhase" "buildPhase" ];

  patchPhase = ''
    sed -i -e "s@wget ..GECODE_URL. -O - | tar xz@tar xf $gecodeSrc@" make/Makefile
    patch -p1 <$makePatch
    patch -p1 <$seamPatch
  '';

  configurePhase = ''
    make -C make setup PREFIX="$out"
  '';

  buildPhase = ''
    gmp="${gmp.dev}" zlib="${zlib.dev}" PATH=$PATH:`pwd`/seam-support/install/bin make -C make all PREFIX="$out"
  '';

  meta = {
    description = "Functional programming language based on Standard ML";
    longDescription = ''
      Alice ML is a functional programming language based on Standard ML,
      extended with rich support for concurrent, distributed, and constraint
      programming.
    '';
    homepage = "https://www.ps.uni-saarland.de/alice/";
    license = stdenv.lib.licenses.mit;
    maintainers = [ stdenv.lib.maintainers.doublec ];
    broken = true;
  };
}