about summary refs log tree commit diff
path: root/src/libstore/machines.cc
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-10-24T08·52+0200
committerEelco Dolstra <edolstra@gmail.com>2017-10-24T08·54+0200
commitaf241ae7d3d2a9975d43c9137806a6ffcb96e95b (patch)
tree3f9b324d49ef5e1cce76d55817dd2783eeb70e54 /src/libstore/machines.cc
parentd4609bb3af14dc0e19f67caa262a47792c3bd73d (diff)
Remove the builder-files option
You can now include files via the "builders" option, using the syntax
"@<filename>". Having only one option makes it easier to override
builders completely.

For backward compatibility, the default is "@/etc/nix/machines", or
"@<filename>" for each file name in NIX_REMOTE_SYSTEMS.
Diffstat (limited to 'src/libstore/machines.cc')
-rw-r--r--src/libstore/machines.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/libstore/machines.cc b/src/libstore/machines.cc
index 076c3cab3e90..d2faf45357e3 100644
--- a/src/libstore/machines.cc
+++ b/src/libstore/machines.cc
@@ -47,9 +47,22 @@ bool Machine::mandatoryMet(const std::set<string> & features) const {
 void parseMachines(const std::string & s, Machines & machines)
 {
     for (auto line : tokenizeString<std::vector<string>>(s, "\n;")) {
-        chomp(line);
+        trim(line);
         line.erase(std::find(line.begin(), line.end(), '#'), line.end());
         if (line.empty()) continue;
+
+        if (line[0] == '@') {
+            auto file = trim(std::string(line, 1));
+            try {
+                parseMachines(readFile(file), machines);
+            } catch (const SysError & e) {
+                if (e.errNo != ENOENT)
+                    throw;
+                debug("cannot find machines file '%s'", file);
+            }
+            continue;
+        }
+
         auto tokens = tokenizeString<std::vector<string>>(line);
         auto sz = tokens.size();
         if (sz < 1)
@@ -74,15 +87,6 @@ Machines getMachines()
 {
     Machines machines;
 
-    for (auto & file : settings.builderFiles.get()) {
-        try {
-            parseMachines(readFile(file), machines);
-        } catch (const SysError & e) {
-            if (e.errNo != ENOENT)
-                throw;
-        }
-    }
-
     parseMachines(settings.builders, machines);
 
     return machines;