diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc index acf571ff156..388f1e04686 100644 --- a/src/build-remote/build-remote.cc +++ b/src/build-remote/build-remote.cc @@ -150,6 +150,11 @@ int main (int argc, char * * argv) auto machines = readConf(); debug("got %d remote builders", machines.size()); + if (machines.empty()) { + std::cerr << "# decline-permanently\n"; + return; + } + string drvPath; string storeUri; for (string line; getline(cin, line);) { diff --git a/src/libstore/build.cc b/src/libstore/build.cc index a9649ea378c..e756d3377c3 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -1598,8 +1598,15 @@ HookReply DerivationGoal::tryBuildHook() debug(format("hook reply is ‘%1%’") % reply); - if (reply == "decline" || reply == "postpone") - return reply == "decline" ? rpDecline : rpPostpone; + if (reply == "decline") + return rpDecline; + else if (reply == "decline-permanently") { + settings.useBuildHook = false; + worker.hook = 0; + return rpDecline; + } + else if (reply == "postpone") + return rpPostpone; else if (reply != "accept") throw Error(format("bad hook reply ‘%1%’") % reply);