48 if (Build.build_logic(options, logic, progress = progress, dirs = dirs, |
48 if (Build.build_logic(options, logic, progress = progress, dirs = dirs, |
49 system_mode = system_mode) != 0) error(logic + " FAILED") |
49 system_mode = system_mode) != 0) error(logic + " FAILED") |
50 |
50 |
51 val dump_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", false) |
51 val dump_options = options.int.update("completion_limit", 0).bool.update("ML_statistics", false) |
52 |
52 |
|
53 |
|
54 /* dependencies */ |
|
55 |
53 val deps = |
56 val deps = |
54 Sessions.load_structure(dump_options, dirs = dirs, select_dirs = select_dirs). |
57 Sessions.load_structure(dump_options, dirs = dirs, select_dirs = select_dirs). |
55 selection_deps(selection) |
58 selection_deps(selection) |
56 |
59 |
|
60 val include_sessions = |
|
61 deps.sessions_structure.imports_topological_order |
|
62 |
|
63 val use_theories = |
|
64 deps.sessions_structure.build_topological_order. |
|
65 flatMap(session_name => deps.session_bases(session_name).used_theories.map(_.theory)) |
|
66 |
|
67 |
|
68 /* session */ |
|
69 |
57 val session = |
70 val session = |
58 Thy_Resources.start_session(dump_options, logic, session_dirs = dirs, |
71 Thy_Resources.start_session(dump_options, logic, session_dirs = dirs, |
59 include_sessions = deps.sessions_structure.imports_topological_order, |
72 include_sessions = include_sessions, progress = progress, log = log) |
60 progress = progress, log = log) |
|
61 |
73 |
62 val theories = deps.all_known.theory_graph.topological_order.map(_.theory) |
74 try { |
63 val theories_result = session.use_theories(theories, progress = progress) |
75 val theories_result = session.use_theories(use_theories, progress = progress) |
64 |
76 val args = Aspect_Args(dump_options, progress, output_dir, theories_result) |
65 val args = Aspect_Args(dump_options, progress, output_dir, theories_result) |
77 aspects.foreach(_.operation(args)) |
66 |
78 } |
67 try { aspects.foreach(aspect => aspect.operation(args)) } |
|
68 catch { case exn: Throwable => session.stop (); throw exn } |
79 catch { case exn: Throwable => session.stop (); throw exn } |
69 session.stop() |
80 session.stop() |
70 } |
81 } |
71 |
82 |
72 |
83 |