RemoteStore / nix-daemon: Drop support for Nix < 1.0
This commit is contained in:
parent
6601e46567
commit
be64fbb501
2 changed files with 33 additions and 44 deletions
|
@ -94,6 +94,8 @@ ref<RemoteStore::Connection> RemoteStore::openConnection()
|
||||||
conn->daemonVersion = readInt(conn->from);
|
conn->daemonVersion = readInt(conn->from);
|
||||||
if (GET_PROTOCOL_MAJOR(conn->daemonVersion) != GET_PROTOCOL_MAJOR(PROTOCOL_VERSION))
|
if (GET_PROTOCOL_MAJOR(conn->daemonVersion) != GET_PROTOCOL_MAJOR(PROTOCOL_VERSION))
|
||||||
throw Error("Nix daemon protocol version not supported");
|
throw Error("Nix daemon protocol version not supported");
|
||||||
|
if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 10)
|
||||||
|
throw Error("the Nix daemon version is too old");
|
||||||
conn->to << PROTOCOL_VERSION;
|
conn->to << PROTOCOL_VERSION;
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 14) {
|
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 14) {
|
||||||
|
@ -127,17 +129,13 @@ void RemoteStore::setOptions(ref<Connection> conn)
|
||||||
<< settings.tryFallback
|
<< settings.tryFallback
|
||||||
<< verbosity
|
<< verbosity
|
||||||
<< settings.maxBuildJobs
|
<< settings.maxBuildJobs
|
||||||
<< settings.maxSilentTime;
|
<< settings.maxSilentTime
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 2)
|
<< settings.useBuildHook
|
||||||
conn->to << settings.useBuildHook;
|
<< (settings.verboseBuild ? lvlError : lvlVomit)
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 4)
|
<< 0 // obsolete log type
|
||||||
conn->to << (settings.verboseBuild ? lvlError : lvlVomit)
|
<< 0 /* obsolete print build trace */
|
||||||
<< 0 // obsolete log type
|
<< settings.buildCores
|
||||||
<< 0 /* obsolete print build trace */;
|
<< settings.useSubstitutes;
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 6)
|
|
||||||
conn->to << settings.buildCores;
|
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 10)
|
|
||||||
conn->to << settings.useSubstitutes;
|
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 12) {
|
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 12) {
|
||||||
Settings::SettingsMap overrides = settings.getOverrides();
|
Settings::SettingsMap overrides = settings.getOverrides();
|
||||||
|
@ -213,8 +211,6 @@ void RemoteStore::querySubstitutablePathInfos(const PathSet & paths,
|
||||||
|
|
||||||
auto conn(connections->get());
|
auto conn(connections->get());
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 3) return;
|
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 12) {
|
if (GET_PROTOCOL_MINOR(conn->daemonVersion) < 12) {
|
||||||
|
|
||||||
for (auto & i : paths) {
|
for (auto & i : paths) {
|
||||||
|
@ -227,7 +223,7 @@ void RemoteStore::querySubstitutablePathInfos(const PathSet & paths,
|
||||||
if (info.deriver != "") assertStorePath(info.deriver);
|
if (info.deriver != "") assertStorePath(info.deriver);
|
||||||
info.references = readStorePaths<PathSet>(*this, conn->from);
|
info.references = readStorePaths<PathSet>(*this, conn->from);
|
||||||
info.downloadSize = readLongLong(conn->from);
|
info.downloadSize = readLongLong(conn->from);
|
||||||
info.narSize = GET_PROTOCOL_MINOR(conn->daemonVersion) >= 7 ? readLongLong(conn->from) : 0;
|
info.narSize = readLongLong(conn->from);
|
||||||
infos[i] = info;
|
infos[i] = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,11 +477,11 @@ void RemoteStore::collectGarbage(const GCOptions & options, GCResults & results)
|
||||||
{
|
{
|
||||||
auto conn(connections->get());
|
auto conn(connections->get());
|
||||||
|
|
||||||
conn->to << wopCollectGarbage << options.action << options.pathsToDelete << options.ignoreLiveness
|
conn->to
|
||||||
<< options.maxFreed << 0;
|
<< wopCollectGarbage << options.action << options.pathsToDelete << options.ignoreLiveness
|
||||||
if (GET_PROTOCOL_MINOR(conn->daemonVersion) >= 5)
|
<< options.maxFreed
|
||||||
/* removed options */
|
/* removed options */
|
||||||
conn->to << 0 << 0;
|
<< 0 << 0 << 0;
|
||||||
|
|
||||||
conn->processStderr();
|
conn->processStderr();
|
||||||
|
|
||||||
|
@ -562,7 +558,7 @@ void RemoteStore::Connection::processStderr(Sink * sink, Source * source)
|
||||||
}
|
}
|
||||||
if (msg == STDERR_ERROR) {
|
if (msg == STDERR_ERROR) {
|
||||||
string error = readString(from);
|
string error = readString(from);
|
||||||
unsigned int status = GET_PROTOCOL_MINOR(daemonVersion) >= 8 ? readInt(from) : 1;
|
unsigned int status = readInt(from);
|
||||||
throw Error(format("%1%") % error, status);
|
throw Error(format("%1%") % error, status);
|
||||||
}
|
}
|
||||||
else if (msg != STDERR_LAST)
|
else if (msg != STDERR_LAST)
|
||||||
|
|
|
@ -413,12 +413,10 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
|
||||||
options.pathsToDelete = readStorePaths<PathSet>(*store, from);
|
options.pathsToDelete = readStorePaths<PathSet>(*store, from);
|
||||||
options.ignoreLiveness = readInt(from);
|
options.ignoreLiveness = readInt(from);
|
||||||
options.maxFreed = readLongLong(from);
|
options.maxFreed = readLongLong(from);
|
||||||
readInt(from); // obsolete field
|
// obsolete fields
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 5) {
|
readInt(from);
|
||||||
/* removed options */
|
readInt(from);
|
||||||
readInt(from);
|
readInt(from);
|
||||||
readInt(from);
|
|
||||||
}
|
|
||||||
|
|
||||||
GCResults results;
|
GCResults results;
|
||||||
|
|
||||||
|
@ -440,17 +438,12 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
|
||||||
verbosity = (Verbosity) readInt(from);
|
verbosity = (Verbosity) readInt(from);
|
||||||
settings.set("build-max-jobs", std::to_string(readInt(from)));
|
settings.set("build-max-jobs", std::to_string(readInt(from)));
|
||||||
settings.set("build-max-silent-time", std::to_string(readInt(from)));
|
settings.set("build-max-silent-time", std::to_string(readInt(from)));
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 2)
|
settings.useBuildHook = readInt(from) != 0;
|
||||||
settings.useBuildHook = readInt(from) != 0;
|
settings.verboseBuild = lvlError == (Verbosity) readInt(from);
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 4) {
|
readInt(from); // obsolete logType
|
||||||
settings.verboseBuild = lvlError == (Verbosity) readInt(from);
|
readInt(from); // obsolete printBuildTrace
|
||||||
readInt(from); // obsolete logType
|
settings.set("build-cores", std::to_string(readInt(from)));
|
||||||
readInt(from); // obsolete printBuildTrace
|
settings.set("build-use-substitutes", readInt(from) ? "true" : "false");
|
||||||
}
|
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 6)
|
|
||||||
settings.set("build-cores", std::to_string(readInt(from)));
|
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 10)
|
|
||||||
settings.set("build-use-substitutes", readInt(from) ? "true" : "false");
|
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 12) {
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 12) {
|
||||||
unsigned int n = readInt(from);
|
unsigned int n = readInt(from);
|
||||||
for (unsigned int i = 0; i < n; i++) {
|
for (unsigned int i = 0; i < n; i++) {
|
||||||
|
@ -478,9 +471,7 @@ static void performOp(ref<LocalStore> store, bool trusted, unsigned int clientVe
|
||||||
if (i == infos.end())
|
if (i == infos.end())
|
||||||
to << 0;
|
to << 0;
|
||||||
else {
|
else {
|
||||||
to << 1 << i->second.deriver << i->second.references << i->second.downloadSize;
|
to << 1 << i->second.deriver << i->second.references << i->second.downloadSize << i->second.narSize;
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 7)
|
|
||||||
to << i->second.narSize;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -585,11 +576,13 @@ static void processConnection(bool trusted)
|
||||||
to.flush();
|
to.flush();
|
||||||
unsigned int clientVersion = readInt(from);
|
unsigned int clientVersion = readInt(from);
|
||||||
|
|
||||||
|
if (clientVersion < 0x10a)
|
||||||
|
throw Error("the Nix client version is too old");
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 14 && readInt(from))
|
if (GET_PROTOCOL_MINOR(clientVersion) >= 14 && readInt(from))
|
||||||
setAffinityTo(readInt(from));
|
setAffinityTo(readInt(from));
|
||||||
|
|
||||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 11)
|
readInt(from); // obsolete reserveSpace
|
||||||
readInt(from); // obsolete reserveSpace
|
|
||||||
|
|
||||||
/* Send startup error messages to the client. */
|
/* Send startup error messages to the client. */
|
||||||
startWork();
|
startWork();
|
||||||
|
@ -636,10 +629,10 @@ static void processConnection(bool trusted)
|
||||||
during addTextToStore() / importPath(). If that
|
during addTextToStore() / importPath(). If that
|
||||||
happens, just send the error message and exit. */
|
happens, just send the error message and exit. */
|
||||||
bool errorAllowed = canSendStderr;
|
bool errorAllowed = canSendStderr;
|
||||||
stopWork(false, e.msg(), GET_PROTOCOL_MINOR(clientVersion) >= 8 ? e.status : 0);
|
stopWork(false, e.msg(), e.status);
|
||||||
if (!errorAllowed) throw;
|
if (!errorAllowed) throw;
|
||||||
} catch (std::bad_alloc & e) {
|
} catch (std::bad_alloc & e) {
|
||||||
stopWork(false, "Nix daemon out of memory", GET_PROTOCOL_MINOR(clientVersion) >= 8 ? 1 : 0);
|
stopWork(false, "Nix daemon out of memory", 1);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -653,7 +646,7 @@ static void processConnection(bool trusted)
|
||||||
printMsg(lvlDebug, format("%1% operations") % opCount);
|
printMsg(lvlDebug, format("%1% operations") % opCount);
|
||||||
|
|
||||||
} catch (Error & e) {
|
} catch (Error & e) {
|
||||||
stopWork(false, e.msg(), GET_PROTOCOL_MINOR(clientVersion) >= 8 ? 1 : 0);
|
stopWork(false, e.msg(), 1);
|
||||||
to.flush();
|
to.flush();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue