src/Pure/Admin/isabelle_cronjob.scala
changeset 67750 58a33c568464
parent 67746 cb0f0f5f8876
child 67751 361d41701de0
equal deleted inserted replaced
67749:08dc76bf6400 67750:58a33c568464
   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)