Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
### 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: 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