diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9b164e416af..ec8c80b2754 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -52,3 +52,5 @@ jobs: make -j4 make install ctest --output-on-failure + cd .. + bash ./utils/scripts/check_installs.sh diff --git a/.github/workflows/tests_minimal.yml b/.github/workflows/tests_minimal.yml index 52f2e70e361..4bcec88c340 100644 --- a/.github/workflows/tests_minimal.yml +++ b/.github/workflows/tests_minimal.yml @@ -37,3 +37,5 @@ jobs: make -j4 make install ctest --output-on-failure + cd .. + bash ./utils/scripts/check_installs.sh diff --git a/.github/workflows/tests_minimal_kokkos.yml b/.github/workflows/tests_minimal_kokkos.yml index 5038f44b4b1..9c880b9ffa3 100644 --- a/.github/workflows/tests_minimal_kokkos.yml +++ b/.github/workflows/tests_minimal_kokkos.yml @@ -37,3 +37,5 @@ jobs: make -j4 make install ctest --output-on-failure + cd .. + bash ./utils/scripts/check_installs.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 69870046758..fbef9f2d111 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,11 @@ ### Added (new features/APIs/variables/...) ### Fixed (Repair bugs, etc) - +- [[PR647]](https://github.com/lanl/singularity-eos/pull/647) Add missing headers to the registration in singularity-eos/CMakeLists.txt ### Changed (changing behavior/API/variables/...) ### Infrastructure (changes irrelevant to downstream codes) +- [[PR649]](https://github.com/lanl/singularity-eos/pull/649) Add checks that all header files are installed properly. ### Deprecated (soon to be removed behavior/API/variables/...) diff --git a/singularity-eos/CMakeLists.txt b/singularity-eos/CMakeLists.txt index 30a1fdea759..9cb3f8693ff 100644 --- a/singularity-eos/CMakeLists.txt +++ b/singularity-eos/CMakeLists.txt @@ -28,6 +28,8 @@ register_headers( base/spiner_table_utils.hpp base/constants.hpp base/eos_error.hpp + base/eos_concepts.hpp + base/finite_diff.hpp eos/default_variant.hpp eos/eos_variant.hpp eos/eos_stellar_collapse.hpp @@ -39,6 +41,7 @@ register_headers( eos/eos_spiner_rho_sie.hpp eos/eos_spiner_rho_temp.hpp eos/eos_spiner_common.hpp + eos/eos_spiner_construction.hpp eos/eos_spiner_sie_transforms.hpp eos/eos_davis.hpp eos/eos_gruneisen.hpp diff --git a/singularity-utils/singularity-utils/fast-math/logs.hpp b/singularity-utils/singularity-utils/fast-math/logs.hpp index 609c2d3b495..8639238e770 100644 --- a/singularity-utils/singularity-utils/fast-math/logs.hpp +++ b/singularity-utils/singularity-utils/fast-math/logs.hpp @@ -1,3 +1,4 @@ + //====================================================================== // © 2021-2026. Triad National Security, LLC. All rights reserved. This // program was produced under U.S. Government contract 89233218CNA000001 @@ -115,7 +116,7 @@ constexpr std::int64_t one = 1; // as_int(1.0) == 2^62 - 2^52 constexpr std::int64_t one_as_int = (one << 62) - (one << 52); // 1./static_cast(as_int(2.0) - as_int(1.0)) == 2^-52 -constexpr double scale_down = 2.22044604925031e-16; +constexpr double scale_down = 2.220446049250313e-16; // as_int(2.0) - as_int(1.0) = 2^52, but note the type constexpr double scale_up = (one << 52); // 2^52 - 1 diff --git a/utils/scripts/check_installs.sh b/utils/scripts/check_installs.sh new file mode 100755 index 00000000000..8362c46d826 --- /dev/null +++ b/utils/scripts/check_installs.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +#------------------------------------------------------------------------------ +# © 2021-2026. Triad National Security, LLC. All rights reserved. This +# program was produced under U.S. Government contract 89233218CNA000001 +# for Los Alamos National Laboratory (LANL), which is operated by Triad +# National Security, LLC for the U.S. Department of Energy/National +# Nuclear Security Administration. All rights in the program are +# reserved by Triad National Security, LLC, and the U.S. Department of +# Energy/National Nuclear Security Administration. The Government is +# granted for itself and others acting on its behalf a nonexclusive, +# paid-up, irrevocable worldwide license in this material to reproduce, +# prepare derivative works, distribute copies to the public, perform +# publicly and display publicly, and to permit others to do so. +#------------------------------------------------------------------------------ + +# This file generated with the assistance of generative AI + +# Report singularity-eos headers that are missing install logic. +# +# Every .hpp under singularity-eos/ is meant to be installed, which means it +# must appear as an argument to a register_headers(...) call in some +# CMakeLists.txt (see cmake/plugins.cmake). A header that is never registered +# is silently left out of the install. This script flags any such header so +# it can be wired into CI as a guard (non-zero exit when any are found). + +set -euo pipefail + +# Move to the repo root (two levels up from utils/scripts/). +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" +cd "${REPO_ROOT}" + +# Directory whose headers must all be installed. +HEADER_ROOT="singularity-eos" + +# Collect the text of every CMakeLists.txt so we can search registrations. +CMAKE_FILES=$(find . -name CMakeLists.txt -not -path './build/*' -not -path './.git/*') + +missing=0 +for f in $(find "${HEADER_ROOT}" -name '*.hpp' | sed "s|^${HEADER_ROOT}/||" | sort); do + base=$(basename "$f") + # A header is considered registered if either its path relative to the + # header root, or just its file name, appears in a CMakeLists.txt. The + # register_headers() paths are relative to the calling CMakeLists.txt, so + # matching on the basename keeps this robust without re-implementing + # CMake's path resolution. + if ! grep -rqF "$f" ${CMAKE_FILES} && ! grep -rqF "$base" ${CMAKE_FILES}; then + if [ "$missing" -eq 0 ]; then + echo "Headers missing register_headers() install logic:" + fi + echo " ${HEADER_ROOT}/$f" + missing=$((missing + 1)) + fi +done + +if [ "$missing" -eq 0 ]; then + echo "OK: every ${HEADER_ROOT} header has register_headers() install logic." + exit 0 +fi + +echo "" +echo "${missing} header(s) have no register_headers call." +echo "Add each to a register_headers(...) call in the appropriate CMakeLists.txt" +echo "(with the matching build condition if it is only needed under an option)," +echo "or exclude it deliberately." +exit 1