summary refs log tree commit diff
path: root/pkgs/test/nixpkgs-check-by-name/src/eval.rs
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2023-09-12 18:01:30 +0000
committerGitHub <noreply@github.com>2023-09-12 18:01:30 +0000
commit564dc31f47ac641bdd42f3d0998fc411c05d56fa (patch)
tree5a0c7067ae569ccb16976732066a5f632f22c3b8 /pkgs/test/nixpkgs-check-by-name/src/eval.rs
parent757197a9dfbe52b16b116b39ada02d4e4098b4af (diff)
parent41b9c0a6d9467cece015ffc7016b9e7e73542157 (diff)
downloadnixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar.gz
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar.bz2
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar.lz
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar.xz
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.tar.zst
nixpkgs-564dc31f47ac641bdd42f3d0998fc411c05d56fa.zip
Merge staging-next into staging
Diffstat (limited to 'pkgs/test/nixpkgs-check-by-name/src/eval.rs')
-rw-r--r--pkgs/test/nixpkgs-check-by-name/src/eval.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/pkgs/test/nixpkgs-check-by-name/src/eval.rs b/pkgs/test/nixpkgs-check-by-name/src/eval.rs
index d084642ffe7..17e22495b22 100644
--- a/pkgs/test/nixpkgs-check-by-name/src/eval.rs
+++ b/pkgs/test/nixpkgs-check-by-name/src/eval.rs
@@ -30,9 +30,15 @@ pub fn check_values<W: io::Write>(
     // Write the list of packages we need to check into a temporary JSON file.
     // This can then get read by the Nix evaluation.
     let attrs_file = NamedTempFile::new().context("Failed to create a temporary file")?;
+    // We need to canonicalise this path because if it's a symlink (which can be the case on
+    // Darwin), Nix would need to read both the symlink and the target path, therefore need 2
+    // NIX_PATH entries for restrict-eval. But if we resolve the symlinks then only one predictable
+    // entry is needed.
+    let attrs_file_path = attrs_file.path().canonicalize()?;
+
     serde_json::to_writer(&attrs_file, &nixpkgs.package_names).context(format!(
         "Failed to serialise the package names to the temporary path {}",
-        attrs_file.path().display()
+        attrs_file_path.display()
     ))?;
 
     // With restrict-eval, only paths in NIX_PATH can be accessed, so we explicitly specify the
@@ -57,9 +63,9 @@ pub fn check_values<W: io::Write>(
         // 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
         .args(["--arg", "attrsPath"])
-        .arg(attrs_file.path())
+        .arg(&attrs_file_path)
         .arg("-I")
-        .arg(attrs_file.path())
+        .arg(&attrs_file_path)
         // Same for the nixpkgs to test
         .args(["--arg", "nixpkgsPath"])
         .arg(&nixpkgs.path)