mirror of
https://github.com/NixOS/nix.git
synced 2025-11-11 04:56:01 +01:00
Merge pull request #141 from DeterminateSystems/external-builder-stdin
Add an `external-builders` experimental feature
This commit is contained in:
commit
35a8e9c71e
4 changed files with 33 additions and 3 deletions
|
|
@ -1309,7 +1309,25 @@ public:
|
|||
"tmpDirInSandbox": "/build",
|
||||
"topTmpDir": "/private/tmp/nix-build-hello-2.12.2.drv-0"
|
||||
}
|
||||
)"
|
||||
)",
|
||||
{}, // aliases
|
||||
true, // document default
|
||||
// NOTE(cole-h): even though we can make the experimental feature required here, the errors
|
||||
// are not as good (it just becomes a warning if you try to use this setting without the
|
||||
// experimental feature)
|
||||
//
|
||||
// With this commented out:
|
||||
//
|
||||
// error: experimental Nix feature 'external-builders' is disabled; add '--extra-experimental-features external-builders' to enable it
|
||||
//
|
||||
// With this uncommented:
|
||||
//
|
||||
// warning: Ignoring setting 'external-builders' because experimental feature 'external-builders' is not enabled
|
||||
// error: Cannot build '/nix/store/vwsp4qd8a62jqa36p26d15hin4xnj949-opentofu-1.10.2.drv'.
|
||||
// Reason: required system or feature not available
|
||||
// Required system: 'aarch64-linux' with features {}
|
||||
// Current system: 'aarch64-darwin' with features {apple-virt, benchmark, big-parallel, nixos-test}
|
||||
// Xp::ExternalBuilders
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ struct ExternalDerivationBuilder : DerivationBuilderImpl
|
|||
: DerivationBuilderImpl(store, std::move(miscMethods), std::move(params))
|
||||
, externalBuilder(std::move(externalBuilder))
|
||||
{
|
||||
experimentalFeatureSettings.require(Xp::ExternalBuilders);
|
||||
}
|
||||
|
||||
static std::unique_ptr<ExternalDerivationBuilder> newIfSupported(
|
||||
|
|
@ -83,8 +84,10 @@ struct ExternalDerivationBuilder : DerivationBuilderImpl
|
|||
json.emplace("realStoreDir", getLocalStore(store).config->realStoreDir.get());
|
||||
json.emplace("system", drv.platform);
|
||||
|
||||
// FIXME: maybe write this JSON into the builder's stdin instead....?
|
||||
auto jsonFile = topTmpDir + "/build.json";
|
||||
// TODO(cole-h): writing this to stdin is too much effort right now, if we want to revisit
|
||||
// that, see this comment by Eelco about how to make it not suck:
|
||||
// https://github.com/DeterminateSystems/nix-src/pull/141#discussion_r2205493257
|
||||
auto jsonFile = std::filesystem::path{topTmpDir} / "build.json";
|
||||
writeFile(jsonFile, json.dump());
|
||||
|
||||
pid = startProcess([&]() {
|
||||
|
|
|
|||
|
|
@ -288,6 +288,14 @@ constexpr std::array<ExperimentalFeatureDetails, numXpFeatures> xpFeatureDetails
|
|||
)",
|
||||
.trackingUrl = "https://github.com/NixOS/nix/milestone/55",
|
||||
},
|
||||
{
|
||||
.tag = Xp::ExternalBuilders,
|
||||
.name = "external-builders",
|
||||
.description = R"(
|
||||
Enables support for external builders / sandbox providers.
|
||||
)",
|
||||
.trackingUrl = "",
|
||||
},
|
||||
{
|
||||
.tag = Xp::BLAKE3Hashes,
|
||||
.name = "blake3-hashes",
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ enum struct ExperimentalFeature
|
|||
MountedSSHStore,
|
||||
VerifiedFetches,
|
||||
PipeOperators,
|
||||
ExternalBuilders,
|
||||
BLAKE3Hashes,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue