Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,5 @@ jobs:
make -j4
make install
ctest --output-on-failure
cd ..
bash ./utils/scripts/check_installs.sh
2 changes: 2 additions & 0 deletions .github/workflows/tests_minimal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ jobs:
make -j4
make install
ctest --output-on-failure
cd ..
bash ./utils/scripts/check_installs.sh
2 changes: 2 additions & 0 deletions .github/workflows/tests_minimal_kokkos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ jobs:
make -j4
make install
ctest --output-on-failure
cd ..
bash ./utils/scripts/check_installs.sh
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/...)

Expand Down
3 changes: 3 additions & 0 deletions singularity-eos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
3 changes: 2 additions & 1 deletion singularity-utils/singularity-utils/fast-math/logs.hpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

//======================================================================
// © 2021-2026. Triad National Security, LLC. All rights reserved. This
// program was produced under U.S. Government contract 89233218CNA000001
Expand Down Expand Up @@ -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<double>(as_int(2.0) - as_int(1.0)) == 2^-52
constexpr double scale_down = 2.22044604925031e-16;
constexpr double scale_down = 2.220446049250313e-16;

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't matter much but this literal is actually 2^-52. Had dropped one degree of precision somehow.

// as_int(2.0) - as_int(1.0) = 2^52, but note the type
constexpr double scale_up = (one << 52);
// 2^52 - 1
Expand Down
67 changes: 67 additions & 0 deletions utils/scripts/check_installs.sh
Original file line number Diff line number Diff line change
@@ -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
Loading