summary refs log tree commit diff
path: root/pkgs/development/compilers/haxe/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/haxe/default.nix')
-rw-r--r--pkgs/development/compilers/haxe/default.nix166
1 files changed, 31 insertions, 135 deletions
diff --git a/pkgs/development/compilers/haxe/default.nix b/pkgs/development/compilers/haxe/default.nix
index 8018b478e809..817e4573df24 100644
--- a/pkgs/development/compilers/haxe/default.nix
+++ b/pkgs/development/compilers/haxe/default.nix
@@ -1,141 +1,37 @@
-args: with args;
+{ stdenv, fetchsvn, ocaml, zlib, neko }:
 
-let
+stdenv.mkDerivation {
+  name = "haxe-2.10";
 
-    src_haxe_swflib = {
-      # REGION AUTO UPDATE:                                { name = "haxe_swflib"; type="cvs"; cvsRoot = ":pserver:anonymous@cvs.motion-twin.com:/cvsroot"; module = "ocaml/swflib"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe_swflib-F_10-43-46.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe_swflib-F_10-43-46.tar.gz"; sha256 = "a63de75e48bf500ef0e8ef715d178d32f0ef113ded8c21bbca698a8cc70e7b58"; });
-      # END
-    }.src;
+  buildInputs = [ocaml zlib neko];
 
-    src_haxe_extc = { 
-      # REGION AUTO UPDATE:                                { name = "haxe_extc"; type="cvs"; cvsRoot = ":pserver:anonymous@cvs.motion-twin.com:/cvsroot"; module = "ocaml/extc"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe_extc-F_10-43-47.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe_extc-F_10-43-47.tar.gz"; sha256 = "d0a9980527d62ac6cfe27925ddb0964d334ec382f813fdfb8bd6c59fbbede730"; });
-      # END
-    }.src;
-
-    src_haxe_extlib_dev = { 
-      # REGION AUTO UPDATE:                                { name = "haxe_extlib_dev"; type="cvs"; cvsRoot = ":pserver:anonymous@cvs.motion-twin.com:/cvsroot"; module = "ocaml/extlib-dev"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe_extlib_dev-F_10-43-48.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe_extlib_dev-F_10-43-48.tar.gz"; sha256 = "6b9037230e2615dd5e22f4e7f4165c84f2816bc526957683afc945394fcdf67e"; });
-      # END
-    }.src;
-
-    src_haxe_xml_light = { 
-      # REGION AUTO UPDATE:                                { name = "haxe_xml_light"; type="cvs"; cvsRoot = ":pserver:anonymous@cvs.motion-twin.com:/cvsroot"; module = "ocaml/xml-light"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe_xml_light-F_10-43-48.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe_xml_light-F_10-43-48.tar.gz"; sha256 = "be29d9e22ad0dbcb3d447cbbc14907aff5f89bb562b8db369659d299f3a5b44f"; });
-      # END
-    }.src;
-
-    src_haxe_neko_include = { 
-      # REGION AUTO UPDATE:                                { name = "haxe_neko_include"; type="cvs"; cvsRoot = ":pserver:anonymous@cvs.motion-twin.com:/cvsroot"; module = "neko/libs/include/ocaml"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe_neko_include-F_10-43-49.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe_neko_include-F_10-43-49.tar.gz"; sha256 = "e49efc1b348fa6e0f6fb40079a2d380b947d9ebda31843bc293f3cc77f8453db"; });
-      # END
-    }.src;
-
-    src_haxe = {
-      # REGION AUTO UPDATE:       { name="haxe-read-only"; type="svn"; url="http://haxe.googlecode.com/svn/trunk"; groups = "haxe_group"; }
-      src = sourceFromHead "haxe-read-only-3220.tar.gz"
-                   (fetchurl { url = "http://mawercer.de/~nix/repos/haxe-read-only-3220.tar.gz"; sha256 = "2b6702dca95d0829e539cea07b8224e3848e584a425ce8f8e0984a7a2bf7b1f8"; });
-      # END
-    }.src;
-
-
-    # the HaXe compiler
-    haxe = stdenv.mkDerivation {
-      name = "haxe-cvs";
-
-      buildInputs = [ocaml zlib makeWrapper];
-
-      src = src_haxe;
-
-      inherit zlib;
-
-      buildPhase = ''
-        set -x
-        mkdir -p ocaml/{swflib,extc,extlib-dev,xml-light} neko/libs
-
-        # strange setup. install.ml seems to co the same repo again into haxe directory!
-        mkdir haxe
-        tar xfz $src --strip-components=1 -C haxe
-
-        t(){ tar xfz $1 -C $2 --strip-components=2; }
-        t ${src_haxe_swflib} ocaml/swflib
-        t ${src_haxe_extc} ocaml/extc
-        t ${src_haxe_extlib_dev} ocaml/extlib-dev
-        t ${src_haxe_xml_light} ocaml/xml-light
-        t ${src_haxe_neko_include} neko/libs
-
-        sed -e '/download();/d' \
-            -e "s@/usr/lib/@''${zlib}/lib/@g" \
-            doc/install.ml > install.ml
-        
-        ocaml install.ml
-      '';
-
-      # probably rpath should be set properly
-      installPhase = ''
-        mkdir -p $out/lib/haxe
-        cp -r bin $out/bin
-        wrapProgram "$out/bin/haxe" \
-          --set "LD_LIBRARY_PATH" $zlib/lib \
-          --set HAXE_LIBRARY_PATH "''${HAXE_LIBRARY_PATH}''${HAXE_LIBRARY_PATH:-:}:$out/lib/haxe/std:."
-        cp -r std $out/lib/haxe/
-      '';
-
-      meta = { 
-        description = "programming language targeting JavaScript, Flash, NekVM, PHP, C++";
-        homepage = http://haxe.org;
-        license = ["GPLv2" "BSD2" /*?*/ ];  # -> docs/license.txt
-        maintainers = [args.lib.maintainers.marcweber];
-        platforms = args.lib.platforms.linux;
-      };
-    };
-
-    # build a tool found in std/tools/${name} source directory
-    # the .hxml files contain a recipe  to cerate a binary.
-    tool = { name, description }: stdenv.mkDerivation {
-
-        inherit name;
-
-        src = src_haxe;
-
-        buildPhase = ''
-          cd std/tools/${name};
-          haxe *.hxml
-          mkdir -p $out/bin
-          mv ${name} $out/bin/
-        '';
-
-        buildInputs = [haxe neko];
-
-        dontStrip=1;
-
-        installPhase=":";
-
-        meta = {
-          inherit description;
-          homepage = http://haxe.org;
-          # license = "?"; TODO
-          maintainers = [args.lib.maintainers.marcweber];
-          platforms = args.lib.platforms.linux;
-        };
-
-      };
-
-in
-
-{
-
-  inherit haxe;
-
-  haxelib = tool {
-    name = "haxelib";
-    description = "haxelib is a HaXe library management tool similar to easyinstall or ruby gems";
+  src = fetchsvn {
+    url = "http://haxe.googlecode.com/svn/tags/v2-10";
+    sha256 = "dbd3c655e4136eb68a165ef83b96bfc1f0f2eb9ec8729603b19bcd717a61a679";
   };
 
+  prePatch = ''
+    sed -i -e 's|com.class_path <- \[|&"'"$out/lib/haxe/std/"'";|' main.ml
+  '';
+
+  postBuild = ''
+    find std/tools -name '*.n' -delete
+    rm std/tools/haxedoc/haxedoc std/tools/haxelib/haxelib
+  '';
+
+  installPhase = ''
+    install -vd "$out/bin" "$out/lib/haxe/std"
+    install -vt "$out/bin" haxe haxelib haxedoc
+    cp -vr std "$out/lib/haxe"
+  '';
+
+  dontStrip = true;
+
+  meta = {
+    description = "Programming language targeting JavaScript, Flash, NekoVM, PHP, C++";
+    homepage = http://haxe.org;
+    license = ["GPLv2" "BSD2" /*?*/ ];  # -> docs/license.txt
+    maintainers = [stdenv.lib.maintainers.marcweber];
+    platforms = stdenv.lib.platforms.linux;
+  };
 }