@@ -63,9 +63,53 @@ export SimulationState, store_simstate, load_simstate, delete_simstate!
6363
6464
6565# global storage of name and version information of loaded packages
66- const _version_info = Ref (" " )
67- const _version_info_extended = Ref (" " )
68- const _version_libtrixi = Ref (" " )
66+ function assemble_version_info (; filter_expr = identity, include_julia = true )
67+ packages = Pkg. dependencies () |> values |> collect |> filter_expr
68+ versions = String[]
69+ found_libtrixi = false
70+ for p in packages
71+ if isnothing (p. version)
72+ push! (versions, p. name * " n/a" )
73+ else
74+ push! (versions, p. name * " " * string (p. version))
75+ end
76+ if p. name == " LibTrixi"
77+ found_libtrixi = true
78+ end
79+ end
80+
81+ # When running Julia with the LibTrixi package dir as the active project,
82+ # Pkg.dependencies() will not return LibTrixi itself, which is remedied here
83+ if ! found_libtrixi && Pkg. project (). name == " LibTrixi"
84+ push! (versions, " LibTrixi " * string (Pkg. project (). version))
85+ end
86+
87+ sort! (versions)
88+
89+ # Add Julia version
90+ if include_julia
91+ push! (versions, " julia " * string (VERSION ))
92+ end
93+
94+ return join (versions, " \n " )
95+ end
96+
97+ const _version_info = assemble_version_info (filter_expr = filter (p -> p. is_direct_dep))
98+ const _version_info_extended = assemble_version_info ()
99+ const _version_libtrixi = begin
100+ libtrixi_string = assemble_version_info (filter_expr = filter (p -> p. name == " LibTrixi" ),
101+ include_julia = false )
102+
103+ # When running Julia with the LibTrixi package dir as the active project,
104+ # Pkg.dependencies() will not return LibTrixi itself, which is remedied here
105+ if isempty (libtrixi_string)
106+ version_string = string (Pkg. project (). version)
107+ else
108+ version_string = split (libtrixi_string, " " )[2 ]
109+ end
110+
111+ version_string
112+ end
69113
70114
71115include (" simulationstate.jl" )
@@ -87,21 +131,6 @@ function show_debug_output()
87131end
88132
89133
90- function assemble_version_info (; filter_expr = identity)
91- packages = Pkg. dependencies () |> values |> collect |> filter_expr
92- versions = String[]
93- for p in sort (packages, by= x-> x. name)
94- if isnothing (p. version)
95- push! (versions, p. name * " n/a" )
96- else
97- push! (versions, p. name * " " * string (p. version))
98- end
99- end
100- push! (versions, " julia " * string (VERSION ))
101- join (versions, " \n " )
102- end
103-
104-
105134function __init__ ()
106135 # MPI could have been initialized by an external application.
107136 # In this situation MPI.jl's MPI.Init is not called and leaves some package-internal
@@ -111,12 +140,6 @@ function __init__()
111140 if show_debug_output ()
112141 MPI. set_default_error_handler_return ()
113142 end
114-
115- # assemble packages information
116- _version_info[] = assemble_version_info (filter_expr = filter (p -> p. is_direct_dep))
117- _version_info_extended[] = assemble_version_info ()
118- libtrixi_string = assemble_version_info (filter_expr = filter (p -> p. name == " LibTrixi" ))
119- _version_libtrixi[] = split (split (libtrixi_string, " \n " )[1 ], " " )[2 ]
120143end
121144
122145end # module LibTrixi
0 commit comments