biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / top-level / haxe-packages.nix
blobe3221412aaa103dfead9fca69aeff58430a7651c
1 { stdenv, lib, fetchzip, fetchFromGitHub, haxe, neko, jdk, mono }:
3 let
4   withCommas = lib.replaceStrings [ "." ] [ "," ];
6   # simulate "haxelib dev $libname ."
7   simulateHaxelibDev = libname: ''
8     devrepo=$(mktemp -d)
9     mkdir -p "$devrepo/${withCommas libname}"
10     echo $(pwd) > "$devrepo/${withCommas libname}/.dev"
11     export HAXELIB_PATH="$HAXELIB_PATH:$devrepo"
12   '';
14   installLibHaxe = { libname, version, files ? "*" }: ''
15     mkdir -p "$out/lib/haxe/${withCommas libname}/${withCommas version}"
16     echo -n "${version}" > $out/lib/haxe/${withCommas libname}/.current
17     cp -dpR ${files} "$out/lib/haxe/${withCommas libname}/${withCommas version}/"
18   '';
20   buildHaxeLib =
21     { libname
22     , version
23     , sha256
24     , meta
25     , ...
26     } @ attrs:
27     stdenv.mkDerivation (attrs // {
28       name = "${libname}-${version}";
30       buildInputs = (attrs.buildInputs or [ ]) ++ [ haxe neko ]; # for setup-hook.sh to work
31       src = fetchzip rec {
32         name = "${libname}-${version}";
33         url = "http://lib.haxe.org/files/3.0/${withCommas name}.zip";
34         inherit sha256;
35         stripRoot = false;
36       };
38       installPhase = attrs.installPhase or ''
39         runHook preInstall
40         (
41           if [ $(ls $src | wc -l) == 1 ]; then
42             cd $src/* || cd $src
43           else
44             cd $src
45           fi
46           ${installLibHaxe { inherit libname version; }}
47         )
48         runHook postInstall
49       '';
51       meta = {
52         homepage = "http://lib.haxe.org/p/${libname}";
53         license = lib.licenses.bsd2;
54         platforms = lib.platforms.all;
55         description = throw "please write meta.description";
56       } // attrs.meta;
57     });
60   format = buildHaxeLib {
61     libname = "format";
62     version = "3.5.0";
63     sha256 = "sha256-5vZ7b+P74uGx0Gb7X/+jbsx5048dO/jv5nqCDtw5y/A=";
64     meta.description = "A Haxe Library for supporting different file formats";
65   };
67   heaps = buildHaxeLib {
68     libname = "heaps";
69     version = "1.9.1";
70     sha256 = "sha256-i5EIKnph80eEEHvGXDXhIL4t4+RW7OcUV5zb2f3ItlI=";
71     meta.description = "The GPU Game Framework";
72   };
74   hlopenal = buildHaxeLib {
75     libname = "hlopenal";
76     version = "1.5.0";
77     sha256 = "sha256-mJWFGBJPPAhVwsB2HzMfk4szSyjMT4aw543YhVqIan4=";
78     meta.description = "OpenAL support for Haxe/HL";
79   };
81   hlsdl = buildHaxeLib {
82     libname = "hlsdl";
83     version = "1.10.0";
84     sha256 = "sha256-kmC2EMDy1mv0jFjwDj+m0CUvKal3V7uIGnMxJBRYGms=";
85     meta.description = "SDL/GL support for Haxe/HL";
86   };
88   hxcpp = buildHaxeLib rec {
89     libname = "hxcpp";
90     version = "4.1.15";
91     sha256 = "1ybxcvwi4655563fjjgy6xv5c78grjxzadmi3l1ghds48k1rh50p";
92     postFixup = ''
93       for f in $out/lib/haxe/${withCommas libname}/${withCommas version}/{,project/libs/nekoapi/}bin/Linux{,64}/*; do
94         chmod +w "$f"
95         patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker)   "$f" || true
96         patchelf --set-rpath ${ lib.makeLibraryPath [ stdenv.cc.cc ] }  "$f" || true
97       done
98     '';
99     meta.description = "Runtime support library for the Haxe C++ backend";
100   };
102   hxjava = buildHaxeLib {
103     libname = "hxjava";
104     version = "3.2.0";
105     sha256 = "1vgd7qvsdxlscl3wmrrfi5ipldmr4xlsiwnj46jz7n6izff5261z";
106     meta.description = "Support library for the Java backend of the Haxe compiler";
107     propagatedBuildInputs = [ jdk ];
108   };
110   hxcs = buildHaxeLib {
111     libname = "hxcs";
112     version = "3.4.0";
113     sha256 = "0f5vgp2kqnpsbbkn2wdxmjf7xkl0qhk9lgl9kb8d5wdy89nac6q6";
114     meta.description = "Support library for the C# backend of the Haxe compiler";
115     propagatedBuildInputs = [ mono ];
116   };
118   hxnodejs_4 = buildHaxeLib {
119     libname = "hxnodejs";
120     version = "4.0.9";
121     sha256 = "0b7ck48nsxs88sy4fhhr0x1bc8h2ja732zzgdaqzxnh3nir0bajm";
122     meta.description = "Extern definitions for node.js 4.x";
123   };
125   hxnodejs_6 =
126     let
127       libname = "hxnodejs";
128       version = "6.9.0";
129     in
130     stdenv.mkDerivation {
131       name = "${libname}-${version}";
132       src = fetchFromGitHub {
133         owner = "HaxeFoundation";
134         repo = "hxnodejs";
135         rev = "cf80c6a";
136         sha256 = "0mdiacr5b2m8jrlgyd2d3vp1fha69lcfb67x4ix7l7zfi8g460gs";
137       };
138       installPhase = installLibHaxe { inherit libname version; };
139       meta = {
140         homepage = "http://lib.haxe.org/p/${libname}";
141         license = lib.licenses.bsd2;
142         platforms = lib.platforms.all;
143         description = "Extern definitions for node.js 6.9";
144       };
145     };