316 }) |
316 }) |
317 |
317 |
318 Deps(session_bases, Known.make(Path.current, session_bases.toList.map(_._2))) |
318 Deps(session_bases, Known.make(Path.current, session_bases.toList.map(_._2))) |
319 } |
319 } |
320 |
320 |
321 def session_base_errors( |
321 |
|
322 /* base info */ |
|
323 |
|
324 sealed case class Base_Info(base: Base, errors: List[String]) |
|
325 { |
|
326 def platform_path: Base_Info = copy(base = base.platform_path) |
|
327 def check: Base = if (errors.isEmpty) base else error(cat_lines(errors)) |
|
328 } |
|
329 |
|
330 def session_base_info( |
322 options: Options, |
331 options: Options, |
323 session: String, |
332 session: String, |
324 dirs: List[Path] = Nil, |
333 dirs: List[Path] = Nil, |
325 inlined_files: Boolean = false, |
334 inlined_files: Boolean = false, |
326 all_known: Boolean = false): (List[String], Base) = |
335 all_known: Boolean = false): Base_Info = |
327 { |
336 { |
328 val full_sessions = load(options, dirs = dirs) |
337 val full_sessions = load(options, dirs = dirs) |
329 val global_theories = full_sessions.global_theories |
338 val global_theories = full_sessions.global_theories |
330 val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session))) |
339 val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session))) |
331 |
340 |
332 val sessions: T = if (all_known) full_sessions else selected_sessions |
341 val deps = |
333 val deps = Sessions.deps(sessions, global_theories, inlined_files = inlined_files) |
342 Sessions.deps(if (all_known) full_sessions else selected_sessions, |
|
343 global_theories, inlined_files = inlined_files) |
|
344 |
334 val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session) |
345 val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session) |
335 (deps.errors, base) |
346 |
336 } |
347 Base_Info(base, deps.errors) |
337 |
|
338 def session_base( |
|
339 options: Options, |
|
340 session: String, |
|
341 dirs: List[Path] = Nil, |
|
342 inlined_files: Boolean = false, |
|
343 all_known: Boolean = false): Base = |
|
344 { |
|
345 val (errs, base) = |
|
346 session_base_errors(options, session, dirs = dirs, |
|
347 inlined_files = inlined_files, all_known = all_known) |
|
348 if (errs.isEmpty) base else error(cat_lines(errs)) |
|
349 } |
348 } |
350 |
349 |
351 |
350 |
352 /* cumulative session info */ |
351 /* cumulative session info */ |
353 |
352 |