mirror of
https://github.com/NixOS/nix.git
synced 2025-12-22 17:01:08 +01:00
Allow Worker instances to be locally configured with substituters
This will be useful for unit tests.
This commit is contained in:
parent
a6eb2e91b7
commit
3cfac9b079
4 changed files with 13 additions and 5 deletions
|
|
@ -3,8 +3,6 @@
|
|||
#include "nix/store/build/worker.hh"
|
||||
#include "nix/store/build/substitution-goal.hh"
|
||||
#include "nix/util/callback.hh"
|
||||
#include "nix/store/store-open.hh"
|
||||
#include "nix/store/globals.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
|
|
@ -25,7 +23,7 @@ Goal::Co DrvOutputSubstitutionGoal::init()
|
|||
co_return amDone(ecSuccess);
|
||||
}
|
||||
|
||||
auto subs = settings.useSubstitutes ? getDefaultSubstituters() : std::list<ref<Store>>();
|
||||
auto subs = worker.getSubstituters();
|
||||
|
||||
bool substituterFailed = false;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
#include "nix/store/build/worker.hh"
|
||||
#include "nix/store/store-open.hh"
|
||||
#include "nix/store/build/substitution-goal.hh"
|
||||
#include "nix/store/nar-info.hh"
|
||||
#include "nix/util/finally.hh"
|
||||
|
|
@ -60,7 +59,7 @@ Goal::Co PathSubstitutionGoal::init()
|
|||
throw Error(
|
||||
"cannot substitute path '%s' - no write access to the Nix store", worker.store.printStorePath(storePath));
|
||||
|
||||
auto subs = settings.useSubstitutes ? getDefaultSubstituters() : std::list<ref<Store>>();
|
||||
auto subs = worker.getSubstituters();
|
||||
|
||||
bool substituterFailed = false;
|
||||
std::optional<Error> lastStoresException = std::nullopt;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "nix/store/local-store.hh"
|
||||
#include "nix/store/machines.hh"
|
||||
#include "nix/store/store-open.hh"
|
||||
#include "nix/store/build/worker.hh"
|
||||
#include "nix/store/build/substitution-goal.hh"
|
||||
#include "nix/store/build/drv-output-substitution-goal.hh"
|
||||
|
|
@ -21,6 +22,7 @@ Worker::Worker(Store & store, Store & evalStore)
|
|||
, actSubstitutions(*logger, actCopyPaths)
|
||||
, store(store)
|
||||
, evalStore(evalStore)
|
||||
, getSubstituters{[] { return settings.useSubstitutes ? getDefaultSubstituters() : std::list<ref<Store>>{}; }}
|
||||
{
|
||||
nrLocalBuilds = 0;
|
||||
nrSubstitutions = 0;
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include "nix/store/realisation.hh"
|
||||
#include "nix/util/muxable-pipe.hh"
|
||||
|
||||
#include <functional>
|
||||
#include <future>
|
||||
#include <thread>
|
||||
|
||||
|
|
@ -171,6 +172,14 @@ public:
|
|||
Store & store;
|
||||
Store & evalStore;
|
||||
|
||||
/**
|
||||
* Function to get the substituters to use for path substitution.
|
||||
*
|
||||
* Defaults to `getDefaultSubstituters`. This allows tests to
|
||||
* inject custom substituters.
|
||||
*/
|
||||
std::function<std::list<ref<Store>>()> getSubstituters;
|
||||
|
||||
#ifndef _WIN32 // TODO Enable building on Windows
|
||||
std::unique_ptr<HookInstance> hook;
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue