Compare commits
1 Commits
dead-code-
...
ssh-ng-ext
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a92104f7ac |
@@ -767,7 +767,22 @@ BuildResult RemoteStore::buildDerivation(const StorePath & drvPath, const BasicD
|
||||
auto conn(getConnection());
|
||||
conn->putBuildDerivationRequest(*this, &conn.daemonException, drvPath, drv, buildMode);
|
||||
conn.processStderr();
|
||||
return WorkerProto::Serialise<BuildResult>::read(*this, *conn);
|
||||
return conn->getBuildDerivationResponse(*this, &conn.daemonException);
|
||||
}
|
||||
|
||||
|
||||
std::function<BuildResult()> RemoteStore::buildDerivationAsync(
|
||||
const StorePath & drvPath, const BasicDerivation & drv,
|
||||
BuildMode buildMode)
|
||||
{
|
||||
// Until we have C++23 std::move_only_function
|
||||
auto conn = std::make_shared<ConnectionHandle>(getConnection());
|
||||
(*conn)->putBuildDerivationRequest(*this, &conn->daemonException, drvPath, drv, buildMode);
|
||||
conn->processStderr();
|
||||
|
||||
return [this,conn]() -> BuildResult {
|
||||
return (*conn)->getBuildDerivationResponse(*this, &conn->daemonException);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -122,6 +122,18 @@ public:
|
||||
BuildResult buildDerivation(const StorePath & drvPath, const BasicDerivation & drv,
|
||||
BuildMode buildMode) override;
|
||||
|
||||
/**
|
||||
* Note, the returned function must only be called once, or we'll
|
||||
* try to read from the connection twice.
|
||||
*
|
||||
* This function is used by Hydra.
|
||||
*
|
||||
* @todo Use C++23 `std::move_only_function`.
|
||||
*/
|
||||
std::function<BuildResult()> buildDerivationAsync(
|
||||
const StorePath & drvPath, const BasicDerivation & drv,
|
||||
BuildMode buildMode);
|
||||
|
||||
void ensurePath(const StorePath & path) override;
|
||||
|
||||
void addTempRoot(const StorePath & path) override;
|
||||
|
||||
@@ -209,7 +209,7 @@ ref<RemoteStore::Connection> SSHStore::openConnection()
|
||||
}
|
||||
command.insert(command.end(),
|
||||
extraRemoteProgramArgs.begin(), extraRemoteProgramArgs.end());
|
||||
conn->sshConn = master.startCommand(std::move(command));
|
||||
conn->sshConn = master.startCommand(std::move(command), std::list{extraSshArgs});
|
||||
conn->to = FdSink(conn->sshConn->in.get());
|
||||
conn->from = FdSource(conn->sshConn->out.get());
|
||||
return conn;
|
||||
|
||||
@@ -18,6 +18,11 @@ struct SSHStoreConfig : virtual RemoteStoreConfig, virtual CommonSSHStoreConfig
|
||||
const Setting<Strings> remoteProgram{
|
||||
this, {"nix-daemon"}, "remote-program", "Path to the `nix-daemon` executable on the remote machine."};
|
||||
|
||||
/**
|
||||
* Hack for hydra
|
||||
*/
|
||||
Strings extraSshArgs = {};
|
||||
|
||||
const std::string name() override
|
||||
{
|
||||
return "Experimental SSH Store";
|
||||
|
||||
Reference in New Issue
Block a user