src/Pure/Tools/build_process.scala
changeset 77458 403748b23f13
parent 77457 8c749bbf885c
child 77459 7a52ba76aa9e
equal deleted inserted replaced
77457:8c749bbf885c 77458:403748b23f13
    37         Map.from(
    37         Map.from(
    38           for ((name, (info, _)) <- build_graph.iterator)
    38           for ((name, (info, _)) <- build_graph.iterator)
    39           yield {
    39           yield {
    40             val deps = info.parent.toList
    40             val deps = info.parent.toList
    41             val ancestors = sessions_structure.build_requirements(deps)
    41             val ancestors = sessions_structure.build_requirements(deps)
       
    42             val sources_shasum = build_deps.sources_shasum(name)
    42             val session_context =
    43             val session_context =
    43               Build_Job.Session_Context.load(
    44               Build_Job.Session_Context.load(
    44                 name, deps, ancestors, info.timeout, store, progress = progress)
    45                 name, deps, ancestors, sources_shasum, info.timeout, store, progress = progress)
    45             name -> session_context
    46             name -> session_context
    46           })
    47           })
    47 
    48 
    48       val sessions_time = {
    49       val sessions_time = {
    49         val maximals = build_graph.maximals.toSet
    50         val maximals = build_graph.maximals.toSet
   101     val uuid: String
   102     val uuid: String
   102   ) {
   103   ) {
   103     def sessions_structure: Sessions.Structure = build_deps.sessions_structure
   104     def sessions_structure: Sessions.Structure = build_deps.sessions_structure
   104 
   105 
   105     def session_context(session: String): Build_Job.Session_Context = sessions(session)
   106     def session_context(session: String): Build_Job.Session_Context = sessions(session)
       
   107 
       
   108     def sources_shasum(session: String): SHA1.Shasum = session_context(session).sources_shasum
   106 
   109 
   107     def old_command_timings(session: String): List[Properties.T] =
   110     def old_command_timings(session: String): List[Properties.T] =
   108       sessions.get(session) match {
   111       sessions.get(session) match {
   109         case Some(session_context) =>
   112         case Some(session_context) =>
   110           Properties.uncompress(session_context.old_command_timings_blob, cache = store.cache)
   113           Properties.uncompress(session_context.old_command_timings_blob, cache = store.cache)
   568             case Some(build) =>
   571             case Some(build) =>
   569               val output_heap = store.find_heap_shasum(session_name)
   572               val output_heap = store.find_heap_shasum(session_name)
   570               val current =
   573               val current =
   571                 !build_context.fresh_build &&
   574                 !build_context.fresh_build &&
   572                 build.ok &&
   575                 build.ok &&
   573                 build.sources == build_deps.sources_shasum(session_name) &&
   576                 build.sources == build_context.sources_shasum(session_name) &&
   574                 build.input_heaps == input_heaps &&
   577                 build.input_heaps == input_heaps &&
   575                 build.output_heap == output_heap &&
   578                 build.output_heap == output_heap &&
   576                 !(do_store && output_heap.is_empty)
   579                 !(do_store && output_heap.is_empty)
   577               (current, output_heap)
   580               (current, output_heap)
   578             case None => (false, SHA1.no_shasum)
   581             case None => (false, SHA1.no_shasum)
   627         synchronized {
   630         synchronized {
   628           val (numa_node, state1) = _state.numa_next(build_context.numa_nodes)
   631           val (numa_node, state1) = _state.numa_next(build_context.numa_nodes)
   629           val node_info = Build_Job.Node_Info(build_context.hostname, numa_node)
   632           val node_info = Build_Job.Node_Info(build_context.hostname, numa_node)
   630           val job =
   633           val job =
   631             new Build_Job.Session_Job(build_context, session_background, session_heaps,
   634             new Build_Job.Session_Job(build_context, session_background, session_heaps,
   632               do_store, resources, build_deps.sources_shasum(session_name), input_heaps, node_info)
   635               do_store, resources, input_heaps, node_info)
   633           _state = state1.add_running(session_name, job)
   636           _state = state1.add_running(session_name, job)
   634           job
   637           job
   635         }
   638         }
   636       job.start()
   639       job.start()
   637     }
   640     }