Fix build

[?]
Jun 23, 2020, 11:43 AM
YSZQ3ORRQ6ELPGEQMXO4IEVD5BT2JRXUPJ44K52DLDFTAJLHKQVAC

Dependencies

  • [2] ID7GJFGI hydra-queue-runner: sleep 5s after handling an exception
  • [3] DKR2GXSA Update libpqxx usage to move away from deprecated API interactions.
  • [4] VUYJ47EV hydra-eval-jobs: Parallelize
  • [5] U55WNIDP Abort unsupported build steps
  • [6] MQNJPMCU Fix bad format string
  • [7] EBJP3MNA Build against nix-master
  • [8] YHP5DSOO Improve parsing of hydra-build-products
  • [9] DIEY5USN Keep better bytesReceived/bytesSent stats
  • [10] 6LIYTMFU Fix build failure on GCC 5.4
  • [11] B2L4T3X6 Sync with Nix
  • [12] YNO7CQ6P hydra-queue-runner: More accurate memory accounting
  • [13] HTDANBLN Merge pull request #730 from NixOS/flake
  • [14] XVZTWOTA Disable deprecation warnings
  • [15] T5BIOVJE Add support for tracking custom metrics
  • [16] IKJBYIGY Update to reflect BinaryCacheStore changes
  • [17] PLOZBRTR Add command ‘hydra-queue-runner --status’ to show current status
  • [18] 2PQPKMG7 S3BinaryCacheStore: Use disk cache
  • [19] A2GL5FOZ Moar stats
  • [20] B7ENVLRS hydra-queue-runner: Make build notification more reliable
  • [21] YR2IM6Y5 Temporarily disable machines after a connection failure
  • [22] 7LWB2J2Z Periodically clear orphaned build steps
  • [23] 7VQ4ALFY Update "make check" for the new queue runner
  • [24] FJEK6FVU Fix build
  • [25] 2GRQJZT6 hydra-queue-runner: Support running in a NixOS container
  • [26] HJOEIMLR Refactor
  • [27] IZOT24A3 Don't spam the journal with hydra-queue-runner status dumps
  • [28] BAFICF73 Support hydra-build-products on binary cache stores
  • [29] 24BMQDZA Start of single-process hydra-queue-runner
  • [30] 6TY4LNHH Finish copyClosure
  • [31] FULDVXE2 Periodically dump/log status
  • [32] YTJBED7G Fix build
  • [33] EFWDY2V7 Support testing build determinism
  • [34] 73YR46NJ hydra-queue-runner: Write directly to a binary cache
  • [35] W4G5MZZS hydra-evaluator improvements
  • [36] WV4SSAIY Build against nix-master
  • [37] G7KWXSFM Distinguish build step states
  • [38] SL3WSRAC hydra-queue-runner: Limit memory usage
  • [39] NAYQT2GT hydra-queue-runner: Use cmdBuildDerivation
  • [40] MB3TISH2 Rate-limit the number of threads copying closures at the same time
  • [41] X6FOUYFJ int2String -> std::to_string
  • [42] ED4M6GSC Typo
  • [43] O3NM62IZ Support multiple machines files
  • [44] EJJCY263 Account steps with preferLocalBuild as a separate system type
  • [45] GH4S4AWM Rename file
  • [46] KS7NNPQW Bleh Automake
  • [47] VQISTKOP hydra-queue-runner: Use substitutes
  • [48] GTUZLZRH Add an S3-backed binary cache store
  • [49] FS3HUMVU Fix Makefile.am
  • [50] BYVRA54Q Temporarily disable machines on any exception, not just connection failures
  • [51] ZK76B5ZZ Load the queue in order of global priority
  • [52] 3YSJ3LYK Remove finally.hh
  • [53] LENA4O2V Periodically close RemoteStore connections
  • [54] WCXHTOWH Disable deprecation warnings
  • [55] 3ECTCHKL Make queue runner internal status available under /queue-runner-status
  • [56] NQPGIRXX Revert "hydra-eval-jobs -> nix eval-hydra-jobs"
  • [57] LE4VZIY5 More stats
  • [58] N4IROACV Move buildRemote() into State
  • [59] BG6PEOB2 Make the output size limit configurable
  • [60] OCZ4LSGG Automatically retry aborted builds
  • [61] XV4AEKJC hydra-queue-runner: Handle status queries on the main thread
  • [62] CNLNT3T4 Allow only 1 thread to send a closure to a given machine at the same time
  • [63] RGCPOSHY hydra-queue-runner: Ensure regular status dumps
  • [64] XCDTFZUY hydra-queue-runner: Fix build
  • [65] X4KYZJBQ Use latest nixUnstable
  • [66] WHULPA6S Handle failure with output
  • [67] T2EIYJNG On SIGINT, shut down the builder threads
  • [68] LVQXQIYA Kill active build steps when builds are cancelled
  • [69] 5MVWRWHT hydra-evaluator: Don't use the "timeout" command
  • [70] 5AIYUMTB Basic remote building
  • [71] DKJFD6JN Process Nix API changes
  • [72] N2NKSKHS Refactor local binary cache code into a subclass
  • [73] 7LU6ECB5 Don't spam the journal with hydra-queue-runner status dumps
  • [74] H46LUUZY hydra-queue-runner: don't try to distribute builds on localhost
  • [75] SODOV2CM Automatically reload $NIX_REMOTE_SYSTEMS when it changes
  • [76] IE2PRAQU hydra-queue-runner: Send build notifications
  • [77] MHVIT4JY Split hydra-queue-runner.cc more
  • [78] 4YCF3KBG Concurrent hydra-evaluator
  • [79] V6H6BWMK Sync with Nix

Change contents

  • replacement in src/hydra-eval-jobs/Makefile.am at line 4
    [6.390][6.390:436]()
    hydra_eval_jobs_LDADD = $(NIX_LIBS) -lnixrust
    [6.390]
    [6.436]
    hydra_eval_jobs_LDADD = $(NIX_LIBS)
  • replacement in src/hydra-eval-jobs/hydra-eval-jobs.cc at line 475
    [4.14370][4.14370:14466]()
    drv.outputs.insert_or_assign("out", DerivationOutput(outPath.clone(), "", ""));
    [4.14370]
    [4.14466]
    drv.outputs.insert_or_assign("out", DerivationOutput {
    .path = outPath,
    .hashAlgo = "",
    .hash = ""
    });
  • replacement in src/hydra-evaluator/hydra-evaluator.cc at line 143
    [6.3096][6.3096:3170]()
    throw SysError(format("executing ‘%1%’") % args.front());
    [6.3096]
    [6.3170]
    throw SysError("executing ‘%1%’", args.front());
  • edit in src/hydra-queue-runner/Makefile.am at line 6
    [6.59][6.263:319]()
    hydra_queue_runner_LDADD = $(NIX_LIBS) -lpqxx -lnixrust
  • resurrect zombie in src/hydra-queue-runner/Makefile.am at line 6
    [6.319][6.92:186](),[6.368][6.92:186](),[6.368][6.92:186]()
    hydra_queue_runner_CXXFLAGS = $(NIX_CFLAGS) -Wall -I ../libhydra -Wno-deprecated-declarations
  • edit in src/hydra-queue-runner/Makefile.am at line 6
    [6.59]
    [6.92]
    hydra_queue_runner_LDADD = $(NIX_LIBS) -lpqxx
  • edit in src/hydra-queue-runner/Makefile.am at line 8
    [6.59][6.770:826](),[6.59][6.770:826](),[6.826][6.92:186](),[6.368][6.92:186](),[6.368][6.92:186]()
    hydra_queue_runner_LDADD = $(NIX_LIBS) -lpqxx -lnixrust
    hydra_queue_runner_CXXFLAGS = $(NIX_CFLAGS) -Wall -I ../libhydra -Wno-deprecated-declarations
  • resolve order conflict in src/hydra-queue-runner/Makefile.am at line 8
    [6.186]
  • replacement in src/hydra-queue-runner/build-remote.cc at line 111
    [6.214][6.659:719]()
    if (!present.count(*i)) missing.insert(i->clone());
    [6.214]
    [6.398]
    if (!present.count(*i)) missing.insert(*i);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 113
    [6.614][6.0:78](),[6.2296][6.0:78]()
    printMsg(lvlDebug, format("sending %1% missing paths") % missing.size());
    [6.399]
    [6.285]
    printMsg(lvlDebug, "sending %d missing paths", missing.size());
  • replacement in src/hydra-queue-runner/build-remote.cc at line 142
    [6.403][6.403:491]()
    if (!logFD) throw SysError(format("creating log file ‘%1%’") % result.logFile);
    [6.403]
    [6.3246]
    if (!logFD) throw SysError("creating log file ‘%s’", result.logFile);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 190
    [6.570][6.570:689]()
    throw Error(format("protocol mismatch with ‘nix-store --serve’ on ‘%1%’") % machine->sshName);
    [6.570]
    [6.689]
    throw Error("protocol mismatch with ‘nix-store --serve’ on ‘%1%’", machine->sshName);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 193
    [6.792][6.792:917]()
    throw Error(format("unsupported ‘nix-store --serve’ protocol version on ‘%1%’") % machine->sshName);
    [6.792]
    [6.39]
    throw Error("unsupported ‘nix-store --serve’ protocol version on ‘%1%’", machine->sshName);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 206
    [6.1138][6.1138:1230]()
    throw Error(format("cannot connect to ‘%1%’: %2%") % machine->sshName % s);
    [6.1138]
    [6.1230]
    throw Error("cannot connect to ‘%1%’: %2%", machine->sshName, s);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 225
    [6.1731][6.1348:1398]()
    inputs.insert(step->drvPath.clone());
    [6.1731]
    [6.1773]
    inputs.insert(step->drvPath);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 228
    [6.942][6.942:984]()
    inputs.insert(p.clone());
    [6.942]
    [6.797]
    inputs.insert(p);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 235
    [6.2132][6.1138:1260]()
    inputs.insert(i->second.path.clone());
    basicDrv.inputSrcs.insert(i->second.path.clone());
    [6.2132]
    [6.2238]
    inputs.insert(i->second.path);
    basicDrv.inputSrcs.insert(i->second.path);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 285
    [6.2237][6.2237:2309]()
    writeStorePaths(*localStore, to, singleton(step->drvPath));
    [6.2237]
    [6.2309]
    writeStorePaths(*localStore, to, {step->drvPath});
  • replacement in src/hydra-queue-runner/build-remote.cc at line 309
    [6.4028][6.4028:4136]()
    result.errorMsg = (format("%1% on ‘%2%’") % readString(from) % machine->sshName).str();
    [6.4028]
    [6.4136]
    result.errorMsg = fmt("%s on ‘%s’", readString(from), machine->sshName);
  • replacement in src/hydra-queue-runner/build-remote.cc at line 475
    [6.129][6.9980:10089](),[6.9980][6.9980:10089]()
    printMsg(lvlInfo, format("will disable machine ‘%1%’ for %2%s") % machine->sshName % delta);
    [6.129]
    [6.10089]
    printMsg(lvlInfo, "will disable machine ‘%1%’ for %2%s", machine->sshName, delta);
  • edit in src/hydra-queue-runner/build-result.cc at line 17
    [6.666][6.2743:2807]()
    auto outputs = drv.outputPaths();
    StorePathSet closure;
  • replacement in src/hydra-queue-runner/build-result.cc at line 20
    [6.824][6.2808:2869](),[6.824][6.3315:3376]()
    store->computeFSClosure(singleton(output), closure);
    store->computeFSClosure(singleton(output), closure);
    [6.824]
    [6.875]
    store->computeFSClosure(output, closure);
  • edit in src/hydra-queue-runner/build-result.cc at line 25
    [6.42][6.3377:3437]()
    if (outputs.count(path)) res.size += info->narSize;
  • resolve order conflict in src/hydra-queue-runner/build-result.cc at line 25
    [6.2930]
    [6.1073]
  • edit in src/hydra-queue-runner/build-result.cc at line 40
    [6.1182][6.2931:3045]()
    auto outputS = store->printStorePath(output);
    Path failedFile = outputS + "/nix-support/failed";
  • edit in src/hydra-queue-runner/build-result.cc at line 46
    [6.114][6.3046:3121]()
    Path productsFile = outputS + "/nix-support/hydra-build-products";
  • edit in src/hydra-queue-runner/build-result.cc at line 75
    [6.2629][6.3122:3228]()
    product.name = product.path == store->printStorePath(output) ? "" : baseNameOf(product.path);
  • edit in src/hydra-queue-runner/build-result.cc at line 94
    [6.3446][6.3229:3299]()
    product.path = store->printStorePath(output.second.path);
  • edit in src/hydra-queue-runner/build-result.cc at line 97
    [6.3606][6.3300:3354]()
    product.name = output.second.path.name();
  • edit in src/hydra-queue-runner/build-result.cc at line 101
    [6.1292][6.3355:3428]()
    throw Error("getting status of ‘%s’", product.path);
  • edit in src/hydra-queue-runner/build-result.cc at line 109
    [6.4043][6.3429:3513]()
    auto p = store->printStorePath(output) + "/nix-support/hydra-release-name";
  • edit in src/hydra-queue-runner/build-result.cc at line 119
    [6.664][6.3514:3603]()
    auto metricsFile = store->printStorePath(output) + "/nix-support/hydra-metrics";
  • replacement in src/hydra-queue-runner/builder.cc at line 143
    [6.611][6.4194:4241]()
    buildDrvPath = build->drvPath.clone();
    [6.611]
    [6.650]
    buildDrvPath = build->drvPath;
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 190
    [6.1061][6.1061:1153]()
    throw SysError(format("getting stats about ‘%1%’") % machinesFile);
    [6.1061]
    [6.1153]
    throw SysError("getting stats about ‘%s’", machinesFile);
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 222
    [6.3492][6.3492:3575]()
    printMsg(lvlError, format("reloading machines file: %1%") % e.what());
    [6.3492]
    [2.0]
    printMsg(lvlError, "reloading machines file: %s", e.what());
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 807
    [6.948][6.948:1064]()
    printMsg(lvlError, format("cleaning orphaned step %d of build %d") % step.second % step.first);
    [6.948]
    [3.7067]
    printMsg(lvlError, "cleaning orphaned step %d of build %d", step.second, step.first);
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 816
    [6.1436][6.1436:1514]()
    printMsg(lvlError, format("cleanup thread: %1%") % e.what());
    [6.1436]
    [6.1514]
    printMsg(lvlError, "cleanup thread: %s", e.what());
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 832
    [6.494][6.494:581]()
    printMsg(lvlError, format("connection flush thread: %1%") % e.what());
    [6.494]
    [6.1641]
    printMsg(lvlError, "connection flush thread: %s", e.what());
  • replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 848
    [6.727][6.727:798]()
    printMsg(lvlError, format("main thread: %1%") % e.what());
    [6.727]
    [6.798]
    printMsg(lvlError, "main thread: %s", e.what());
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 120
    [6.474][6.7285:7366]()
    newBuildsByPath.emplace(std::make_pair(build->drvPath.clone(), id));
    [6.474]
    [6.22852]
    newBuildsByPath.emplace(std::make_pair(build->drvPath, id));
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 405
    [6.30643][6.125:185]()
    step = std::make_shared<Step>(drvPath.clone());
    [6.30643]
    [6.30725]
    step = std::make_shared<Step>(drvPath);
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 419
    [6.31006][6.8687:8744]()
    steps_->insert_or_assign(drvPath.clone(), step);
    [6.31006]
    [6.31041]
    steps_->insert_or_assign(drvPath, step);
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 431
    [6.8448][6.8448:8535]()
    step->parsedDrv = std::make_unique<ParsedDerivation>(drvPath.clone(), *step->drv);
    [6.8448]
    [6.0]
    step->parsedDrv = std::make_unique<ParsedDerivation>(drvPath, *step->drv);
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 462
    [6.8907][6.8907:9025]()
    DerivationOutput(i.second.path.clone(), std::string(i.second.hashAlgo), std::string(i.second.hash)));
    [6.8907]
    [6.573]
    DerivationOutput { i.second.path, i.second.hashAlgo, i.second.hash });
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 475
    [6.962][6.9533:9623]()
    localStore->querySubstitutablePathInfos(singleton(i.second.path), infos);
    [6.962]
    [6.1043]
    localStore->querySubstitutablePathInfos({i.second.path}, infos);
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 499
    [6.1700][6.9565:9659]()
    copyClosure(ref<Store>(localStore), destStore, singleton(i.second.path));
    [6.1700]
    [6.2442]
    copyClosure(ref<Store>(localStore), destStore, {i.second.path});
  • replacement in src/hydra-queue-runner/queue-monitor.cc at line 524
    [6.32140][6.9917:9963]()
    finishedDrvs.insert(drvPath.clone());
    [6.32140]
    [6.32178]
    finishedDrvs.insert(drvPath);
  • replacement in src/hydra-queue-runner/state.hh at line 211
    [6.338][5.7196:7196](),[5.7196][6.263:329](),[6.3166][6.263:329]()
    Step(nix::StorePath && drvPath) : drvPath(std::move(drvPath))
    [6.338]
    [6.329]
    Step(const nix::StorePath & drvPath) : drvPath(drvPath)
  • edit in src/hydra-queue-runner/token-server.hh at line 10
    [6.1694][6.10856:10884]()
    MakeError(NoTokens, Error);
  • replacement in src/hydra-queue-runner/token-server.hh at line 42
    [6.2477][6.0:112]()
    throw NoTokens(format("requesting more tokens (%d) than exist (%d)") % tokens % ts->maxTokens);
    [6.2477]
    [6.781]
    throw NoTokens("requesting more tokens (%d) than exist (%d)", tokens, ts->maxTokens);