Ihar Hrachyshka dd0f03a56c treewide: remove usage of deprecated apple_sdk framework stubs
They are not doing anything right now. This is in preparation for their
complete removal from the tree.

Note: several changes that affect the derivation inputs (e.g. removal of
references to stub paths in build instructions) were left out. They will
be cleaned up the next iteration and will require special care.

Note: this PR is a result of a mix of ugly regex (not AST) based
automation and some manual labor. For reference, the regex automation
part was hacked in: https://github.com/booxter/nix-clean-apple_sdk

Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
2025-04-19 20:28:20 -04:00

170 lines
4.1 KiB
Nix

{
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 ];
};
}