Use local-overlay:// not local-overlay for store URL

This is a bit uglier, but allows us to avoid an ad-hoc special case in
`store-api.cc`.
This commit is contained in:
John Ericson 2023-10-25 15:29:11 -04:00
parent 8434f23c97
commit 250c3541bb
4 changed files with 10 additions and 12 deletions

View File

@ -90,15 +90,18 @@ public:
LocalOverlayStore(std::string scheme, std::string path, const Params & params) LocalOverlayStore(std::string scheme, std::string path, const Params & params)
: LocalOverlayStore(params) : LocalOverlayStore(params)
{ {
throw UnimplementedError("LocalOverlayStore"); if (!path.empty())
throw UsageError("local-overlay:// store url doesn't support path part, only scheme and query params");
} }
static std::set<std::string> uriSchemes() static std::set<std::string> uriSchemes()
{ return {}; } {
return { "local-overlay" };
}
std::string getUri() override std::string getUri() override
{ {
return "local-overlay"; return "local-overlay://";
} }
private: private:

View File

@ -11,7 +11,6 @@
#include "archive.hh" #include "archive.hh"
#include "callback.hh" #include "callback.hh"
#include "remote-store.hh" #include "remote-store.hh"
#include "local-overlay-store.hh"
// FIXME this should not be here, see TODO below on // FIXME this should not be here, see TODO below on
// `addMultipleToStore`. // `addMultipleToStore`.
#include "worker-protocol.hh" #include "worker-protocol.hh"
@ -1456,10 +1455,6 @@ std::shared_ptr<Store> openFromNonUri(const std::string & uri, const Store::Para
return std::make_shared<UDSRemoteStore>(params); return std::make_shared<UDSRemoteStore>(params);
} else if (uri == "local") { } else if (uri == "local") {
return std::make_shared<LocalStore>(params); return std::make_shared<LocalStore>(params);
} else if (uri == "local-overlay") {
auto store = std::make_shared<LocalOverlayStore>(params);
experimentalFeatureSettings.require(store->experimentalFeature());
return store;
} else if (isNonUriPath(uri)) { } else if (isNonUriPath(uri)) {
Store::Params params2 = params; Store::Params params2 = params;
params2["root"] = absPath(uri); params2["root"] = absPath(uri);

View File

@ -6,9 +6,9 @@ storeDirs
mkdir -p $TEST_ROOT/bad_test mkdir -p $TEST_ROOT/bad_test
badTestRoot=$TEST_ROOT/bad_test badTestRoot=$TEST_ROOT/bad_test
storeBadRoot="local-overlay?root=$badTestRoot&lower-store=$storeA&upper-layer=$storeBTop" storeBadRoot="local-overlay://?root=$badTestRoot&lower-store=$storeA&upper-layer=$storeBTop"
storeBadLower="local-overlay?root=$storeBRoot&lower-store=$badTestRoot&upper-layer=$storeBTop" storeBadLower="local-overlay://?root=$storeBRoot&lower-store=$badTestRoot&upper-layer=$storeBTop"
storeBadUpper="local-overlay?root=$storeBRoot&lower-store=$storeA&upper-layer=$badTestRoot" storeBadUpper="local-overlay://?root=$storeBRoot&lower-store=$storeA&upper-layer=$badTestRoot"
declare -a storesBad=( declare -a storesBad=(
"$storeBadRoot" "$storeBadLower" "$storeBadUpper" "$storeBadRoot" "$storeBadLower" "$storeBadUpper"

View File

@ -29,7 +29,7 @@ storeDirs () {
storeA="$storeVolume/store-a" storeA="$storeVolume/store-a"
storeBTop="$storeVolume/store-b" storeBTop="$storeVolume/store-b"
storeBRoot="$storeVolume/merged-store" storeBRoot="$storeVolume/merged-store"
storeB="local-overlay?root=$storeBRoot&lower-store=$storeA&upper-layer=$storeBTop" storeB="local-overlay://?root=$storeBRoot&lower-store=$storeA&upper-layer=$storeBTop"
# Creating testing directories # Creating testing directories
mkdir -p "$storeVolume"/{store-a/nix/store,store-b,merged-store/nix/store,workdir} mkdir -p "$storeVolume"/{store-a/nix/store,store-b,merged-store/nix/store,workdir}
} }