src/Pure/Build/build_process.scala
changeset 79829 a9da5e99e22f
parent 79828 5969ead9f900
child 79830 d014b6c40eb0
equal deleted inserted replaced
79828:5969ead9f900 79829:a9da5e99e22f
    37     start: Date,
    37     start: Date,
    38     stamp: Date,
    38     stamp: Date,
    39     stop: Option[Date],
    39     stop: Option[Date],
    40     serial: Long
    40     serial: Long
    41   )
    41   )
       
    42 
       
    43   object Task {
       
    44     type Entry = (String, Task)
       
    45     def entry(name: String, deps: List[String], build_uuid: String): Entry =
       
    46       name -> Task(name, deps, build_uuid)
       
    47     def entry(session: Build_Job.Session_Context, build_context: isabelle.Build.Context): Entry =
       
    48       entry(session.name, session.deps, build_context.build_uuid)
       
    49   }
    42 
    50 
    43   sealed case class Task(
    51   sealed case class Task(
    44     name: String,
    52     name: String,
    45     deps: List[String],
    53     deps: List[String],
    46     build_uuid: String
    54     build_uuid: String
   580         Map.from[String, Task],
   588         Map.from[String, Task],
   581         { res =>
   589         { res =>
   582           val name = res.string(Pending.name)
   590           val name = res.string(Pending.name)
   583           val deps = res.string(Pending.deps)
   591           val deps = res.string(Pending.deps)
   584           val build_uuid = res.string(Pending.build_uuid)
   592           val build_uuid = res.string(Pending.build_uuid)
   585           name -> Task(name, split_lines(deps), build_uuid)
   593           Task.entry(name, split_lines(deps), build_uuid)
   586         })
   594         })
   587 
   595 
   588     def update_pending(
   596     def update_pending(
   589       db: SQL.Database,
   597       db: SQL.Database,
   590       pending: State.Pending,
   598       pending: State.Pending,
   979     val sessions1 = state.sessions.init(build_context, _database_server, progress = build_progress)
   987     val sessions1 = state.sessions.init(build_context, _database_server, progress = build_progress)
   980     val pending1 =
   988     val pending1 =
   981       sessions1.iterator.foldLeft(state.pending) {
   989       sessions1.iterator.foldLeft(state.pending) {
   982         case (map, session) =>
   990         case (map, session) =>
   983           if (map.isDefinedAt(session.name)) map
   991           if (map.isDefinedAt(session.name)) map
   984           else map + (session.name -> Build_Process.Task(session.name, session.deps, build_uuid))
   992           else map + Build_Process.Task.entry(session, build_context)
   985       }
   993       }
   986     state.copy(sessions = sessions1, pending = pending1)
   994     state.copy(sessions = sessions1, pending = pending1)
   987   }
   995   }
   988 
   996 
   989   protected def next_jobs(state: Build_Process.State): List[String] = {
   997   protected def next_jobs(state: Build_Process.State): List[String] = {