src/Pure/Tools/build_cluster.scala
changeset 78578 5ccf921a2c3d
parent 78572 11cf77478d3e
child 78579 2dad5335cc57
--- a/src/Pure/Tools/build_cluster.scala	Fri Aug 25 15:31:14 2023 +0200
+++ b/src/Pure/Tools/build_cluster.scala	Fri Aug 25 20:08:32 2023 +0200
@@ -47,13 +47,13 @@
       options: List[Options.Spec] = Nil
     ): Host = new Host(name, user, port, jobs, numa, shared, options)
 
-    def parse(str: String): Host = {
-      val name = str.takeWhile(c => !rfc822_specials.contains(c))
+    def parse(str: String): List[Host] = {
+      val names = str.takeWhile(c => !rfc822_specials.contains(c) || c == ',')
       val (params, options) =
         try {
           val rest = {
             val n = str.length
-            val m = name.length
+            val m = names.length
             val l =
               if (m == n) n
               else if (str(m) == ':') m + 1
@@ -67,13 +67,15 @@
           case ERROR(msg) =>
             cat_error(msg, "The error(s) above occurred in host specification " + quote(str))
         }
-      apply(name = name,
-        user = params.string(USER),
-        port = params.int(PORT),
-        jobs = params.int(JOBS),
-        numa = params.bool(NUMA),
-        shared = params.bool(SHARED),
-        options = options)
+      for (name <- space_explode(',', names)) yield {
+        apply(name = name,
+          user = params.string(USER),
+          port = params.int(PORT),
+          jobs = params.int(JOBS),
+          numa = params.bool(NUMA),
+          shared = params.bool(SHARED),
+          options = options)
+      }
     }
   }