d68e9b855c
Introduces a new environment variable called HAXELIB_PATH and the patch for haxelib is trying to search that environment variable for other libraries. If the haxelib path for a particular library isn't found, it reverts to the normal behaviour of searching the user's home directory for a file called .haxelib, which in turn points to a repsitory path and that in turn has .current/.dev files to point it to the right version number. This avoids workarounds like this when using Nix to build Haxe projects: configurePhase = '' export HOME="$(pwd)" echo "$(pwd)" > .haxelib mkdir dependency1 echo dev > dependency1/.current echo "${dependency1}" > dependency1/.dev mkdir dependency2 echo dev > dependency2/.current echo "${dependency2}" > dependency2/.dev ''; Now every haxelib is expected to be in $out/lib/haxe/$name and whenever it is listed in buildInputs of another Haxe derivation, HAXELIB_PATH gets automatically set in the build environment. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
42 lines
1 KiB
Nix
42 lines
1 KiB
Nix
{ stdenv, fetchgit, ocaml, zlib, neko }:
|
|
|
|
stdenv.mkDerivation {
|
|
name = "haxe-3.1.3";
|
|
|
|
buildInputs = [ocaml zlib neko];
|
|
|
|
src = fetchgit {
|
|
url = "https://github.com/HaxeFoundation/haxe.git";
|
|
sha256 = "1p4yja6flv2r04q9lcrjxia3f3fsmhi3d88s0lz0nf0r4m61bjz0";
|
|
fetchSubmodules = true;
|
|
|
|
# Tag 3.1.3
|
|
rev = "7be30670b2f1f9b6082499c8fb9e23c0a6df6c28";
|
|
};
|
|
|
|
prePatch = ''
|
|
sed -i -e 's|com.class_path <- \[|&"'"$out/lib/haxe/std/"'";|' main.ml
|
|
'';
|
|
|
|
patches = [ ./haxelib-nix.patch ];
|
|
|
|
buildFlags = [ "all" "tools" ];
|
|
|
|
installPhase = ''
|
|
install -vd "$out/bin" "$out/lib/haxe/std"
|
|
install -vt "$out/bin" haxe haxelib
|
|
cp -vr std "$out/lib/haxe"
|
|
'';
|
|
|
|
setupHook = ./setup-hook.sh;
|
|
|
|
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;
|
|
};
|
|
}
|