libstore/build: only send overridden settings to the build hook

The build hook is still running locally, so it will run with the same default
settings. Hence, just as with the daemon, it is enough to send it only the
overridden settings. This will prevent warnings like

   warning: Ignoring setting 'auto-allocate-uids' because experimental feature 'auto-allocate-uids' is not enabled

when the user didn't actually set those settings.

This is inspired by and an alternative to [0].
[0] https://github.com/NixOS/nix/pull/10049

Change-Id: I77ea62cd017614b16b55979dd30e75f09f860d21
This commit is contained in:
alois31 2024-09-02 20:17:34 +02:00
parent 4dbbd721eb
commit ece99fee23
Signed by untrusted user: alois31
GPG key ID: E0F59EA5E5216914

View file

@ -74,7 +74,7 @@ HookInstance::HookInstance()
sink = FdSink(toHook.get()); sink = FdSink(toHook.get());
std::map<std::string, Config::SettingInfo> settings; std::map<std::string, Config::SettingInfo> settings;
globalConfig.getSettings(settings); globalConfig.getSettings(settings, true);
for (auto & setting : settings) for (auto & setting : settings)
sink << 1 << setting.first << setting.second.value; sink << 1 << setting.first << setting.second.value;
sink << 0; sink << 0;