nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 111 lines 2.7 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 libffi, 6 libxml2, 7 makeBinaryWrapper, 8 cmake, 9 glibc, 10 rustPlatform, 11 zig_0_13, 12 llvmPackages_18, 13 writableTmpDirAsHomeHook, 14 valgrind, 15 autoPatchelfHook, 16}: 17 18let 19 llvmPackages = llvmPackages_18; 20 rocVersion = "alpha4"; 21in 22 23rustPlatform.buildRustPackage { 24 pname = "roc"; 25 version = "0-${rocVersion}"; 26 27 src = fetchFromGitHub { 28 owner = "roc-lang"; 29 repo = "roc"; 30 rev = "d73ea109cc21442da01387c1e5e911607c74692d"; 31 hash = "sha256-pPnOM4hpbAkGCV47aw5eHbpOujjFtJa3v/3/D8gybO8="; 32 }; 33 34 dontUseZigBuild = true; 35 dontUseZigCheck = true; 36 dontUseZigInstall = true; 37 38 nativeBuildInputs = [ 39 cmake 40 zig_0_13 41 ] 42 ++ lib.optionals stdenv.isLinux [ 43 autoPatchelfHook 44 ]; 45 46 buildInputs = [ 47 libffi 48 libxml2 49 llvmPackages.clang 50 llvmPackages.llvm.dev 51 makeBinaryWrapper 52 ] 53 ++ lib.optionals stdenv.isLinux [ 54 glibc 55 stdenv.cc.cc.lib 56 ]; 57 58 cargoHash = "sha256-wJViSHcezoIchWe4Py9j+9U+YJUA5ja/x94UipuWO2g="; 59 60 preBuild = 61 let 62 llvmVersion = builtins.splitVersion llvmPackages.release_version; 63 llvmMajorMinorStr = builtins.elemAt llvmVersion 0 + "0"; 64 in 65 '' 66 export LLVM_SYS_${llvmMajorMinorStr}_PREFIX=${llvmPackages.llvm.dev} 67 ''; 68 69 postInstall = 70 lib.optionalString stdenv.isLinux '' 71 wrapProgram $out/bin/roc \ 72 --set NIX_GLIBC_PATH ${glibc.out}/lib \ 73 --set NIX_LIBGCC_S_PATH ${stdenv.cc.cc.lib}/lib \ 74 --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} 75 '' 76 + lib.optionalString (!stdenv.isLinux) '' 77 wrapProgram $out/bin/roc --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} 78 ''; 79 80 nativeCheckInputs = [ 81 writableTmpDirAsHomeHook 82 llvmPackages.clang 83 valgrind 84 ]; 85 86 checkPhase = 87 lib.optionalString stdenv.isLinux '' 88 runHook preCheck 89 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 --skip=test_snapshots 90 runHook postCheck 91 '' 92 + lib.optionalString (!stdenv.isLinux) '' 93 runHook preCheck 94 cargo test --release --workspace --exclude test_mono --exclude uitest -- --skip=glue_cli_tests --skip=test_snapshots 95 runHook postCheck 96 ''; 97 98 meta = { 99 description = "Fast, friendly, functional programming language"; 100 mainProgram = "roc"; 101 homepage = "https://www.roc-lang.org/"; 102 changelog = "https://github.com/roc-lang/roc/releases/tag/${rocVersion}"; 103 license = lib.licenses.upl; 104 maintainers = [ 105 lib.maintainers.anton-4 106 lib.maintainers.bhansconnect 107 lib.maintainers.rtfeldman 108 ]; 109 platforms = [ "x86_64-linux" ]; 110 }; 111}