diff options
| author | Charles Hall <charles@computer.surgery> | 2022-11-16 14:52:48 -0800 |
|---|---|---|
| committer | Charles Hall <charles@computer.surgery> | 2023-09-10 16:02:46 -0700 |
| commit | eae65c5f85a3d23908f72adb653fa2e2fbc89a7d (patch) | |
| tree | 04ca3f35f0cfc4e507af29d2117fef1594bf8602 | |
| parent | cargo-llvm-cov: mark as broken on some platforms (diff) | |
| download | nixpkgs-eae65c5f85a3d23908f72adb653fa2e2fbc89a7d.tar.gz | |
cargo-llvm-cov: refactor to fix tests
| -rw-r--r-- | pkgs/development/tools/rust/cargo-llvm-cov/default.nix | 67 |
1 files changed, 45 insertions, 22 deletions
diff --git a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix index 38db04413ce3..1b9449e0dfc5 100644 --- a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix +++ b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix @@ -1,36 +1,59 @@ { stdenv , lib -, fetchCrate +, fetchurl +, fetchFromGitHub , rustPlatform +, rustc }: -rustPlatform.buildRustPackage rec { +let pname = "cargo-llvm-cov"; version = "0.5.31"; - src = fetchCrate { - inherit pname version; - sha256 = "sha256-HjnP9H1t660PJ5eXzgAhrdDEgqdzzb+9Dbk5RGUPjaQ="; + owner = "taiki-e"; + homepage = "https://github.com/${owner}/${pname}"; + + llvm = rustc.llvmPackages.llvm; + + # Download `Cargo.lock` from crates.io so we don't clutter up Nixpkgs + cargoLock = fetchurl { + name = "Cargo.lock"; + url = "https://crates.io/api/v1/crates/${pname}/${version}/download"; + sha256 = "sha256-BbrdyJgZSIz6GaTdQv1GiFHufRBSbcoHcqqEmr/HvAM="; + downloadToTemp = true; + postFetch = '' + tar xzf $downloadedFile ${pname}-${version}/Cargo.lock + mv ${pname}-${version}/Cargo.lock $out + ''; + }; +in + +rustPlatform.buildRustPackage { + inherit pname version; + + # Use `fetchFromGitHub` instead of `fetchCrate` because the latter does not + # pull in fixtures needed for the test suite + src = fetchFromGitHub { + inherit owner; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-wRo94JVn4InkhrMHFSsEvm2FFIxUsltA57sMMOcL8b0="; }; - cargoSha256 = "sha256-p6zpRRNX4g+jESNSwouWMjZlFhTBFJhe7LirYtFrZ1g="; - # skip tests which require llvm-tools-preview - checkFlags = [ - "--skip bin_crate" - "--skip cargo_config" - "--skip clean_ws" - "--skip instantiations" - "--skip merge" - "--skip merge_failure_mode_all" - "--skip no_test" - "--skip open_report" - "--skip real1" - "--skip show_env" - "--skip virtual1" - ]; + # Upstream doesn't include the lockfile so we need to add it back + postUnpack = '' + cp ${cargoLock} source/Cargo.lock + ''; + + cargoSha256 = "sha256-XcsognndhHenYnlJCNMbrNh+S8FX7qxXUjuV1j2qsmY="; + + # `cargo-llvm-cov` reads these environment variables to find these binaries, + # which are needed to run the tests + LLVM_COV = "${llvm}/bin/llvm-cov"; + LLVM_PROFDATA = "${llvm}/bin/llvm-profdata"; - meta = rec { - homepage = "https://github.com/taiki-e/${pname}"; + meta = { + inherit homepage; changelog = homepage + "/blob/v${version}/CHANGELOG.md"; description = "Cargo subcommand to easily use LLVM source-based code coverage"; longDescription = '' |
