Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 31 additions & 15 deletions pkgs/by-name/an/ante/package.nix
Original file line number Diff line number Diff line change
@@ -1,54 +1,70 @@
{
stdenv,
fetchFromGitHub,
lib,
zlib,
libffi,
libxml2,
llvmPackages_16,
llvmPackages_18,
ncurses,
darwin,
rustPlatform,
}:

rustPlatform.buildRustPackage {
pname = "ante";
version = "unstable-2023-12-18";
version = "0-unstable-2025-07-12";
src = fetchFromGitHub {
owner = "jfecher";
repo = "ante";
rev = "e38231ffa51b84a2ca53b4b0439d1ca5e0dea32a";
hash = "sha256-UKEoOm+Jc0YUwO74Tn038MLeX/c3d2z8I0cTBVfX61U=";
rev = "e1f68f00937ae39badcc42a48c0078b608f294bf";
fetchSubmodules = true;
hash = "sha256-mbjV7S705bSseA/P31jiJiktpUEQ8hS+M4kcs2AM1/Y=";
};

cargoHash = "sha256-uOOSxRoc59XzJT5oVO2NOYC0BwrNq4X6Jd/gQz0ZBp8=";
cargoHash = "sha256-cRF1JFqWpGGQO3fIGcatVY1pp65CvNeM/6LFYDJxdpM=";

/*
https://crates.io/crates/llvm-sys#llvm-compatibility
llvm-sys requires a specific version of llvmPackages,
that is not the same as the one included by default with rustPlatform.
*/
nativeBuildInputs = [ llvmPackages_16.llvm ];
strictDeps = true;

nativeBuildInputs = [ llvmPackages_18.llvm ];
buildInputs = [
zlib
libffi
libxml2
ncurses
];

postPatch = ''
substituteInPlace tests/golden_tests.rs --replace \
substituteInPlace tests/golden_tests.rs --replace-fail \
'target/debug' "target/$(rustc -vV | sed -n 's|host: ||p')/release"

substituteInPlace src/util/mod.rs \
--replace-fail '"gcc"' '"${lib.getExe llvmPackages_18.clang}"'
'';
preBuild =
let
major = lib.versions.major llvmPackages_16.llvm.version;
minor = lib.versions.minor llvmPackages_16.llvm.version;
major = lib.versions.major llvmPackages_18.llvm.version;
minor = lib.versions.minor llvmPackages_18.llvm.version;
llvm-sys-ver = "${major}${builtins.substring 0 1 minor}";
in
''
# On some architectures llvm-sys is not using the package listed inside nativeBuildInputs
export LLVM_SYS_${llvm-sys-ver}_PREFIX=${llvmPackages_16.llvm.dev}
export LLVM_SYS_${llvm-sys-ver}_PREFIX=${llvmPackages_18.llvm.dev}
export ANTE_STDLIB_DIR=$out/lib
mkdir -p $ANTE_STDLIB_DIR
cp -r $src/stdlib/* $ANTE_STDLIB_DIR
'';
# Ante uses the default LLVM target which, because we currently
# don’t include a Darwin version in the target, seemingly defaults
# to the host macOS version, which makes `ld(1)` warn about the
# mismatching deployment targets, which breaks the tests.
#
# TODO: Remove this once it stops being necessary.
preCheck = lib.optionalString stdenv.hostPlatform.isDarwin ''
export MACOSX_DEPLOYMENT_TARGET=$(
${lib.getExe' darwin.DarwinTools "sw_vers"} -productVersion
)
'';

meta = with lib; {
homepage = "https://antelang.org/";
Expand Down
Loading