mirror of
https://github.com/NixOS/nix
synced 2025-06-29 14:53:16 +02:00
Interpret absolute paths relative to the root FS rather than the current flake
This commit is contained in:
parent
e2353b9b45
commit
0402dd0298
4 changed files with 27 additions and 3 deletions
|
@ -472,7 +472,7 @@ EvalState::EvalState(
|
|||
: std::nullopt,
|
||||
[](const CanonPath & path) -> RestrictedPathError {
|
||||
auto modeInformation = evalSettings.pureEval
|
||||
? "in pure eval mode (use '--impure' to override)"
|
||||
? "in pure evaluation mode (use '--impure' to override)"
|
||||
: "in restricted mode";
|
||||
throw RestrictedPathError("access to absolute path '%1%' is forbidden %2%", path, modeInformation);
|
||||
}))
|
||||
|
|
|
@ -508,8 +508,14 @@ string_parts_interpolated
|
|||
|
||||
path_start
|
||||
: PATH {
|
||||
SourcePath path { data->basePath.accessor, CanonPath({$1.p, $1.l}, data->basePath.path) };
|
||||
$$ = new ExprPath(std::move(path));
|
||||
std::string_view path({$1.p, $1.l});
|
||||
$$ = new ExprPath(
|
||||
/* Absolute paths are always interpreted relative to the
|
||||
root filesystem accessor, rather than the accessor of the
|
||||
current Nix expression. */
|
||||
hasPrefix(path, "/")
|
||||
? SourcePath{data->state.rootFS, CanonPath(path)}
|
||||
: SourcePath{data->basePath.accessor, CanonPath(path, data->basePath.path)});
|
||||
}
|
||||
| HPATH {
|
||||
if (evalSettings.pureEval) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue