roc: init at alpha3 (#387308)

This commit is contained in:
Ben Siraphob
2025-07-23 23:11:43 -07:00
committed by GitHub
2 changed files with 128 additions and 0 deletions
+15
View File
@@ -1787,6 +1787,11 @@
githubId = 301546;
name = "Antoine Roy-Gobeil";
};
anton-4 = {
name = "Anton";
github = "Anton-4";
githubId = 17049058;
};
anton-dessiatov = {
email = "anton.dessiatov@gmail.com";
github = "anton-dessiatov";
@@ -3271,6 +3276,11 @@
githubId = 24254289;
name = "Payas Relekar";
};
bhansconnect = {
github = "bhansconnect";
githubId = 8334696;
name = "Brendan Hansknecht";
};
bhasherbel = {
email = "nixos.maintainer@bhasher.com";
github = "BhasherBEL";
@@ -21982,6 +21992,11 @@
githubId = 47790121;
name = "Ryan Burns";
};
rtfeldman = {
github = "rtfeldman";
githubId = 1094080;
name = "Richard Feldman";
};
rtimush = {
email = "rtimush@gmail.com";
github = "rtimush";
+113
View File
@@ -0,0 +1,113 @@
{
lib,
stdenv,
fetchFromGitHub,
libffi,
libxml2,
makeBinaryWrapper,
cmake,
glibc,
rustPlatform,
zig_0_13,
llvmPackages_18,
writableTmpDirAsHomeHook,
valgrind,
autoPatchelfHook,
}:
let
llvmPackages = llvmPackages_18;
rocVersion = "alpha3";
in
rustPlatform.buildRustPackage rec {
pname = "roc";
version = "0-${rocVersion}";
src = fetchFromGitHub {
owner = "roc-lang";
repo = "roc";
rev = "9a0238e0f34c09e27e3ca89e8fc5a684a21bf456";
hash = "sha256-iM16DlTf+1yXBZVH7QqzhKuSkn1n/ZDosnZj3t+io0E=";
};
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
];
useFetchCargoVendor = true;
cargoHash = "sha256-9cOJ79GrnrMEIhFikvCfXa2SI4O0fy50cr4Fb6p4Vho=";
# 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" ];
};
}