aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-09-19 15:43:23 -0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-09-19 15:43:23 -0400
commit76e88871b21c47c0216e160a5fb926f763ba64fe (patch)
tree815918838ee85fc3c655c55d6aca11c8a36bb502 /src/libstore/build.cc
parent00092b2d356293a7af9d4d8125a689f90c461591 (diff)
Templatise tokenizeString()
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r--src/libstore/build.cc19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 04ba02d14..0b7790a5b 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1435,7 +1435,7 @@ HookReply DerivationGoal::tryBuildHook()
/* Tell the hook about system features (beyond the system type)
required from the build machine. (The hook could parse the
drv file itself, but this is easier.) */
- Strings features = tokenizeString(drv.env["requiredSystemFeatures"]);
+ Strings features = tokenizeString<Strings>(drv.env["requiredSystemFeatures"]);
foreach (Strings::iterator, i, features) checkStoreName(*i); /* !!! abuse */
/* Send the request to the hook. */
@@ -1594,7 +1594,7 @@ void DerivationGoal::startBuilder()
fixed-output derivations is by definition pure (since we
already know the cryptographic hash of the output). */
if (fixedOutput) {
- Strings varNames = tokenizeString(drv.env["impureEnvVars"]);
+ Strings varNames = tokenizeString<Strings>(drv.env["impureEnvVars"]);
foreach (Strings::iterator, i, varNames) env[*i] = getEnv(*i);
}
@@ -1606,7 +1606,7 @@ void DerivationGoal::startBuilder()
by `nix-store --register-validity'. However, the deriver
fields are left empty. */
string s = drv.env["exportReferencesGraph"];
- Strings ss = tokenizeString(s);
+ Strings ss = tokenizeString<Strings>(s);
if (ss.size() % 2 != 0)
throw BuildError(format("odd number of tokens in `exportReferencesGraph': `%1%'") % s);
for (Strings::iterator i = ss.begin(); i != ss.end(); ) {
@@ -1911,14 +1911,11 @@ void DerivationGoal::initChild()
outside of the namespace. Making a subtree private is
local to the namespace, though, so setting MS_PRIVATE
does not affect the outside world. */
- Strings mounts = tokenizeString(readFile("/proc/self/mountinfo", true), "\n");
+ Strings mounts = tokenizeString<Strings>(readFile("/proc/self/mountinfo", true), "\n");
foreach (Strings::iterator, i, mounts) {
- Strings fields = tokenizeString(*i, " ");
- assert(fields.size() >= 5);
- Strings::iterator j = fields.begin();
- std::advance(j, 4);
- if (mount(0, j->c_str(), 0, MS_PRIVATE, 0) == -1)
- throw SysError(format("unable to make filesystem `%1%' private") % *j);
+ vector<string> fields = tokenizeString<vector<string> >(*i, " ");
+ if (mount(0, fields.at(4).c_str(), 0, MS_PRIVATE, 0) == -1)
+ throw SysError(format("unable to make filesystem `%1%' private") % fields.at(4));
}
/* Bind-mount all the directories from the "host"
@@ -2053,7 +2050,7 @@ void DerivationGoal::initChild()
PathSet parseReferenceSpecifiers(const Derivation & drv, string attr)
{
PathSet result;
- Paths paths = tokenizeString(attr);
+ Paths paths = tokenizeString<Paths>(attr);
foreach (Strings::iterator, i, paths) {
if (isStorePath(*i))
result.insert(*i);