Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
4.2 kB · 168 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169{ lib, stdenv, fetchFromGitHub, coreutils, ocaml-ng, zlib, pcre, pcre2, neko, mbedtls_2,}:let ocamlDependencies = version: if lib.versionAtLeast version "4.3" then with ocaml-ng.ocamlPackages_4_14; [ ocaml findlib sedlex xml-light ptmap camlp5 sha dune_3 luv extlib ] else with ocaml-ng.ocamlPackages_4_10; [ ocaml findlib sedlex xml-light ptmap camlp5 sha dune_3 luv extlib-1-7-7 ];
defaultPatch = '' substituteInPlace extra/haxelib_src/src/haxelib/client/Main.hx \ --replace '"neko"' '"${neko}/bin/neko"' '';
generic = { hash, version, prePatch ? defaultPatch, patches ? [ ], }: stdenv.mkDerivation { pname = "haxe"; inherit version;
buildInputs = [ zlib neko ] ++ (if lib.versionAtLeast version "4.3" then [ pcre2 ] else [ pcre ]) ++ lib.optional (lib.versionAtLeast version "4.1") mbedtls_2 ++ ocamlDependencies version;
src = fetchFromGitHub { owner = "HaxeFoundation"; repo = "haxe"; rev = version; fetchSubmodules = true; inherit hash; };
inherit prePatch patches;
buildFlags = [ "all" "tools" ];
installPhase = '' install -vd "$out/bin" "$out/lib/haxe/std" cp -vr haxe haxelib std "$out/lib/haxe"
# make wrappers which provide a temporary HAXELIB_PATH with symlinks to multiple repositories HAXELIB_PATH may point to for name in haxe haxelib; do cat > $out/bin/$name <<EOF #!{bash}/bin/bash
if [[ "\$HAXELIB_PATH" =~ : ]]; then NEW_HAXELIB_PATH="\$(${coreutils}/bin/mktemp -d)"
IFS=':' read -ra libs <<< "\$HAXELIB_PATH" for libdir in "\''${libs[@]}"; do for lib in "\$libdir"/*; do if [ ! -e "\$NEW_HAXELIB_PATH/\$(${coreutils}/bin/basename "\$lib")" ]; then ${coreutils}/bin/ln -s "--target-directory=\$NEW_HAXELIB_PATH" "\$lib" fi done done export HAXELIB_PATH="\$NEW_HAXELIB_PATH" $out/lib/haxe/$name "\$@" rm -rf "\$NEW_HAXELIB_PATH" else exec $out/lib/haxe/$name "\$@" fi EOF chmod +x $out/bin/$name done '';
setupHook = ./setup-hook.sh;
dontStrip = true;
# While it might be a good idea to run the upstream test suite, let's at # least make sure we can actually run the compiler. doInstallCheck = true; installCheckPhase = '' # Get out of the source directory to make sure the stdlib from the # sources doesn't interfere with the installed one. mkdir installcheck pushd installcheck > /dev/null cat >> InstallCheck.hx <<EOF class InstallCheck { public static function main() trace("test"); } EOF "$out/bin/haxe" -js installcheck.js -main InstallCheck grep -q 'console\.log.*test' installcheck.js popd > /dev/null '';
meta = with lib; { description = "Programming language targeting JavaScript, Flash, NekoVM, PHP, C++"; homepage = "https://haxe.org"; license = with licenses; [ gpl2Plus mit ]; # based on upstream opam file maintainers = [ maintainers.marcweber maintainers.locallycompact maintainers.logo maintainers.bwkam ]; platforms = platforms.linux ++ platforms.darwin; }; };in{ haxe_4_0 = generic { version = "4.0.5"; hash = "sha256-Ck/py+tZS7dBu/uikhSLKBRNljpg2h5PARX0Btklozg="; }; haxe_4_1 = generic { version = "4.1.5"; hash = "sha256-QP5/jwexQXai1A5Iiwiyrm+/vkdAc+9NVGt+jEQz2mY="; }; haxe_4_3 = generic { version = "4.3.6"; hash = "sha256-m/A0xxB3fw+syPmH1GPKKCcj0a2G/HMRKOu+FKrO5jQ="; patches = [ ./extlib-1.8.0.patch ]; };}