389 val digests = |
389 val digests = |
390 full_sessions(name).meta_digest :: deps.sources(name) ::: deps.imported_sources(name) |
390 full_sessions(name).meta_digest :: deps.sources(name) ::: deps.imported_sources(name) |
391 SHA1.digest(cat_lines(digests.map(_.toString).sorted)).toString |
391 SHA1.digest(cat_lines(digests.map(_.toString).sorted)).toString |
392 } |
392 } |
393 |
393 |
|
394 val selection1 = |
|
395 Sessions.Selection(requirements, all_sessions, base_sessions, exclude_session_groups, |
|
396 exclude_sessions, session_groups, sessions) ++ selection |
|
397 |
394 val (selected_sessions, deps) = |
398 val (selected_sessions, deps) = |
395 { |
399 { |
396 val selected_sessions0 = |
400 val selected_sessions0 = full_sessions.selection(selection1) |
397 full_sessions.selection( |
|
398 Sessions.Selection(requirements, all_sessions, base_sessions, exclude_session_groups, |
|
399 exclude_sessions, session_groups, sessions) ++ selection) |
|
400 |
|
401 val deps0 = |
401 val deps0 = |
402 Sessions.deps(selected_sessions0, full_sessions.global_theories, |
402 Sessions.deps(selected_sessions0, full_sessions.global_theories, |
403 progress = progress, inlined_files = true, verbose = verbose, |
403 progress = progress, inlined_files = true, verbose = verbose, |
404 list_files = list_files, check_keywords = check_keywords).check_errors |
404 list_files = list_files, check_keywords = check_keywords).check_errors |
405 |
405 |
448 |
448 |
449 store.prepare_output() |
449 store.prepare_output() |
450 |
450 |
451 // optional cleanup |
451 // optional cleanup |
452 if (clean_build) { |
452 if (clean_build) { |
453 for (name <- full_sessions.build_descendants(selected_sessions.build_topological_order)) { |
453 for (name <- full_sessions.build_descendants(full_sessions.build_selection(selection1))) { |
454 val files = |
454 val files = |
455 List(Path.basic(name), store.database(name), store.log(name), store.log_gz(name)). |
455 List(Path.basic(name), store.database(name), store.log(name), store.log_gz(name)). |
456 map(store.output_dir + _).filter(_.is_file) |
456 map(store.output_dir + _).filter(_.is_file) |
457 if (files.nonEmpty) progress.echo("Cleaning " + name + " ...") |
457 if (files.nonEmpty) progress.echo("Cleaning " + name + " ...") |
458 if (!files.forall(p => p.file.delete)) progress.echo(name + " FAILED to delete") |
458 if (!files.forall(p => p.file.delete)) progress.echo(name + " FAILED to delete") |