From d059bf48e4bd4d1f50593dbe60953de8b2d395c7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 30 Jul 2012 16:09:54 -0400 Subject: Pass configuration settings to the substituters Previously substituters could read nix.conf themselves, but this didn't take --option flags into account. --- src/libstore/globals.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src/libstore/globals.cc') diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 9636bf49d..a28e08427 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -36,10 +36,12 @@ bool printBuildTrace = false; static bool settingsRead = false; -static std::map settings; +typedef std::map Settings; + +static Settings settings; /* Overriden settings. */ -std::map settingsCmdline; +Settings settingsCmdline; string & at(Strings & ss, unsigned int n) @@ -82,7 +84,7 @@ static void readSettings() }; settings.insert(settingsCmdline.begin(), settingsCmdline.end()); - + settingsRead = true; } @@ -90,7 +92,7 @@ static void readSettings() Strings querySetting(const string & name, const Strings & def) { if (!settingsRead) readSettings(); - std::map::iterator i = settings.find(name); + Settings::iterator i = settings.find(name); return i == settings.end() ? def : i->second; } @@ -169,5 +171,16 @@ void setDefaultsFromEnvironment() buildTimeout = queryIntSetting("build-timeout", 0); } - + +string packSettings() +{ + string s; + if (!settingsRead) readSettings(); + foreach (Settings::iterator, i, settings) { + s += i->first; s += '='; s += concatStringsSep(" ", i->second); s += '\n'; + } + return s; +} + + } -- cgit v1.2.3