diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix | 58 |
1 files changed, 48 insertions, 10 deletions
diff --git a/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix b/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix index d8b31810c54c..4a30a70fa09a 100644 --- a/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix +++ b/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix @@ -1,16 +1,54 @@ -{ pkgs, callPackage, CoreServices }: +{ lib, stdenv, fetchFromGitHub, rustPlatform, CoreServices, cmake +, libiconv +, useMimalloc ? false +, doCheck ? true +}: -{ - rust-analyzer-unwrapped = callPackage ./generic.nix rec { - rev = "2021-03-22"; - version = "unstable-${rev}"; - sha256 = "sha256-Q8yr5x4+R9UCk5kw/nJgBtGVBeZTDwyuwpyNJUKSPzA="; - cargoSha256 = "sha256-cJ5KPNrX1H4IfHENDGyU2rgxl5TTqvoeXk7558oqwuA="; +rustPlatform.buildRustPackage rec { + pname = "rust-analyzer-unwrapped"; + version = "2021-04-19"; + cargoSha256 = "sha256-CXkI3CQ/v6RBMM2Dpp2u+qnRwba+nqzeaPSJGBiQUoY="; - inherit CoreServices; + src = fetchFromGitHub { + owner = "rust-analyzer"; + repo = "rust-analyzer"; + rev = version; + sha256 = "sha256-W/cUwZEvlUXzqQ/futeNFwDWR/cTL/RLZaW2srIs83Q="; }; - rust-analyzer = callPackage ./wrapper.nix {} { - unwrapped = pkgs.rust-analyzer-unwrapped; + buildAndTestSubdir = "crates/rust-analyzer"; + + cargoBuildFlags = lib.optional useMimalloc "--features=mimalloc"; + + nativeBuildInputs = lib.optional useMimalloc cmake; + + buildInputs = lib.optionals stdenv.isDarwin [ + CoreServices + libiconv + ]; + + RUST_ANALYZER_REV = version; + + inherit doCheck; + preCheck = lib.optionalString doCheck '' + export RUST_SRC_PATH=${rustPlatform.rustLibSrc} + ''; + + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + versionOutput="$($out/bin/rust-analyzer --version)" + echo "'rust-analyzer --version' returns: $versionOutput" + [[ "$versionOutput" == "rust-analyzer ${version}" ]] + runHook postInstallCheck + ''; + + passthru.updateScript = ./update.sh; + + meta = with lib; { + description = "An experimental modular compiler frontend for the Rust language"; + homepage = "https://github.com/rust-analyzer/rust-analyzer"; + license = with licenses; [ mit asl20 ]; + maintainers = with maintainers; [ oxalica ]; }; } |