diff options
author | Hariom Narang <hariom.narang@qure.ai> | 2023-11-14 15:05:45 +0530 |
---|---|---|
committer | Hariom Narang <hariom.narang@qure.ai> | 2023-11-14 15:05:45 +0530 |
commit | 437b2054f4c1b16c246c0e42dd2acac13624d880 (patch) | |
tree | 77e412ee293c205dc220a4884063316b9a2e7362 /pkgs/test | |
parent | bab997db72a94fd58c6d3864f71ad8a81544cc6a (diff) |
pass eval.nix as a file instead of expression
- passing it as expression gives large error messages which are not very readable - this commits puts the file in nix-store and patches the final program to have access to the path to the file as env. - We simply pass this file to nix-instantiate
Diffstat (limited to 'pkgs/test')
-rw-r--r-- | pkgs/test/nixpkgs-check-by-name/default.nix | 9 | ||||
-rw-r--r-- | pkgs/test/nixpkgs-check-by-name/src/eval.rs | 8 |
2 files changed, 12 insertions, 5 deletions
diff --git a/pkgs/test/nixpkgs-check-by-name/default.nix b/pkgs/test/nixpkgs-check-by-name/default.nix index 0d4e2fcc48a78..3469319c29c1f 100644 --- a/pkgs/test/nixpkgs-check-by-name/default.nix +++ b/pkgs/test/nixpkgs-check-by-name/default.nix @@ -5,8 +5,10 @@ rustfmt, clippy, mkShell, + makeWrapper, }: let + runtimeExprPath = "${./src/eval.nix}"; package = rustPlatform.buildRustPackage { name = "nixpkgs-check-by-name"; @@ -16,7 +18,9 @@ let nix rustfmt clippy + makeWrapper ]; + env.NIX_CHECK_BY_NAME_EXPR_PATH = runtimeExprPath; # Needed to make Nix evaluation work inside the nix build preCheck = '' export TEST_ROOT=$(pwd)/test-tmp @@ -34,7 +38,12 @@ let cargo fmt --check cargo clippy -- -D warnings ''; + postInstall = '' + wrapProgram $out/bin/nixpkgs-check-by-name \ + --set NIX_CHECK_BY_NAME_EXPR_PATH "$NIX_CHECK_BY_NAME_EXPR_PATH" + ''; passthru.shell = mkShell { + env.NIX_CHECK_BY_NAME_EXPR_PATH = runtimeExprPath; inputsFrom = [ package ]; }; }; diff --git a/pkgs/test/nixpkgs-check-by-name/src/eval.rs b/pkgs/test/nixpkgs-check-by-name/src/eval.rs index e4f986748b4f4..e8ef50bb6db7c 100644 --- a/pkgs/test/nixpkgs-check-by-name/src/eval.rs +++ b/pkgs/test/nixpkgs-check-by-name/src/eval.rs @@ -35,8 +35,6 @@ enum AttributeVariant { Other, } -const EXPR: &str = include_str!("eval.nix"); - /// Check that the Nixpkgs attribute values corresponding to the packages in pkgs/by-name are /// of the form `callPackage <package_file> { ... }`. /// See the `eval.nix` file for how this is achieved on the Nix side @@ -60,9 +58,9 @@ pub fn check_values( attrs_file_path.display() ))?; + let expr_path = std::env::var("NIX_CHECK_BY_NAME_EXPR_PATH")?; // With restrict-eval, only paths in NIX_PATH can be accessed, so we explicitly specify the // ones needed needed - let mut command = process::Command::new("nix-instantiate"); command // Inherit stderr so that error messages always get shown @@ -76,8 +74,6 @@ pub fn check_values( "--readonly-mode", "--restrict-eval", "--show-trace", - "--expr", - EXPR, ]) // Pass the path to the attrs_file as an argument and add it to the NIX_PATH so it can be // accessed in restrict-eval mode @@ -96,6 +92,8 @@ pub fn check_values( command.arg("-I"); command.arg(path); } + command.args(["-I", &expr_path]); + command.arg(expr_path); let result = command .output() |