328 def session_base_info( |
328 def session_base_info( |
329 options: Options, |
329 options: Options, |
330 session: String, |
330 session: String, |
331 dirs: List[Path] = Nil, |
331 dirs: List[Path] = Nil, |
332 infos: List[Info] = Nil, |
332 infos: List[Info] = Nil, |
333 inlined_files: Boolean = false, |
|
334 all_known: Boolean = false, |
333 all_known: Boolean = false, |
335 required_session: Boolean = false): Base_Info = |
334 required_session: Boolean = false): Base_Info = |
336 { |
335 { |
337 val full_sessions = load(options, dirs = dirs, infos = infos) |
336 val full_sessions = load(options, dirs = dirs, infos = infos) |
338 val global_theories = full_sessions.global_theories |
337 val global_theories = full_sessions.global_theories |
339 val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session))) |
338 val (_, selected_sessions) = full_sessions.selection(Selection(sessions = List(session))) |
340 |
339 |
341 val sessions: T = if (all_known) full_sessions else selected_sessions |
340 val sessions: T = if (all_known) full_sessions else selected_sessions |
342 val deps = Sessions.deps(sessions, global_theories, inlined_files = inlined_files) |
341 val deps = Sessions.deps(sessions, global_theories) |
343 val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session) |
342 val base = if (all_known) deps(session).copy(known = deps.all_known) else deps(session) |
344 |
343 |
345 val other_session: Option[(String, List[Info])] = |
344 val other_session: Option[(String, List[Info])] = |
346 if (required_session && !is_pure(session)) { |
345 if (required_session && !is_pure(session)) { |
347 val info = sessions(session) |
346 val info = sessions(session) |
383 else None |
382 else None |
384 |
383 |
385 other_session match { |
384 other_session match { |
386 case None => new Base_Info(session, sessions, deps, base, infos) |
385 case None => new Base_Info(session, sessions, deps, base, infos) |
387 case Some((other_name, more_infos)) => |
386 case Some((other_name, more_infos)) => |
388 session_base_info(options, other_name, dirs = dirs, infos = more_infos ::: infos, |
387 session_base_info(options, other_name, |
389 inlined_files = inlined_files, all_known = all_known) |
388 dirs = dirs, infos = more_infos ::: infos, all_known = all_known) |
390 } |
389 } |
391 } |
390 } |
392 |
391 |
393 final class Base_Info private [Sessions]( |
392 final class Base_Info private [Sessions]( |
394 val session: String, val sessions: T, val deps: Deps, val base: Base, val infos: List[Info]) |
393 val session: String, val sessions: T, val deps: Deps, val base: Base, val infos: List[Info]) |