Merge pull request #267048 from narang99/hariom/257748/check-by-name-msg

fix long error messages in nix-instantiate
This commit is contained in:
Silvan Mosberger 2023-11-21 01:35:11 +01:00 committed by GitHub
commit 6361b22370
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View File

@ -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 = toString runtimeExprPath;
inputsFrom = [ package ];
};
};

View File

@ -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,10 @@ pub fn check_values(
attrs_file_path.display()
))?;
let expr_path = std::env::var("NIX_CHECK_BY_NAME_EXPR_PATH")
.context("Could not get environment variable 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 +75,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 +93,8 @@ pub fn check_values(
command.arg("-I");
command.arg(path);
}
command.args(["-I", &expr_path]);
command.arg(expr_path);
let result = command
.output()