equal
deleted
inserted
replaced
22 /** auxiliary **/ |
22 /** auxiliary **/ |
23 |
23 |
24 /* persistent build info */ |
24 /* persistent build info */ |
25 |
25 |
26 sealed case class Session_Info( |
26 sealed case class Session_Info( |
27 imported_sources: List[String], |
|
28 sources: List[String], |
27 sources: List[String], |
29 input_heaps: List[String], |
28 input_heaps: List[String], |
30 output_heap: Option[String], |
29 output_heap: Option[String], |
31 return_code: Int) |
30 return_code: Int) |
32 |
31 |
373 |
372 |
374 /* session selection and dependencies */ |
373 /* session selection and dependencies */ |
375 |
374 |
376 val full_sessions = Sessions.load(build_options, dirs, select_dirs) |
375 val full_sessions = Sessions.load(build_options, dirs, select_dirs) |
377 |
376 |
378 def imported_sources_stamp(deps: Sessions.Deps, name: String): List[String] = |
|
379 deps.imported_sources(name).map(_.toString).sorted |
|
380 |
|
381 def sources_stamp(deps: Sessions.Deps, name: String): List[String] = |
377 def sources_stamp(deps: Sessions.Deps, name: String): List[String] = |
382 (full_sessions(name).meta_digest :: deps.sources(name)).map(_.toString).sorted |
378 (full_sessions(name).meta_digest :: deps.sources(name) ::: deps.imported_sources(name)) |
|
379 .map(_.toString).sorted |
383 |
380 |
384 val (selected, selected_sessions, deps) = |
381 val (selected, selected_sessions, deps) = |
385 { |
382 { |
386 val (selected0, selected_sessions0) = |
383 val (selected0, selected_sessions0) = |
387 full_sessions.selection( |
384 full_sessions.selection( |
399 store.find_database(name) match { |
396 store.find_database(name) match { |
400 case Some(database) => |
397 case Some(database) => |
401 using(SQLite.open_database(database))(store.read_build(_, name)) match { |
398 using(SQLite.open_database(database))(store.read_build(_, name)) match { |
402 case Some(build) |
399 case Some(build) |
403 if build.return_code == 0 && |
400 if build.return_code == 0 && |
404 build.imported_sources == imported_sources_stamp(deps0, name) && |
|
405 build.sources == sources_stamp(deps0, name) => None |
401 build.sources == sources_stamp(deps0, name) => None |
406 case _ => Some(name) |
402 case _ => Some(name) |
407 } |
403 } |
408 case None => Some(name) |
404 case None => Some(name) |
409 }) |
405 }) |
535 build_log = |
531 build_log = |
536 Build_Log.Log_File(name, process_result.out_lines). |
532 Build_Log.Log_File(name, process_result.out_lines). |
537 parse_session_info( |
533 parse_session_info( |
538 command_timings = true, ml_statistics = true, task_statistics = true), |
534 command_timings = true, ml_statistics = true, task_statistics = true), |
539 build = |
535 build = |
540 Session_Info( |
536 Session_Info(sources_stamp(deps, name), input_heaps, heap_stamp, |
541 imported_sources_stamp(deps, name), |
|
542 sources_stamp(deps, name), |
|
543 input_heaps, |
|
544 heap_stamp, |
|
545 process_result.rc))) |
537 process_result.rc))) |
546 } |
538 } |
547 |
539 |
548 // messages |
540 // messages |
549 process_result.err_lines.foreach(progress.echo(_)) |
541 process_result.err_lines.foreach(progress.echo(_)) |