mirror of
https://github.com/NixOS/nix
synced 2025-06-27 21:01:16 +02:00
Simplify RegisterBuiltinBuilder
This commit is contained in:
parent
c7a84b9160
commit
1479305001
2 changed files with 7 additions and 7 deletions
|
@ -19,12 +19,15 @@ using BuiltinBuilder = std::function<void(const BuiltinBuilderContext &)>;
|
||||||
struct RegisterBuiltinBuilder
|
struct RegisterBuiltinBuilder
|
||||||
{
|
{
|
||||||
typedef std::map<std::string, BuiltinBuilder> BuiltinBuilders;
|
typedef std::map<std::string, BuiltinBuilder> BuiltinBuilders;
|
||||||
static BuiltinBuilders * builtinBuilders;
|
|
||||||
|
static BuiltinBuilders & builtinBuilders() {
|
||||||
|
static BuiltinBuilders builders;
|
||||||
|
return builders;
|
||||||
|
}
|
||||||
|
|
||||||
RegisterBuiltinBuilder(const std::string & name, BuiltinBuilder && fun)
|
RegisterBuiltinBuilder(const std::string & name, BuiltinBuilder && fun)
|
||||||
{
|
{
|
||||||
if (!builtinBuilders) builtinBuilders = new BuiltinBuilders;
|
builtinBuilders().insert_or_assign(name, std::move(fun));
|
||||||
builtinBuilders->insert_or_assign(name, std::move(fun));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1835,9 +1835,6 @@ void setupSeccomp()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RegisterBuiltinBuilder::BuiltinBuilders * RegisterBuiltinBuilder::builtinBuilders = nullptr;
|
|
||||||
|
|
||||||
|
|
||||||
void DerivationBuilderImpl::runChild()
|
void DerivationBuilderImpl::runChild()
|
||||||
{
|
{
|
||||||
/* Warning: in the child we should absolutely not make any SQLite
|
/* Warning: in the child we should absolutely not make any SQLite
|
||||||
|
@ -2298,7 +2295,7 @@ void DerivationBuilderImpl::runChild()
|
||||||
|
|
||||||
std::string builtinName = drv.builder.substr(8);
|
std::string builtinName = drv.builder.substr(8);
|
||||||
assert(RegisterBuiltinBuilder::builtinBuilders);
|
assert(RegisterBuiltinBuilder::builtinBuilders);
|
||||||
if (auto builtin = get(*RegisterBuiltinBuilder::builtinBuilders, builtinName))
|
if (auto builtin = get(RegisterBuiltinBuilder::builtinBuilders(), builtinName))
|
||||||
(*builtin)(ctx);
|
(*builtin)(ctx);
|
||||||
else
|
else
|
||||||
throw Error("unsupported builtin builder '%1%'", builtinName);
|
throw Error("unsupported builtin builder '%1%'", builtinName);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue