src/Pure/Tools/build_process.scala
changeset 77469 5af7e8ffcab7
parent 77468 ed292479eaa9
child 77470 38503d9ff2e5
equal deleted inserted replaced
77468:ed292479eaa9 77469:5af7e8ffcab7
   562         SHA1.shasum_meta_info(SHA1.digest(Path.explode("$POLYML_EXE")))
   562         SHA1.shasum_meta_info(SHA1.digest(Path.explode("$POLYML_EXE")))
   563       }
   563       }
   564       else SHA1.flat_shasum(ancestor_results.map(_.output_shasum))
   564       else SHA1.flat_shasum(ancestor_results.map(_.output_shasum))
   565 
   565 
   566     val store_heap = build_context.store_heap(session_name)
   566     val store_heap = build_context.store_heap(session_name)
   567     val (current, output_shasum) = {
   567 
   568       store.try_open_database(session_name) match {
   568     val (current, output_shasum) =
   569         case Some(db) =>
   569       store.check_output(session_name,
   570           using(db)(store.read_build(_, session_name)) match {
   570         sources_shasum = build_context.sources_shasum(session_name),
   571             case Some(build) =>
   571         input_shasum = input_shasum,
   572               val output_shasum = store.find_heap_shasum(session_name)
   572         fresh_build = build_context.fresh_build,
   573               val current =
   573         store_heap = store_heap)
   574                 !build_context.fresh_build &&
   574 
   575                 build.ok &&
       
   576                 build.sources == build_context.sources_shasum(session_name) &&
       
   577                 build.input_heaps == input_shasum &&
       
   578                 build.output_heap == output_shasum &&
       
   579                 !(store_heap && output_shasum.is_empty)
       
   580               (current, output_shasum)
       
   581             case None => (false, SHA1.no_shasum)
       
   582           }
       
   583         case None => (false, SHA1.no_shasum)
       
   584       }
       
   585     }
       
   586     val all_current = current && ancestor_results.forall(_.current)
   575     val all_current = current && ancestor_results.forall(_.current)
   587 
   576 
   588     if (all_current) {
   577     if (all_current) {
   589       state
   578       state
   590         .remove_pending(session_name)
   579         .remove_pending(session_name)