summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Hall <charles@computer.surgery>2022-11-16 14:52:48 -0800
committerCharles Hall <charles@computer.surgery>2023-09-10 16:02:46 -0700
commiteae65c5f85a3d23908f72adb653fa2e2fbc89a7d (patch)
tree04ca3f35f0cfc4e507af29d2117fef1594bf8602
parentcargo-llvm-cov: mark as broken on some platforms (diff)
downloadnixpkgs-eae65c5f85a3d23908f72adb653fa2e2fbc89a7d.tar.gz
cargo-llvm-cov: refactor to fix tests
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-cov/default.nix67
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 = ''