Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
111 lines
2.6 KiB
Nix
Executable File
111 lines
2.6 KiB
Nix
Executable File
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
libffi,
|
|
libxml2,
|
|
makeBinaryWrapper,
|
|
cmake,
|
|
glibc,
|
|
rustPlatform,
|
|
zig_0_13,
|
|
llvmPackages_18,
|
|
writableTmpDirAsHomeHook,
|
|
valgrind,
|
|
autoPatchelfHook,
|
|
}:
|
|
|
|
let
|
|
llvmPackages = llvmPackages_18;
|
|
rocVersion = "alpha4";
|
|
in
|
|
|
|
rustPlatform.buildRustPackage {
|
|
pname = "roc";
|
|
version = "0-${rocVersion}";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "roc-lang";
|
|
repo = "roc";
|
|
rev = "d73ea109cc21442da01387c1e5e911607c74692d";
|
|
hash = "sha256-pPnOM4hpbAkGCV47aw5eHbpOujjFtJa3v/3/D8gybO8=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
zig_0_13
|
|
]
|
|
++ lib.optionals stdenv.isLinux [
|
|
autoPatchelfHook
|
|
];
|
|
|
|
buildInputs = [
|
|
libffi
|
|
libxml2
|
|
llvmPackages.clang
|
|
llvmPackages.llvm.dev
|
|
makeBinaryWrapper
|
|
]
|
|
++ lib.optionals stdenv.isLinux [
|
|
glibc
|
|
stdenv.cc.cc.lib
|
|
];
|
|
|
|
cargoHash = "sha256-wJViSHcezoIchWe4Py9j+9U+YJUA5ja/x94UipuWO2g=";
|
|
|
|
# prevents zig AccessDenied error github.com/ziglang/zig/issues/6810
|
|
XDG_CACHE_HOME = "xdg_cache";
|
|
|
|
preBuild =
|
|
let
|
|
llvmVersion = builtins.splitVersion llvmPackages.release_version;
|
|
llvmMajorMinorStr = builtins.elemAt llvmVersion 0 + "0";
|
|
in
|
|
''
|
|
export LLVM_SYS_${llvmMajorMinorStr}_PREFIX=${llvmPackages.llvm.dev}
|
|
'';
|
|
|
|
postInstall =
|
|
lib.optionalString stdenv.isLinux ''
|
|
wrapProgram $out/bin/roc \
|
|
--set NIX_GLIBC_PATH ${glibc.out}/lib \
|
|
--set NIX_LIBGCC_S_PATH ${stdenv.cc.cc.lib}/lib \
|
|
--prefix PATH : ${lib.makeBinPath [ stdenv.cc ]}
|
|
''
|
|
+ lib.optionalString (!stdenv.isLinux) ''
|
|
wrapProgram $out/bin/roc --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]}
|
|
'';
|
|
|
|
nativeCheckInputs = [
|
|
writableTmpDirAsHomeHook
|
|
llvmPackages.clang
|
|
valgrind
|
|
];
|
|
|
|
checkPhase =
|
|
lib.optionalString stdenv.isLinux ''
|
|
runHook preCheck
|
|
NIX_GLIBC_PATH=${glibc.out}/lib NIX_LIBGCC_S_PATH=${stdenv.cc.cc.lib}/lib cargo test --release --workspace --exclude test_mono --exclude uitest -- --skip glue_cli_tests
|
|
runHook postCheck
|
|
''
|
|
+ lib.optionalString (!stdenv.isLinux) ''
|
|
runHook preCheck
|
|
cargo test --release --workspace --exclude test_mono --exclude uitest -- --skip glue_cli_tests
|
|
runHook postCheck
|
|
'';
|
|
|
|
meta = {
|
|
description = "Fast, friendly, functional programming language";
|
|
mainProgram = "roc";
|
|
homepage = "https://www.roc-lang.org/";
|
|
changelog = "https://github.com/roc-lang/roc/releases/tag/${rocVersion}";
|
|
license = lib.licenses.upl;
|
|
maintainers = [
|
|
lib.maintainers.anton-4
|
|
lib.maintainers.bhansconnect
|
|
lib.maintainers.rtfeldman
|
|
];
|
|
platforms = [ "x86_64-linux" ];
|
|
};
|
|
}
|