128 slow: Boolean = false, |
128 slow: Boolean = false, |
129 more_hosts: List[String] = Nil, |
129 more_hosts: List[String] = Nil, |
130 detect: SQL.Source = "", |
130 detect: SQL.Source = "", |
131 active: Boolean = true) |
131 active: Boolean = true) |
132 { |
132 { |
|
133 def ssh_session(context: SSH.Context): SSH.Session = |
|
134 context.open_session(host = proper_string(ssh_host) getOrElse host, user = user, port = port, |
|
135 proxy_host = proxy_host, proxy_user = proxy_user, proxy_port = proxy_port) |
|
136 |
133 def sql: SQL.Source = |
137 def sql: SQL.Source = |
134 Build_Log.Prop.build_engine + " = " + SQL.string(Build_History.engine) + " AND " + |
138 Build_Log.Prop.build_engine + " = " + SQL.string(Build_History.engine) + " AND " + |
135 SQL.member(Build_Log.Prop.build_host.ident, host :: more_hosts) + |
139 SQL.member(Build_Log.Prop.build_host.ident, host :: more_hosts) + |
136 (if (detect == "") "" else " AND " + SQL.enclose(detect)) |
140 (if (detect == "") "" else " AND " + SQL.enclose(detect)) |
137 |
141 |
284 rev: String, afp_rev: Option[String], i: Int, r: Remote_Build): Logger_Task = |
288 rev: String, afp_rev: Option[String], i: Int, r: Remote_Build): Logger_Task = |
285 { |
289 { |
286 val task_name = "build_history-" + r.host |
290 val task_name = "build_history-" + r.host |
287 Logger_Task(task_name, logger => |
291 Logger_Task(task_name, logger => |
288 { |
292 { |
289 using(logger.ssh_context.open_session( |
293 using(r.ssh_session(logger.ssh_context))(ssh => |
290 host = proper_string(r.ssh_host) getOrElse r.host, user = r.user, port = r.port, |
294 { |
291 proxy_host = r.proxy_host, proxy_user = r.proxy_user, proxy_port = r.proxy_port))( |
295 val self_update = !r.shared_home |
292 ssh => |
296 val push_isabelle_home = self_update && Mercurial.is_repository(Path.explode("~~")) |
293 { |
297 |
294 val self_update = !r.shared_home |
298 val results = |
295 val push_isabelle_home = self_update && Mercurial.is_repository(Path.explode("~~")) |
299 Build_History.remote_build_history(ssh, |
296 |
300 isabelle_repos, |
297 val results = |
301 isabelle_repos.ext(r.host), |
298 Build_History.remote_build_history(ssh, |
302 isabelle_identifier = "cronjob_build_history", |
299 isabelle_repos, |
303 self_update = self_update, |
300 isabelle_repos.ext(r.host), |
304 push_isabelle_home = push_isabelle_home, |
301 isabelle_identifier = "cronjob_build_history", |
305 rev = rev, |
302 self_update = self_update, |
306 afp_rev = afp_rev, |
303 push_isabelle_home = push_isabelle_home, |
307 options = |
304 rev = rev, |
308 " -N " + Bash.string(task_name) + (if (i < 0) "" else "_" + (i + 1).toString) + |
305 afp_rev = afp_rev, |
309 " -f " + r.options, |
306 options = |
310 args = "-o timeout=10800 " + r.args) |
307 " -N " + Bash.string(task_name) + (if (i < 0) "" else "_" + (i + 1).toString) + |
311 |
308 " -f " + r.options, |
312 for ((log_name, bytes) <- results) { |
309 args = "-o timeout=10800 " + r.args) |
313 logger.log(Date.now(), log_name) |
310 |
314 Bytes.write(logger.log_dir + Path.explode(log_name), bytes) |
311 for ((log_name, bytes) <- results) { |
315 } |
312 logger.log(Date.now(), log_name) |
316 }) |
313 Bytes.write(logger.log_dir + Path.explode(log_name), bytes) |
|
314 } |
|
315 }) |
|
316 }) |
317 }) |
317 } |
318 } |
318 |
319 |
319 val build_status_profiles: List[Build_Status.Profile] = |
320 val build_status_profiles: List[Build_Status.Profile] = |
320 (remote_builds_old :: remote_builds1 ::: remote_builds2).flatten.map(_.profile) |
321 (remote_builds_old :: remote_builds1 ::: remote_builds2).flatten.map(_.profile) |