Implement nar-based addToStore for remote-store
This commit is contained in:
parent
ecba88de93
commit
584f8a62de
|
@ -345,7 +345,12 @@ Path RemoteStore::queryPathFromHashPart(const string & hashPart)
|
||||||
void RemoteStore::addToStore(const ValidPathInfo & info, const std::string & nar,
|
void RemoteStore::addToStore(const ValidPathInfo & info, const std::string & nar,
|
||||||
bool repair, bool dontCheckSigs)
|
bool repair, bool dontCheckSigs)
|
||||||
{
|
{
|
||||||
throw Error("RemoteStore::addToStore() not implemented");
|
auto conn(connections->get());
|
||||||
|
conn->to << wopAddToStoreNar
|
||||||
|
<< info.path << info.deriver << printHash(info.narHash)
|
||||||
|
<< info.references << info.registrationTime << info.narSize
|
||||||
|
<< info.ultimate << info.sigs << nar << repair << dontCheckSigs;
|
||||||
|
conn->processStderr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,8 @@ typedef enum {
|
||||||
wopVerifyStore = 35,
|
wopVerifyStore = 35,
|
||||||
wopBuildDerivation = 36,
|
wopBuildDerivation = 36,
|
||||||
wopAddSignatures = 37,
|
wopAddSignatures = 37,
|
||||||
wopNarFromPath = 38
|
wopNarFromPath = 38,
|
||||||
|
wopAddToStoreNar = 39
|
||||||
} WorkerOp;
|
} WorkerOp;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -579,7 +579,30 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
|
||||||
case wopNarFromPath: {
|
case wopNarFromPath: {
|
||||||
auto path = readStorePath(*store, from);
|
auto path = readStorePath(*store, from);
|
||||||
startWork();
|
startWork();
|
||||||
|
stopWork();
|
||||||
dumpPath(path, to);
|
dumpPath(path, to);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case wopAddToStoreNar: {
|
||||||
|
ValidPathInfo info;
|
||||||
|
info.path = readStorePath(*store, from);
|
||||||
|
info.deriver = readString(from);
|
||||||
|
if (!info.deriver.empty())
|
||||||
|
store->assertStorePath(info.deriver);
|
||||||
|
info.narHash = parseHash(htSHA256, readString(from));
|
||||||
|
info.references = readStorePaths<PathSet>(*store, from);
|
||||||
|
info.registrationTime = readInt(from);
|
||||||
|
info.narSize = readLongLong(from);
|
||||||
|
info.ultimate = readLongLong(from);
|
||||||
|
info.sigs = readStrings<StringSet>(from);
|
||||||
|
auto nar = readString(from);
|
||||||
|
auto repair = readInt(from) ? true : false;
|
||||||
|
auto dontCheckSigs = readInt(from) ? true : false;
|
||||||
|
if (!trusted && dontCheckSigs)
|
||||||
|
dontCheckSigs = false;
|
||||||
|
startWork();
|
||||||
|
store->addToStore(info, nar, repair, dontCheckSigs);
|
||||||
stopWork();
|
stopWork();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue