aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2020-12-20 17:07:28 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2020-12-23 22:42:06 +0000
commit12f7a1f65becfe3b036d0f840ee4a05f2f1f857c (patch)
tree43fde901f123cc7943b2113f54fbdc968d5f4c84 /src
parent57062179ce36e35715284d2ef570f8cb0b90198d (diff)
build-remote no longer requires local store be local
Diffstat (limited to 'src')
-rw-r--r--src/build-remote/build-remote.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc
index 8348d8c91..350bd6cef 100644
--- a/src/build-remote/build-remote.cc
+++ b/src/build-remote/build-remote.cc
@@ -71,11 +71,15 @@ static int main_build_remote(int argc, char * * argv)
initPlugins();
- auto store = openStore().cast<LocalStore>();
+ auto store = openStore();
/* It would be more appropriate to use $XDG_RUNTIME_DIR, since
that gets cleared on reboot, but it wouldn't work on macOS. */
- currentLoad = store->stateDir + "/current-load";
+ currentLoad = "/current-load";
+ if (auto localStore = store.dynamic_pointer_cast<LocalFSStore>())
+ currentLoad = std::string { localStore->stateDir } + currentLoad;
+ else
+ currentLoad = settings.nixStateDir + currentLoad;
std::shared_ptr<Store> sshStore;
AutoCloseFD bestSlotLock;
@@ -288,8 +292,9 @@ connected:
if (!missing.empty()) {
Activity act(*logger, lvlTalkative, actUnknown, fmt("copying outputs from '%s'", storeUri));
- for (auto & i : missing)
- store->locksHeld.insert(store->printStorePath(i)); /* FIXME: ugly */
+ if (auto localStore = store.dynamic_pointer_cast<LocalStore>())
+ for (auto & i : missing)
+ localStore->locksHeld.insert(store->printStorePath(i)); /* FIXME: ugly */
copyPaths(ref<Store>(sshStore), store, missing, NoRepair, NoCheckSigs, NoSubstitute);
}