equal
deleted
inserted
replaced
7 |
7 |
8 package isabelle |
8 package isabelle |
9 |
9 |
10 |
10 |
11 object Build_Cluster { |
11 object Build_Cluster { |
|
12 /* host specifications */ |
|
13 |
12 object Host { |
14 object Host { |
13 private val rfc822_specials = """()<>@,;:\"[]""" |
15 private val rfc822_specials = """()<>@,;:\"[]""" |
14 |
16 |
15 private val USER = "user" |
17 private val USER = "user" |
16 private val PORT = "port" |
18 private val PORT = "port" |
73 port: Int, |
75 port: Int, |
74 jobs: Int, |
76 jobs: Int, |
75 numa: Boolean, |
77 numa: Boolean, |
76 options: List[Options.Spec] |
78 options: List[Options.Spec] |
77 ) { |
79 ) { |
|
80 def is_remote: Boolean = host.nonEmpty |
|
81 |
78 override def toString: String = print |
82 override def toString: String = print |
79 |
83 |
80 def print: String = { |
84 def print: String = { |
81 val params = |
85 val params = |
82 List( |
86 List( |
93 } |
97 } |
94 |
98 |
95 def open_ssh_session(options: Options): SSH.Session = |
99 def open_ssh_session(options: Options): SSH.Session = |
96 SSH.open_session(options, host, port = port, user = user) |
100 SSH.open_session(options, host, port = port, user = user) |
97 } |
101 } |
|
102 |
|
103 |
|
104 /* remote sessions */ |
|
105 |
|
106 class Session(host: Host) extends AutoCloseable { |
|
107 override def close(): Unit = () |
|
108 } |
98 } |
109 } |
|
110 |
|
111 // class extensible via Build.Engine.build_process() and Build_Process.init_cluster() |
|
112 class Build_Cluster( |
|
113 build_context: Build_Process.Context, |
|
114 remote_hosts: List[Build_Cluster.Host], |
|
115 progress: Progress = new Progress |
|
116 ) extends AutoCloseable { |
|
117 require(remote_hosts.nonEmpty && remote_hosts.forall(_.is_remote), "remote hosts required") |
|
118 |
|
119 override def toString: String = remote_hosts.mkString("Build_Cluster(", ", ", ")") |
|
120 |
|
121 progress.echo("Remote hosts:\n" + cat_lines(remote_hosts.map(" " + _))) |
|
122 |
|
123 def start(): Unit = () |
|
124 def stop(): Unit = () |
|
125 |
|
126 override def close(): Unit = () |
|
127 } |