From 4aaebca36e5ffdf3ec3b771e6175b2f1ac3e03b6 Mon Sep 17 00:00:00 2001 From: dekken Date: Tue, 19 Dec 2023 10:34:35 +0100 Subject: [PATCH] system reporting --- CMakeLists.txt | 2 +- pyphare/pyphare/pharein/simulation.py | 5 + res/cmake/def.cmake | 10 ++ src/amr/CMakeLists.txt | 2 +- src/core/CMakeLists.txt | 2 +- src/diagnostic/CMakeLists.txt | 2 +- src/initializer/CMakeLists.txt | 2 +- src/phare/CMakeLists.txt | 2 +- src/python3/CMakeLists.txt | 2 +- src/restarts/CMakeLists.txt | 2 +- src/simulator/CMakeLists.txt | 2 +- .../amr/data/field/coarsening/CMakeLists.txt | 2 +- tests/amr/data/field/copy_pack/CMakeLists.txt | 2 +- .../data/field/copy_pack/copy/CMakeLists.txt | 2 +- .../copy_pack/copy_overlap/CMakeLists.txt | 2 +- .../copy_pack/stream_pack/CMakeLists.txt | 2 +- tests/amr/data/field/geometry/CMakeLists.txt | 2 +- tests/amr/data/field/overlap/CMakeLists.txt | 2 +- tests/amr/data/field/refine/CMakeLists.txt | 2 +- .../field/time_interpolate/CMakeLists.txt | 2 +- tests/amr/data/field/variable/CMakeLists.txt | 2 +- tests/amr/data/particles/copy/CMakeLists.txt | 2 +- .../particles/copy_overlap/CMakeLists.txt | 2 +- .../amr/data/particles/refine/CMakeLists.txt | 2 +- .../data/particles/stream_pack/CMakeLists.txt | 2 +- tests/amr/messengers/CMakeLists.txt | 2 +- tests/amr/models/CMakeLists.txt | 2 +- .../multiphysics_integrator/CMakeLists.txt | 2 +- tests/amr/resources_manager/CMakeLists.txt | 2 +- tests/amr/tagging/CMakeLists.txt | 2 +- tests/core/data/electrons/CMakeLists.txt | 2 +- tests/core/data/field/CMakeLists.txt | 2 +- tests/core/data/gridlayout/CMakeLists.txt | 2 +- tests/core/data/ion_population/CMakeLists.txt | 2 +- tests/core/data/ions/CMakeLists.txt | 2 +- .../CMakeLists.txt | 2 +- tests/core/data/ndarray/CMakeLists.txt | 2 +- .../data/particle_initializer/CMakeLists.txt | 2 +- tests/core/data/particles/CMakeLists.txt | 2 +- tests/core/data/vecfield/CMakeLists.txt | 2 +- tests/core/numerics/ampere/CMakeLists.txt | 2 +- .../boundary_condition/CMakeLists.txt | 2 +- tests/core/numerics/faraday/CMakeLists.txt | 2 +- .../core/numerics/interpolator/CMakeLists.txt | 2 +- .../core/numerics/ion_updater/CMakeLists.txt | 2 +- tests/core/numerics/ohm/CMakeLists.txt | 2 +- tests/core/numerics/pusher/CMakeLists.txt | 2 +- tests/core/utilities/box/CMakeLists.txt | 2 +- tests/core/utilities/cellmap/CMakeLists.txt | 2 +- tests/core/utilities/index/CMakeLists.txt | 2 +- tests/core/utilities/indexer/CMakeLists.txt | 2 +- tests/core/utilities/point/CMakeLists.txt | 2 +- tests/core/utilities/range/CMakeLists.txt | 2 +- tests/diagnostic/CMakeLists.txt | 2 +- tests/functional/alfven_wave/CMakeLists.txt | 2 +- tests/functional/conservation/CMakeLists.txt | 2 +- tests/functional/dispersion/CMakeLists.txt | 2 +- tests/functional/harris/CMakeLists.txt | 2 +- tests/functional/ionIonBeam/CMakeLists.txt | 2 +- tests/functional/shock/CMakeLists.txt | 2 +- tests/functional/td/CMakeLists.txt | 2 +- tests/functional/tdtagged/CMakeLists.txt | 2 +- tests/functional/translation/CMakeLists.txt | 2 +- tests/initializer/CMakeLists.txt | 2 +- tests/simulator/CMakeLists.txt | 2 +- tests/simulator/advance/CMakeLists.txt | 2 +- tests/simulator/initialize/CMakeLists.txt | 2 +- tests/simulator/refinement/CMakeLists.txt | 2 +- tools/bench/amr/data/particles/CMakeLists.txt | 2 +- .../bench/core/data/particles/CMakeLists.txt | 2 +- .../bench/core/numerics/pusher/CMakeLists.txt | 2 +- tools/bench/hi5/CMakeLists.txt | 2 +- tools/bench/real/CMakeLists.txt | 2 +- tools/config/CMakeLists.txt | 25 +--- tools/config/cmake.sh | 4 +- tools/config/config.py | 128 +++++++++++++++++- tools/config/main.cpp | 30 +++- 77 files changed, 243 insertions(+), 101 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7313e2f1..b9633bb88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) # released April 8, 2021 - https://www.kitware.com/cmake-3-20-1-available-for-download/ project(PHARE VERSION 0.1 LANGUAGES CXX) diff --git a/pyphare/pyphare/pharein/simulation.py b/pyphare/pyphare/pharein/simulation.py index 3d29e1891..4420ad222 100644 --- a/pyphare/pyphare/pharein/simulation.py +++ b/pyphare/pyphare/pharein/simulation.py @@ -604,6 +604,7 @@ def wrapper(simulation_object, **kwargs): "strict", "restart_options", "tag_buffer", + "description", ] accepted_keywords += check_optional_keywords(**kwargs) @@ -620,6 +621,8 @@ def wrapper(simulation_object, **kwargs): kwargs["cells"] = cells kwargs["refinement_ratio"] = 2 + kwargs["description"] = kwargs.get("description", None) + kwargs["clustering"] = check_clustering(**kwargs) time_step_nbr, time_step, final_time = check_time(**kwargs) @@ -796,6 +799,8 @@ class Simulation(object): number of refined particle per coarse particle. * *tag_buffer* (``int``) -- [default=1] value representing the number of cells by which tagged cells are buffered before clustering into boxes. + * *description* (``string``) -- + [default=None] arbitrary string for per simulation context - injected in output files when feasible """ @checker diff --git a/res/cmake/def.cmake b/res/cmake/def.cmake index 4deadd26d..2d68b4c96 100644 --- a/res/cmake/def.cmake +++ b/res/cmake/def.cmake @@ -34,6 +34,7 @@ if (phare_configurator) execute_process( COMMAND ./tools/config/cmake.sh WORKING_DIRECTORY ${PHARE_PROJECT_DIR} + COMMAND_ERROR_IS_FATAL ANY ) include("${PHARE_PROJECT_DIR}/tools/config/local.cmake") endif(phare_configurator) @@ -286,3 +287,12 @@ if (test AND ${PHARE_EXEC_LEVEL_MIN} GREATER 0) # 0 = no tests endif() +# useful to see what's available after importing a package +function(phare_print_all_cmake_vars) + get_cmake_property(_variableNames VARIABLES) + list (SORT _variableNames) + foreach (_variableName ${_variableNames}) + message(STATUS "${_variableName}=${${_variableName}}") + endforeach() +endfunction(phare_print_all_cmake_vars) + diff --git a/src/amr/CMakeLists.txt b/src/amr/CMakeLists.txt index 0e00a6361..155b51d28 100644 --- a/src/amr/CMakeLists.txt +++ b/src/amr/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_amr) set( SOURCES_INC diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index fc4784a38..4e7b433f4 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_core) set( SOURCES_INC diff --git a/src/diagnostic/CMakeLists.txt b/src/diagnostic/CMakeLists.txt index 08bb70b38..b4d640ea7 100644 --- a/src/diagnostic/CMakeLists.txt +++ b/src/diagnostic/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_diagnostic) diff --git a/src/initializer/CMakeLists.txt b/src/initializer/CMakeLists.txt index 815ce8809..58a45371d 100644 --- a/src/initializer/CMakeLists.txt +++ b/src/initializer/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_initializer) diff --git a/src/phare/CMakeLists.txt b/src/phare/CMakeLists.txt index a794b0015..c53ec8489 100644 --- a/src/phare/CMakeLists.txt +++ b/src/phare/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare-exe) diff --git a/src/python3/CMakeLists.txt b/src/python3/CMakeLists.txt index 4e6fb717c..972dafbd8 100644 --- a/src/python3/CMakeLists.txt +++ b/src/python3/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_python3) diff --git a/src/restarts/CMakeLists.txt b/src/restarts/CMakeLists.txt index 4c1a0f621..adf8acfec 100644 --- a/src/restarts/CMakeLists.txt +++ b/src/restarts/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_restarts) diff --git a/src/simulator/CMakeLists.txt b/src/simulator/CMakeLists.txt index 500863dd6..c4d878cfa 100644 --- a/src/simulator/CMakeLists.txt +++ b/src/simulator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_simulator) set( SOURCES_INC diff --git a/tests/amr/data/field/coarsening/CMakeLists.txt b/tests/amr/data/field/coarsening/CMakeLists.txt index 5a43da082..9f8da258c 100644 --- a/tests/amr/data/field/coarsening/CMakeLists.txt +++ b/tests/amr/data/field/coarsening/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data-coarsen) diff --git a/tests/amr/data/field/copy_pack/CMakeLists.txt b/tests/amr/data/field/copy_pack/CMakeLists.txt index dc736c173..741362df4 100644 --- a/tests/amr/data/field/copy_pack/CMakeLists.txt +++ b/tests/amr/data/field/copy_pack/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data) diff --git a/tests/amr/data/field/copy_pack/copy/CMakeLists.txt b/tests/amr/data/field/copy_pack/copy/CMakeLists.txt index f72a92665..35c18c9b0 100644 --- a/tests/amr/data/field/copy_pack/copy/CMakeLists.txt +++ b/tests/amr/data/field/copy_pack/copy/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data-copy) diff --git a/tests/amr/data/field/copy_pack/copy_overlap/CMakeLists.txt b/tests/amr/data/field/copy_pack/copy_overlap/CMakeLists.txt index cf5021287..a8e88561c 100644 --- a/tests/amr/data/field/copy_pack/copy_overlap/CMakeLists.txt +++ b/tests/amr/data/field/copy_pack/copy_overlap/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data-copy-with-overlap) diff --git a/tests/amr/data/field/copy_pack/stream_pack/CMakeLists.txt b/tests/amr/data/field/copy_pack/stream_pack/CMakeLists.txt index 05621f8f3..7805efed7 100644 --- a/tests/amr/data/field/copy_pack/stream_pack/CMakeLists.txt +++ b/tests/amr/data/field/copy_pack/stream_pack/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data-stream-pack) diff --git a/tests/amr/data/field/geometry/CMakeLists.txt b/tests/amr/data/field/geometry/CMakeLists.txt index f1d6cbb4c..9897ec7d3 100644 --- a/tests/amr/data/field/geometry/CMakeLists.txt +++ b/tests/amr/data/field/geometry/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-geometry) set(SOURCES_INC diff --git a/tests/amr/data/field/overlap/CMakeLists.txt b/tests/amr/data/field/overlap/CMakeLists.txt index bcd99174a..35170c26c 100644 --- a/tests/amr/data/field/overlap/CMakeLists.txt +++ b/tests/amr/data/field/overlap/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-overlap) diff --git a/tests/amr/data/field/refine/CMakeLists.txt b/tests/amr/data/field/refine/CMakeLists.txt index 20b9602ce..049de1f6f 100644 --- a/tests/amr/data/field/refine/CMakeLists.txt +++ b/tests/amr/data/field/refine/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-refine) diff --git a/tests/amr/data/field/time_interpolate/CMakeLists.txt b/tests/amr/data/field/time_interpolate/CMakeLists.txt index 0891d1258..ccad8b9af 100644 --- a/tests/amr/data/field/time_interpolate/CMakeLists.txt +++ b/tests/amr/data/field/time_interpolate/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-data-time-interpolate) set(SOURCES_INC) diff --git a/tests/amr/data/field/variable/CMakeLists.txt b/tests/amr/data/field/variable/CMakeLists.txt index 33cf3f447..d4549778c 100644 --- a/tests/amr/data/field/variable/CMakeLists.txt +++ b/tests/amr/data/field/variable/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field-variable) diff --git a/tests/amr/data/particles/copy/CMakeLists.txt b/tests/amr/data/particles/copy/CMakeLists.txt index 89b6b1fe5..ef7fa06dd 100644 --- a/tests/amr/data/particles/copy/CMakeLists.txt +++ b/tests/amr/data/particles/copy/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particles-data-copy) diff --git a/tests/amr/data/particles/copy_overlap/CMakeLists.txt b/tests/amr/data/particles/copy_overlap/CMakeLists.txt index 6b9d35ca1..5f2d2acf3 100644 --- a/tests/amr/data/particles/copy_overlap/CMakeLists.txt +++ b/tests/amr/data/particles/copy_overlap/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particles-data-copy-with-overlap) diff --git a/tests/amr/data/particles/refine/CMakeLists.txt b/tests/amr/data/particles/refine/CMakeLists.txt index 84c12ab94..70fddf6bb 100644 --- a/tests/amr/data/particles/refine/CMakeLists.txt +++ b/tests/amr/data/particles/refine/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particles-data-refine) diff --git a/tests/amr/data/particles/stream_pack/CMakeLists.txt b/tests/amr/data/particles/stream_pack/CMakeLists.txt index 98c0e55c0..d09898458 100644 --- a/tests/amr/data/particles/stream_pack/CMakeLists.txt +++ b/tests/amr/data/particles/stream_pack/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particles-data-stream-pack-unpack) diff --git a/tests/amr/messengers/CMakeLists.txt b/tests/amr/messengers/CMakeLists.txt index 8522e0cce..8d3afc5c4 100644 --- a/tests/amr/messengers/CMakeLists.txt +++ b/tests/amr/messengers/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-messenger) diff --git a/tests/amr/models/CMakeLists.txt b/tests/amr/models/CMakeLists.txt index cac8faf35..67afaab07 100644 --- a/tests/amr/models/CMakeLists.txt +++ b/tests/amr/models/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-models) diff --git a/tests/amr/multiphysics_integrator/CMakeLists.txt b/tests/amr/multiphysics_integrator/CMakeLists.txt index ec732ec7b..5154ef070 100644 --- a/tests/amr/multiphysics_integrator/CMakeLists.txt +++ b/tests/amr/multiphysics_integrator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-multiphysics-integrator) diff --git a/tests/amr/resources_manager/CMakeLists.txt b/tests/amr/resources_manager/CMakeLists.txt index fbe72ff84..a7c579a0d 100644 --- a/tests/amr/resources_manager/CMakeLists.txt +++ b/tests/amr/resources_manager/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-resource) diff --git a/tests/amr/tagging/CMakeLists.txt b/tests/amr/tagging/CMakeLists.txt index aa8fc2475..33e42cc9e 100644 --- a/tests/amr/tagging/CMakeLists.txt +++ b/tests/amr/tagging/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-tagging) diff --git a/tests/core/data/electrons/CMakeLists.txt b/tests/core/data/electrons/CMakeLists.txt index 4624faf9b..e9ec1bd16 100644 --- a/tests/core/data/electrons/CMakeLists.txt +++ b/tests/core/data/electrons/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-electrons) diff --git a/tests/core/data/field/CMakeLists.txt b/tests/core/data/field/CMakeLists.txt index 61c097993..69da0ad45 100644 --- a/tests/core/data/field/CMakeLists.txt +++ b/tests/core/data/field/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-field) diff --git a/tests/core/data/gridlayout/CMakeLists.txt b/tests/core/data/gridlayout/CMakeLists.txt index c5d8aba4f..ace564f49 100644 --- a/tests/core/data/gridlayout/CMakeLists.txt +++ b/tests/core/data/gridlayout/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-GridLayout) diff --git a/tests/core/data/ion_population/CMakeLists.txt b/tests/core/data/ion_population/CMakeLists.txt index 4d200cd41..7e73823a9 100644 --- a/tests/core/data/ion_population/CMakeLists.txt +++ b/tests/core/data/ion_population/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-ionpopulation) diff --git a/tests/core/data/ions/CMakeLists.txt b/tests/core/data/ions/CMakeLists.txt index 7930c8d99..8a7276b72 100644 --- a/tests/core/data/ions/CMakeLists.txt +++ b/tests/core/data/ions/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-ions) diff --git a/tests/core/data/maxwellian_particle_initializer/CMakeLists.txt b/tests/core/data/maxwellian_particle_initializer/CMakeLists.txt index b8bee8574..ef8b9fe94 100644 --- a/tests/core/data/maxwellian_particle_initializer/CMakeLists.txt +++ b/tests/core/data/maxwellian_particle_initializer/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-maxwelllian-particle-initializer) diff --git a/tests/core/data/ndarray/CMakeLists.txt b/tests/core/data/ndarray/CMakeLists.txt index 0ff4b5059..f7ab990e5 100644 --- a/tests/core/data/ndarray/CMakeLists.txt +++ b/tests/core/data/ndarray/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-ndarray) diff --git a/tests/core/data/particle_initializer/CMakeLists.txt b/tests/core/data/particle_initializer/CMakeLists.txt index 09a88dd2f..a380b41b7 100644 --- a/tests/core/data/particle_initializer/CMakeLists.txt +++ b/tests/core/data/particle_initializer/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particle-initializer) diff --git a/tests/core/data/particles/CMakeLists.txt b/tests/core/data/particles/CMakeLists.txt index 062dc496d..d49ee7a25 100644 --- a/tests/core/data/particles/CMakeLists.txt +++ b/tests/core/data/particles/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-particles) diff --git a/tests/core/data/vecfield/CMakeLists.txt b/tests/core/data/vecfield/CMakeLists.txt index fc325c1d5..809bafd26 100644 --- a/tests/core/data/vecfield/CMakeLists.txt +++ b/tests/core/data/vecfield/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-vecfield) diff --git a/tests/core/numerics/ampere/CMakeLists.txt b/tests/core/numerics/ampere/CMakeLists.txt index 79bf7511d..0517b8dc7 100644 --- a/tests/core/numerics/ampere/CMakeLists.txt +++ b/tests/core/numerics/ampere/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-ampere) diff --git a/tests/core/numerics/boundary_condition/CMakeLists.txt b/tests/core/numerics/boundary_condition/CMakeLists.txt index f75bff955..f6475579a 100644 --- a/tests/core/numerics/boundary_condition/CMakeLists.txt +++ b/tests/core/numerics/boundary_condition/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-boundary_condition) diff --git a/tests/core/numerics/faraday/CMakeLists.txt b/tests/core/numerics/faraday/CMakeLists.txt index 349fdaba8..f9486c334 100644 --- a/tests/core/numerics/faraday/CMakeLists.txt +++ b/tests/core/numerics/faraday/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-faraday) diff --git a/tests/core/numerics/interpolator/CMakeLists.txt b/tests/core/numerics/interpolator/CMakeLists.txt index 0342a3f8c..d6b3cfb65 100644 --- a/tests/core/numerics/interpolator/CMakeLists.txt +++ b/tests/core/numerics/interpolator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-interpolator) diff --git a/tests/core/numerics/ion_updater/CMakeLists.txt b/tests/core/numerics/ion_updater/CMakeLists.txt index 50f732c1b..e206a3e58 100644 --- a/tests/core/numerics/ion_updater/CMakeLists.txt +++ b/tests/core/numerics/ion_updater/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-updater) diff --git a/tests/core/numerics/ohm/CMakeLists.txt b/tests/core/numerics/ohm/CMakeLists.txt index 28767de89..87e8a8766 100644 --- a/tests/core/numerics/ohm/CMakeLists.txt +++ b/tests/core/numerics/ohm/CMakeLists.txt @@ -1,4 +1,4 @@ - cmake_minimum_required (VERSION 3.9) + cmake_minimum_required (VERSION 3.20.1) project(test-ohm) diff --git a/tests/core/numerics/pusher/CMakeLists.txt b/tests/core/numerics/pusher/CMakeLists.txt index ed6e4da7f..138946b05 100644 --- a/tests/core/numerics/pusher/CMakeLists.txt +++ b/tests/core/numerics/pusher/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-pusher) diff --git a/tests/core/utilities/box/CMakeLists.txt b/tests/core/utilities/box/CMakeLists.txt index 2b056548e..c0eb43f56 100644 --- a/tests/core/utilities/box/CMakeLists.txt +++ b/tests/core/utilities/box/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-box) diff --git a/tests/core/utilities/cellmap/CMakeLists.txt b/tests/core/utilities/cellmap/CMakeLists.txt index 67f1ec368..f467f84e4 100644 --- a/tests/core/utilities/cellmap/CMakeLists.txt +++ b/tests/core/utilities/cellmap/CMakeLists.txt @@ -1,6 +1,6 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-cellmap) diff --git a/tests/core/utilities/index/CMakeLists.txt b/tests/core/utilities/index/CMakeLists.txt index e840b2062..426b60487 100644 --- a/tests/core/utilities/index/CMakeLists.txt +++ b/tests/core/utilities/index/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-index) diff --git a/tests/core/utilities/indexer/CMakeLists.txt b/tests/core/utilities/indexer/CMakeLists.txt index ce8e46deb..71f9d0ef3 100644 --- a/tests/core/utilities/indexer/CMakeLists.txt +++ b/tests/core/utilities/indexer/CMakeLists.txt @@ -1,5 +1,5 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-indexer) diff --git a/tests/core/utilities/point/CMakeLists.txt b/tests/core/utilities/point/CMakeLists.txt index 415dfe6c5..9ccca28fa 100644 --- a/tests/core/utilities/point/CMakeLists.txt +++ b/tests/core/utilities/point/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-point) diff --git a/tests/core/utilities/range/CMakeLists.txt b/tests/core/utilities/range/CMakeLists.txt index 8b4c78a79..9e4bb84be 100644 --- a/tests/core/utilities/range/CMakeLists.txt +++ b/tests/core/utilities/range/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-range) diff --git a/tests/diagnostic/CMakeLists.txt b/tests/diagnostic/CMakeLists.txt index 3a5964a5f..1554c1020 100644 --- a/tests/diagnostic/CMakeLists.txt +++ b/tests/diagnostic/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-diagnostics) diff --git a/tests/functional/alfven_wave/CMakeLists.txt b/tests/functional/alfven_wave/CMakeLists.txt index 75865d1fd..c5808ca11 100644 --- a/tests/functional/alfven_wave/CMakeLists.txt +++ b/tests/functional/alfven_wave/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-alfven-wave) diff --git a/tests/functional/conservation/CMakeLists.txt b/tests/functional/conservation/CMakeLists.txt index 1dd679a68..2c5a1ee0d 100644 --- a/tests/functional/conservation/CMakeLists.txt +++ b/tests/functional/conservation/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-conservation) diff --git a/tests/functional/dispersion/CMakeLists.txt b/tests/functional/dispersion/CMakeLists.txt index 041bada50..d89c1d820 100644 --- a/tests/functional/dispersion/CMakeLists.txt +++ b/tests/functional/dispersion/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-dispersion) diff --git a/tests/functional/harris/CMakeLists.txt b/tests/functional/harris/CMakeLists.txt index 67ce171db..afaf7b4d8 100644 --- a/tests/functional/harris/CMakeLists.txt +++ b/tests/functional/harris/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-conservation) diff --git a/tests/functional/ionIonBeam/CMakeLists.txt b/tests/functional/ionIonBeam/CMakeLists.txt index 19cc3135f..9513fe7fa 100644 --- a/tests/functional/ionIonBeam/CMakeLists.txt +++ b/tests/functional/ionIonBeam/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-ion-ion-beam) diff --git a/tests/functional/shock/CMakeLists.txt b/tests/functional/shock/CMakeLists.txt index 039b0b179..11067111a 100644 --- a/tests/functional/shock/CMakeLists.txt +++ b/tests/functional/shock/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-shock1d) diff --git a/tests/functional/td/CMakeLists.txt b/tests/functional/td/CMakeLists.txt index 8267a66fc..c28082902 100644 --- a/tests/functional/td/CMakeLists.txt +++ b/tests/functional/td/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-td) diff --git a/tests/functional/tdtagged/CMakeLists.txt b/tests/functional/tdtagged/CMakeLists.txt index 9ecb85317..54b9a1bcb 100644 --- a/tests/functional/tdtagged/CMakeLists.txt +++ b/tests/functional/tdtagged/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-tdtagged) diff --git a/tests/functional/translation/CMakeLists.txt b/tests/functional/translation/CMakeLists.txt index 68d24e38f..173e32cbc 100644 --- a/tests/functional/translation/CMakeLists.txt +++ b/tests/functional/translation/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-translation) diff --git a/tests/initializer/CMakeLists.txt b/tests/initializer/CMakeLists.txt index 08954102d..b67fd4363 100644 --- a/tests/initializer/CMakeLists.txt +++ b/tests/initializer/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-initializer) diff --git a/tests/simulator/CMakeLists.txt b/tests/simulator/CMakeLists.txt index bed6cb66f..23719dee6 100644 --- a/tests/simulator/CMakeLists.txt +++ b/tests/simulator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-simulator) diff --git a/tests/simulator/advance/CMakeLists.txt b/tests/simulator/advance/CMakeLists.txt index eb51cca8c..0b4ad77a5 100644 --- a/tests/simulator/advance/CMakeLists.txt +++ b/tests/simulator/advance/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-simulator-advance) diff --git a/tests/simulator/initialize/CMakeLists.txt b/tests/simulator/initialize/CMakeLists.txt index 51808cbdc..cbaf44d02 100644 --- a/tests/simulator/initialize/CMakeLists.txt +++ b/tests/simulator/initialize/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-simulator-init) diff --git a/tests/simulator/refinement/CMakeLists.txt b/tests/simulator/refinement/CMakeLists.txt index f9bf0d99c..178fc46e9 100644 --- a/tests/simulator/refinement/CMakeLists.txt +++ b/tests/simulator/refinement/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(test-simulator-refinement) diff --git a/tools/bench/amr/data/particles/CMakeLists.txt b/tools/bench/amr/data/particles/CMakeLists.txt index d52a702b6..2d864257e 100644 --- a/tools/bench/amr/data/particles/CMakeLists.txt +++ b/tools/bench/amr/data/particles/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_bench_particles) diff --git a/tools/bench/core/data/particles/CMakeLists.txt b/tools/bench/core/data/particles/CMakeLists.txt index 0b8304f5c..709012370 100644 --- a/tools/bench/core/data/particles/CMakeLists.txt +++ b/tools/bench/core/data/particles/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_bench_particles) diff --git a/tools/bench/core/numerics/pusher/CMakeLists.txt b/tools/bench/core/numerics/pusher/CMakeLists.txt index 75f386ee6..77967673b 100644 --- a/tools/bench/core/numerics/pusher/CMakeLists.txt +++ b/tools/bench/core/numerics/pusher/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_bench_pusher) diff --git a/tools/bench/hi5/CMakeLists.txt b/tools/bench/hi5/CMakeLists.txt index 7db509bee..1f2d6a154 100644 --- a/tools/bench/hi5/CMakeLists.txt +++ b/tools/bench/hi5/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_bench_h5) diff --git a/tools/bench/real/CMakeLists.txt b/tools/bench/real/CMakeLists.txt index 0d417b336..c01f25ce5 100644 --- a/tools/bench/real/CMakeLists.txt +++ b/tools/bench/real/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(phare_real_bench) diff --git a/tools/config/CMakeLists.txt b/tools/config/CMakeLists.txt index ffdcd71d5..a98b026ed 100644 --- a/tools/config/CMakeLists.txt +++ b/tools/config/CMakeLists.txt @@ -1,26 +1,9 @@ -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) # released April 8, 2021 - https://www.kitware.com/cmake-3-20-1-available-for-download/ project(phare_configurator) -find_package(MPI REQUIRED) -foreach(LIB ${MPI_LIBRARY}) - get_filename_component(MPI_LIBRARY_PATH ${LIB} DIRECTORY) -endforeach() - - -set (_phare_mpi_libs ) - -if(DEFINED MPI_CXX_LIB_NAMES) - set (_phare_mpi_libs ${MPI_CXX_LIB_NAMES}) - -elseif(DEFINED MPI_C_LIB_NAMES) - set (_phare_mpi_libs ${MPI_C_LIB_NAMES}) - -else(DEFINED MPI_C_LIB_NAMES) - message(ERROR "MPI not found!") - -endif() +find_package(MPI REQUIRED COMPONENTS C) +find_package(HDF5 REQUIRED COMPONENTS C) add_executable(${PROJECT_NAME} main.cpp) -target_include_directories(${PROJECT_NAME} PRIVATE ${MPI_C_HEADER_DIR}) -target_link_libraries(${PROJECT_NAME} ${_phare_mpi_libs}) +target_link_libraries(${PROJECT_NAME} MPI::MPI_C HDF5::HDF5) diff --git a/tools/config/cmake.sh b/tools/config/cmake.sh index e555a6620..d6bbf41ee 100755 --- a/tools/config/cmake.sh +++ b/tools/config/cmake.sh @@ -8,7 +8,7 @@ ROOT_DIR=$(cd ../.. && pwd) [ -d build ] || ( mkdir -p build && cd build - cmake -DCMAKE_BUILD_TYPE=Release .. 2>&1 > /dev/null + cmake -DCMAKE_BUILD_TYPE=Release .. # 2>&1 > /dev/null make && ./phare_configurator ) python3 config.py @@ -16,7 +16,7 @@ python3 config.py # here as a placeholder while we flesh this out, but this does hookin to the normal cmake with -Dphare_configurator=ON # probably to be generated by python (config.py) eventually cat > local.cmake <<- EOM -cmake_minimum_required (VERSION 3.9) +cmake_minimum_required (VERSION 3.20.1) project(configured_phare) message("") message("!!PHARE CONFIGURATED!!") diff --git a/tools/config/config.py b/tools/config/config.py index 848483ee7..7a20a0b44 100644 --- a/tools/config/config.py +++ b/tools/config/config.py @@ -1,11 +1,104 @@ -import os +import json +import subprocess from pathlib import Path +from dataclasses import dataclass, field +import dataclasses FILE_DIR = Path(__file__).resolve().parent +BUILD_DIR = FILE_DIR / "build" ROOT_DIR = FILE_DIR.parent.parent -FILES = [f for f in Path(FILE_DIR).glob("build/PHARE_*")] +FILES = [f for f in BUILD_DIR.glob("PHARE_*")] +DEF_DIR = ROOT_DIR / "src" / "core" / "def" +GENERATED_CONFIGS = dict( + mpi=DEF_DIR / "_gen_mpi.hpp", + system=DEF_DIR / "_gen_sys.hpp", +) -GENERATED_CONFIGS = dict(mpi=ROOT_DIR / "src" / "core" / "def" / "_gen_mpi.hpp") + +@dataclass +class SystemSettings: + cmake_binary: str # field(default_factory=lambda: "Couldn't parse cmake binary path") + cmake_version: str # field(default_factory=lambda: "Couldn't parse cmake version") + hdf5_version: str # field(default_factory=lambda: "Couldn't parse cmake hdf5 version") + mpi_version: str # field(default_factory=lambda: "Couldn't parse cmake mpi version") + uname: str # field(default_factory=lambda: "Couldn't parse uname") + + +system_cpp_ = """ +#include + +namespace PHARE {{ +struct SystemConfig {{ + + constexpr static std::string_view UNAME = R"({})"; + constexpr static std::string_view MPI_VERSION = R"({})"; + constexpr static std::string_view HDF5_VERSION = R"({})"; + constexpr static std::string_view CMAKE_VERSION = R"({})"; + constexpr static std::string_view CMAKE_BINARY = R"({})"; + +}}; + +}} + +""" + + +def exec(cmd): + proc = subprocess.run(cmd.split(" "), check=False, capture_output=True) + return (proc.stdout + proc.stderr).decode().strip() + + +def file_string_or(filename, fail=None): + if not fail: + fail = f"couldn't open file {filename}" + filepath = BUILD_DIR / filename + if not filepath.exists(): + return fail + with open(filepath) as f: + return f.readline().strip() + + +def cmake_cache_line_to_key_value_pair(line): + bits = line.split("=") + return bits[0], "=".join(bits[1:]) + + +def parse_cmake_cache_file(): + cmaka_cache_file = BUILD_DIR / "CMakeCache.txt" + dic = {} + with open(cmaka_cache_file) as f: + for line in f.readlines(): + line = line.strip() + if any([line.startswith("#"), "=" not in line]): + continue + key, val = cmake_cache_line_to_key_value_pair(line) + dic[key] = val + return dic + + +def cmake_version_from(cmake_cache: dict) -> str: + if all( + [ + "CMAKE_CACHE_MAJOR_VERSION:INTERNAL" in cmake_cache, + "CMAKE_CACHE_MINOR_VERSION:INTERNAL" in cmake_cache, + "CMAKE_CACHE_PATCH_VERSION:INTERNAL" in cmake_cache, + ] + ): + major = cmake_cache["CMAKE_CACHE_MAJOR_VERSION:INTERNAL"] + minor = cmake_cache["CMAKE_CACHE_MINOR_VERSION:INTERNAL"] + patch = cmake_cache["CMAKE_CACHE_PATCH_VERSION:INTERNAL"] + return f"{major}.{minor}.{patch}" + + return "Failed to find version in cache file" + + +def cmake_binary_path_from(cmake_cache: dict) -> str: + """With this we should be able to guarantee future cmake + calls by us if needed for whatever reason""" + path_key = "CMAKE_COMMAND:INTERNAL" + if path_key in cmake_cache: + return cmake_cache[path_key] + return "Failed to find cmake binary path in cache file" def local_file_format(filename): @@ -42,6 +135,34 @@ def config_mpi_version(txtfile, h_file): f.write(buf) +def gen_system_file(): + out_file = GENERATED_CONFIGS["system"] + cmake_cache: dict = parse_cmake_cache_file() + + settings = SystemSettings( + cmake_binary=cmake_binary_path_from(cmake_cache), + cmake_version=cmake_version_from(cmake_cache), + hdf5_version=file_string_or("PHARE_HDF5_version.txt", "HDF5 version failed"), + mpi_version=file_string_or( + "PHARE_MPI_Get_library_version.txt", "MPI version failed" + ), + uname=exec("uname -a"), + ) + with open(ROOT_DIR/".phare_config.json", "w") as f: + json.dump(dataclasses.asdict(settings), f) + + with open(out_file, "w") as f: + f.write( + system_cpp_.format( + settings.uname, + settings.hdf5_version, + settings.mpi_version, + settings.cmake_version, + settings.cmake_binary, + ) + ) + + def config_mpi(): h_file = GENERATED_CONFIGS["mpi"] create_file(h_file) @@ -54,6 +175,7 @@ def config_mpi(): def main(): config_mpi() + gen_system_file() if __name__ == "__main__": diff --git a/tools/config/main.cpp b/tools/config/main.cpp index 3627fe0a5..0719a5922 100644 --- a/tools/config/main.cpp +++ b/tools/config/main.cpp @@ -1,7 +1,31 @@ +#define OMPI_SKIP_MPICXX 1 +#define MPICH_SKIP_MPICXX 1 + #include "mpi.h" #include #include #include +#include + +#if __has_include("hdf5.h") +#include "hdf5.h" +constexpr static std::string_view hdf5_version = H5_VERSION; +#else +constexpr static std::string_view hdf5_version = "HDF5 was not found!"; +#endif + +void write_string_to_file(std::string const& buff, std::string const& filename) +{ + std::ofstream file(filename, std::ios::out); + if (!file) + throw std::runtime_error(std::string{"error opening file: "} + filename); + file << buff << std::endl; +} + +void write_hdf5_version() +{ + write_string_to_file(std::string{hdf5_version}, "PHARE_HDF5_version.txt"); +} void config_mpi() { @@ -18,10 +42,7 @@ void config_mpi() if (ret != MPI_SUCCESS) throw std::runtime_error("error calling MPI_Get_library_version"); - std::ofstream file("PHARE_MPI_Get_library_version.txt", std::ios::out); - if (!file) - throw std::runtime_error("error opening version file"); - file << version << std::endl; + write_string_to_file(version, "PHARE_MPI_Get_library_version.txt"); } int main(int argc, char** argv) @@ -30,6 +51,7 @@ int main(int argc, char** argv) try { config_mpi(); + write_hdf5_version(); } catch (const std::exception& e) {