mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-24 14:56:15 +02:00
Remove parent hackery from the path fetcher
Relative paths of subflakes are now handled in lockFlake().
This commit is contained in:
parent
3d27ce36d0
commit
f97489e7ab
3 changed files with 2 additions and 24 deletions
|
@ -204,11 +204,8 @@ std::pair<FlakeRef, std::string> parseFlakeRefWithFragment(
|
|||
std::string fragment;
|
||||
std::swap(fragment, parsedURL.fragment);
|
||||
|
||||
auto input = Input::fromURL(parsedURL);
|
||||
input.parent = baseDir;
|
||||
|
||||
return std::make_pair(
|
||||
FlakeRef(std::move(input), getOr(parsedURL.query, "dir", "")),
|
||||
FlakeRef(Input::fromURL(parsedURL), getOr(parsedURL.query, "dir", "")),
|
||||
fragment);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,9 +37,6 @@ struct Input
|
|||
bool locked = false;
|
||||
bool direct = true;
|
||||
|
||||
/* path of the parent of this input, used for relative path resolution */
|
||||
std::optional<Path> parent;
|
||||
|
||||
public:
|
||||
static Input fromURL(const std::string & url);
|
||||
|
||||
|
|
|
@ -93,23 +93,7 @@ struct PathInputScheme : InputScheme
|
|||
if (path[0] == '/')
|
||||
return CanonPath(path);
|
||||
|
||||
// FIXME: remove this?
|
||||
if (!input.parent)
|
||||
throw Error("cannot fetch input '%s' because it uses a relative path", input.to_string());
|
||||
|
||||
CanonPath parent(*input.parent);
|
||||
|
||||
// the path isn't relative, prefix it
|
||||
auto absPath = CanonPath(path, parent);
|
||||
|
||||
// for security, ensure that if the parent is a store path, it's inside it
|
||||
if (store->isInStore(parent.abs())) {
|
||||
auto storePath = store->printStorePath(store->toStorePath(parent.abs()).first);
|
||||
if (!absPath.isWithin(CanonPath(storePath)))
|
||||
throw BadStorePath("relative path '%s' points outside of its parent's store path '%s'", path, storePath);
|
||||
}
|
||||
|
||||
return absPath;
|
||||
throw Error("cannot fetch input '%s' because it uses a relative path", input.to_string());
|
||||
}
|
||||
|
||||
std::pair<StorePath, Input> fetch(ref<Store> store, const Input & _input) override
|
||||
|
|
Loading…
Reference in a new issue