mirror of
https://github.com/NixOS/nix.git
synced 2025-12-23 01:11:07 +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/worker.hh"
|
||||||
#include "nix/store/build/substitution-goal.hh"
|
#include "nix/store/build/substitution-goal.hh"
|
||||||
#include "nix/util/callback.hh"
|
#include "nix/util/callback.hh"
|
||||||
#include "nix/store/store-open.hh"
|
|
||||||
#include "nix/store/globals.hh"
|
|
||||||
|
|
||||||
namespace nix {
|
namespace nix {
|
||||||
|
|
||||||
|
|
@ -25,7 +23,7 @@ Goal::Co DrvOutputSubstitutionGoal::init()
|
||||||
co_return amDone(ecSuccess);
|
co_return amDone(ecSuccess);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto subs = settings.useSubstitutes ? getDefaultSubstituters() : std::list<ref<Store>>();
|
auto subs = worker.getSubstituters();
|
||||||
|
|
||||||
bool substituterFailed = false;
|
bool substituterFailed = false;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
#include "nix/store/build/worker.hh"
|
#include "nix/store/build/worker.hh"
|
||||||
#include "nix/store/store-open.hh"
|
|
||||||
#include "nix/store/build/substitution-goal.hh"
|
#include "nix/store/build/substitution-goal.hh"
|
||||||
#include "nix/store/nar-info.hh"
|
#include "nix/store/nar-info.hh"
|
||||||
#include "nix/util/finally.hh"
|
#include "nix/util/finally.hh"
|
||||||
|
|
@ -60,7 +59,7 @@ Goal::Co PathSubstitutionGoal::init()
|
||||||
throw Error(
|
throw Error(
|
||||||
"cannot substitute path '%s' - no write access to the Nix store", worker.store.printStorePath(storePath));
|
"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;
|
bool substituterFailed = false;
|
||||||
std::optional<Error> lastStoresException = std::nullopt;
|
std::optional<Error> lastStoresException = std::nullopt;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#include "nix/store/local-store.hh"
|
#include "nix/store/local-store.hh"
|
||||||
#include "nix/store/machines.hh"
|
#include "nix/store/machines.hh"
|
||||||
|
#include "nix/store/store-open.hh"
|
||||||
#include "nix/store/build/worker.hh"
|
#include "nix/store/build/worker.hh"
|
||||||
#include "nix/store/build/substitution-goal.hh"
|
#include "nix/store/build/substitution-goal.hh"
|
||||||
#include "nix/store/build/drv-output-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)
|
, actSubstitutions(*logger, actCopyPaths)
|
||||||
, store(store)
|
, store(store)
|
||||||
, evalStore(evalStore)
|
, evalStore(evalStore)
|
||||||
|
, getSubstituters{[] { return settings.useSubstitutes ? getDefaultSubstituters() : std::list<ref<Store>>{}; }}
|
||||||
{
|
{
|
||||||
nrLocalBuilds = 0;
|
nrLocalBuilds = 0;
|
||||||
nrSubstitutions = 0;
|
nrSubstitutions = 0;
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
#include "nix/store/realisation.hh"
|
#include "nix/store/realisation.hh"
|
||||||
#include "nix/util/muxable-pipe.hh"
|
#include "nix/util/muxable-pipe.hh"
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include <future>
|
#include <future>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
|
@ -171,6 +172,14 @@ public:
|
||||||
Store & store;
|
Store & store;
|
||||||
Store & evalStore;
|
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
|
#ifndef _WIN32 // TODO Enable building on Windows
|
||||||
std::unique_ptr<HookInstance> hook;
|
std::unique_ptr<HookInstance> hook;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue