Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
777794a
Prototype ninja builds in CI.
BradWhitlock Mar 18, 2026
a324073
Try using ninja on more platforms.
BradWhitlock Mar 18, 2026
f09f8f1
First try non-verbose build. If the build fails, resume it with verbo…
BradWhitlock Mar 18, 2026
191602d
Print timing for various build,test,install stages.
BradWhitlock Mar 18, 2026
7036fa9
Change how timings are printed.
BradWhitlock Mar 18, 2026
738810d
Load ninja module
BradWhitlock Mar 18, 2026
4657425
Changed ninja usage
BradWhitlock Mar 19, 2026
d8d61a2
Try using lld for linking in CI jobs in github.
BradWhitlock Mar 19, 2026
f46ec6d
Add lld to the Docker files.
BradWhitlock Mar 19, 2026
b39cd1d
Try using lld on some LC machines.
BradWhitlock Mar 19, 2026
96cd1dd
Try full path to lld.
BradWhitlock Mar 19, 2026
e9d7f5d
Try a .gitlab-ci.yml fix
BradWhitlock Mar 19, 2026
e330269
Do not prescribe processors for ninja.
BradWhitlock Mar 19, 2026
5e11a4e
Pass Ninja generator to some cmake commands that are used when buildi…
BradWhitlock Mar 19, 2026
b826785
Print linker info
BradWhitlock Mar 19, 2026
d9dea4e
Temporary code to try and find path to lld.
BradWhitlock Mar 19, 2026
ef2e99e
Added support for AXOM_C_EXE_LINKER_FLAGS and AXOM_CXX_EXE_LINKER_FLA…
BradWhitlock Mar 20, 2026
6beb1c7
Attempt to select updated Docker containers where we will try to use …
BradWhitlock Mar 20, 2026
a0baa31
Turn off lld in build matrix.
BradWhitlock Mar 20, 2026
e8bdeea
Merge branch 'develop' into feature/whitlock/prototype_ci_ninja_builds
BradWhitlock Mar 23, 2026
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
18 changes: 15 additions & 3 deletions .github/workflows/ci-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ concurrency:
cancel-in-progress: ${{ github.ref != 'refs/heads/develop' }}

env:
CLANG_DOCKER_IMAGE: axom/tpls:clang-19_02-17-26_21h-05m
GCC_DOCKER_IMAGE: axom/tpls:gcc-13_02-17-26_21h-05m
CLANG_DOCKER_IMAGE: axom/tpls:clang-19_03-19-26_22h-14m
GCC_DOCKER_IMAGE: axom/tpls:gcc-13_03-19-26_22h-15m
LLD_CMAKE_FLAGS: "-DAXOM_CXX_EXE_LINKER_FLAGS=--ld-path=/usr/bin/ld.lld"

jobs:
# Hacky solution to reference env variables outside of `run` steps https://stackoverflow.com/a/74217028
Expand All @@ -29,6 +30,8 @@ jobs:
runs-on: ubuntu-24.04
needs:
- set_image_vars
env:
USE_NINJA: "yes"
strategy:
fail-fast: true
matrix:
Expand All @@ -38,18 +41,21 @@ jobs:
host_config: gcc@13.3.1.cmake
compiler_image: ${{ needs.set_image_vars.outputs.gcc_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DBLT_CXX_STD=c++20 -DENABLE_BENCHMARKS:BOOL=ON'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'yes'
- job_name: gcc@13.3.1, shared, 32bit
host_config: gcc@13.3.1.cmake
compiler_image: ${{ needs.set_image_vars.outputs.gcc_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_USE_64BIT_INDEXTYPE:BOOL=OFF'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'no'
- job_name: llvm@19.0.0, shared, benchmarks, quest regression
host_config: llvm@19.0.0.cmake
compiler_image: ${{ needs.set_image_vars.outputs.clang_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON -DENABLE_BENCHMARKS:BOOL=ON'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'yes'
include:
Expand All @@ -59,6 +65,7 @@ jobs:
host_config: llvm@19.0.0.cmake
compiler_image: ${{ needs.set_image_vars.outputs.clang_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON -DAXOM_ENABLE_MIR:BOOL=OFF -DAXOM_ENABLE_BUMP:BOOL=OFF -U RAJA_DIR'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'no'
- build_type: Debug
Expand All @@ -67,6 +74,7 @@ jobs:
host_config: llvm@19.0.0.cmake
compiler_image: ${{ needs.set_image_vars.outputs.clang_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON -U UMPIRE_DIR'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'no'
- build_type: Debug
Expand All @@ -75,6 +83,7 @@ jobs:
host_config: llvm@19.0.0.cmake
compiler_image: ${{ needs.set_image_vars.outputs.clang_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON -DAXOM_ENABLE_MIR:BOOL=OFF -DAXOM_ENABLE_BUMP:BOOL=OFF -U RAJA_DIR -U UMPIRE_DIR'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'no'
- build_type: Debug
Expand All @@ -83,6 +92,7 @@ jobs:
host_config: llvm@19.0.0.cmake
compiler_image: ${{ needs.set_image_vars.outputs.clang_docker_image }}
cmake_opts: '-DBUILD_SHARED_LIBS=ON -DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON -U CALIPER_DIR -U ADIAK_DIR'
use_lld: 'no'
do_build: 'yes'
do_benchmarks: 'no'
name: ${{ matrix.build_type }} - ${{ matrix.config.job_name }}
Expand Down Expand Up @@ -111,6 +121,9 @@ jobs:
HOST_CONFIG=${{ matrix.config.host_config }} \
CMAKE_EXTRA_FLAGS=" ${{ matrix.config.cmake_opts }} " \
BUILD_TYPE=${{ matrix.build_type }} \
USE_NINJA=${{ env.USE_NINJA }} \
USE_LLD=${{ matrix.config.use_lld }} \
LLD_CMAKE_FLAGS="${{ env.LLD_CMAKE_FLAGS }}" \
./scripts/github-actions/linux-build_and_test.sh
- name: Upload Test Results
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -192,4 +205,3 @@ jobs:
submodules: recursive
- name: Check ${{ matrix.check_type }}
run: ./scripts/github-actions/linux-check.sh

7 changes: 6 additions & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ variables:
BUILD_ROOT: ${CI_PROJECT_DIR}
FULL_BUILD_ROOT: ${CI_BUILDS_DIR}/axom/${CI_JOB_NAME}
SLURM_OVERLAP: 1
USE_LLD: "OFF"
LLD_EXTRA_CMAKE_OPTIONS: "-DAXOM_CXX_EXE_LINKER_FLAGS=--ld-path=/usr/bin/ld.lld"

.src_workflow:
rules:
Expand All @@ -25,7 +27,10 @@ variables:
script:
- echo -e "\e[0Ksection_start:$(date +%s):src_build_and_test\r\e[0KSource Build and Test ${CI_PROJECT_NAME}"
- export LSAN_OPTIONS=${LSAN_OPTIONS}
- ${ALLOC_COMMAND} python3 scripts/llnl_scripts/build_src.py -v --host-config ${HOST_CONFIG} --extra-cmake-options '-DENABLE_DOCS=OFF ${EXTRA_CMAKE_OPTIONS}' --build-type ${BUILD_TYPE:-Debug} ${EXTRA_OPTIONS}
- export SELECTED_EXTRA_CMAKE_OPTIONS="-DENABLE_DOCS=OFF ${EXTRA_CMAKE_OPTIONS}"
- if [ "${USE_LLD}" = "ON" ]; then export SELECTED_EXTRA_CMAKE_OPTIONS="${SELECTED_EXTRA_CMAKE_OPTIONS} ${LLD_EXTRA_CMAKE_OPTIONS}"; fi
- 'echo "[INFO: Extra CMake options: ${SELECTED_EXTRA_CMAKE_OPTIONS}]"'
- ${ALLOC_COMMAND} python3 scripts/llnl_scripts/build_src.py -v --host-config ${HOST_CONFIG} --extra-cmake-options "${SELECTED_EXTRA_CMAKE_OPTIONS}" --build-type ${BUILD_TYPE:-Debug} ${EXTRA_OPTIONS}
- echo -e "\e[0Ksection_end:$(date +%s):src_build_and_test\r\e[0K"
artifacts:
expire_in: 2 weeks
Expand Down
4 changes: 4 additions & 0 deletions .gitlab/build_dane.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@
- when: on_success
before_script:
- module load cmake/3.19.2
- module load ninja

####
# Template
.src_build_on_dane:
variables:
ALLOC_TIME: "40"
EXTRA_OPTIONS: "--ninja"
extends: [.src_build_script, .on_dane, .src_workflow]
needs: []

Expand All @@ -41,13 +43,15 @@ dane-llvm_19_1_3-debug-src:
variables:
COMPILER: "llvm@19.1.3"
HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake"
USE_LLD: "ON"
extends: .src_build_on_dane

dane-llvm_19_1_3-release-src:
variables:
COMPILER: "llvm@19.1.3"
HOST_CONFIG: "dane-toss_4_x86_64_ib-${COMPILER}.cmake"
BUILD_TYPE: "Release"
USE_LLD: "ON"
EXTRA_CMAKE_OPTIONS: "-DAXOM_QUEST_ENABLE_EXTRA_REGRESSION_TESTS:BOOL=ON"
extends: .src_build_on_dane

Expand Down
2 changes: 2 additions & 0 deletions .gitlab/build_matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,14 @@
- when: on_success
before_script:
- module load cmake/3.26
- module load ninja

####
# Template
.src_build_on_matrix:
variables:
ALLOC_TIME: "40"
EXTRA_OPTIONS: "--ninja"
extends: [.src_build_script, .on_matrix, .src_workflow]
needs: []

Expand Down
2 changes: 2 additions & 0 deletions .gitlab/build_tioga.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,14 @@
- when: on_success
before_script:
- module load cmake/3.29.2
- module load ninja

####
# Template
.src_build_on_tioga:
variables:
ALLOC_TIME: "60"
EXTRA_OPTIONS: "--ninja"
extends: [.src_build_script, .on_tioga, .src_workflow]
needs: []

Expand Down
2 changes: 2 additions & 0 deletions .gitlab/build_tuolumne.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,15 @@
- when: on_success
before_script:
- module load cmake/3.29
- module load ninja

####
# Template
.src_build_on_tuolumne:
variables:
ALLOC_TIME: "60"
NUM_NODES: "1"
EXTRA_OPTIONS: "--ninja"
extends: [.src_build_script, .on_tuolumne, .src_workflow]
needs: []

Expand Down
6 changes: 3 additions & 3 deletions host-configs/docker/gcc@13.3.1.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ set(CMAKE_PREFIX_PATH "/home/axom/axom_tpls/gcc-13.3.1/blt-0.7.1-tp6erawewp4l2ew

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH "ON" CACHE STRING "")

set(CMAKE_BUILD_RPATH "/home/axom/axom_tpls/gcc-13.3.1/axom-develop-ofy2ds6xm3ggsfnnn2bzwtfoyqooykov/lib;/home/axom/axom_tpls/gcc-13.3.1/axom-develop-ofy2ds6xm3ggsfnnn2bzwtfoyqooykov/lib64;;" CACHE STRING "")
set(CMAKE_BUILD_RPATH "/home/axom/axom_tpls/gcc-13.3.1/axom-develop-vj2h6qhht3szk7mhxrqfp7ffs7ljhcbp/lib;/home/axom/axom_tpls/gcc-13.3.1/axom-develop-vj2h6qhht3szk7mhxrqfp7ffs7ljhcbp/lib64;;" CACHE STRING "")

set(CMAKE_INSTALL_RPATH "/home/axom/axom_tpls/gcc-13.3.1/axom-develop-ofy2ds6xm3ggsfnnn2bzwtfoyqooykov/lib;/home/axom/axom_tpls/gcc-13.3.1/axom-develop-ofy2ds6xm3ggsfnnn2bzwtfoyqooykov/lib64;;" CACHE STRING "")
set(CMAKE_INSTALL_RPATH "/home/axom/axom_tpls/gcc-13.3.1/axom-develop-vj2h6qhht3szk7mhxrqfp7ffs7ljhcbp/lib;/home/axom/axom_tpls/gcc-13.3.1/axom-develop-vj2h6qhht3szk7mhxrqfp7ffs7ljhcbp/lib64;;" CACHE STRING "")

set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")

Expand Down Expand Up @@ -102,7 +102,7 @@ set(CAMP_DIR "${TPL_ROOT}/camp-git.a8caefa9f4c811b1a114b4ed2c9b681d40f12325_main
# scr not built

#------------------------------------------------------------------------------
# Devtools
# Devtools & Python
#------------------------------------------------------------------------------

# ClangFormat disabled since llvm@19 and devtools not in spec
Expand Down
6 changes: 3 additions & 3 deletions host-configs/docker/llvm@19.0.0.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ set(CMAKE_PREFIX_PATH "/home/axom/axom_tpls/llvm-19.0.0/blt-0.7.1-p7mm766jfnjcbc

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH "ON" CACHE STRING "")

set(CMAKE_BUILD_RPATH "/home/axom/axom_tpls/llvm-19.0.0/axom-develop-pue4pbqffz5ostcywjjmbqrpva3p7c2o/lib;/home/axom/axom_tpls/llvm-19.0.0/axom-develop-pue4pbqffz5ostcywjjmbqrpva3p7c2o/lib64;;" CACHE STRING "")
set(CMAKE_BUILD_RPATH "/home/axom/axom_tpls/llvm-19.0.0/axom-develop-aftfr3lcr7ucuo4hgbetvfxg4ent3afe/lib;/home/axom/axom_tpls/llvm-19.0.0/axom-develop-aftfr3lcr7ucuo4hgbetvfxg4ent3afe/lib64;;" CACHE STRING "")

set(CMAKE_INSTALL_RPATH "/home/axom/axom_tpls/llvm-19.0.0/axom-develop-pue4pbqffz5ostcywjjmbqrpva3p7c2o/lib;/home/axom/axom_tpls/llvm-19.0.0/axom-develop-pue4pbqffz5ostcywjjmbqrpva3p7c2o/lib64;;" CACHE STRING "")
set(CMAKE_INSTALL_RPATH "/home/axom/axom_tpls/llvm-19.0.0/axom-develop-aftfr3lcr7ucuo4hgbetvfxg4ent3afe/lib;/home/axom/axom_tpls/llvm-19.0.0/axom-develop-aftfr3lcr7ucuo4hgbetvfxg4ent3afe/lib64;;" CACHE STRING "")

set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")

Expand Down Expand Up @@ -104,7 +104,7 @@ set(CAMP_DIR "${TPL_ROOT}/camp-git.a8caefa9f4c811b1a114b4ed2c9b681d40f12325_main
# scr not built

#------------------------------------------------------------------------------
# Devtools
# Devtools & Python
#------------------------------------------------------------------------------

# ClangFormat disabled since llvm@19 and devtools not in spec
Expand Down
4 changes: 2 additions & 2 deletions scripts/docker/dockerfile_clang-19
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ARG branch=develop

SHELL ["/bin/bash", "-c"]
RUN sudo apt-get update -y
RUN sudo apt-get install gettext gfortran-$(gcc -dumpversion) graphviz libomp-19-dev libopenblas-dev \
RUN sudo apt-get install gettext gfortran-$(gcc -dumpversion) graphviz libomp-19-dev libopenblas-dev lld ninja-build \
lsb-release lua5.2 lua5.2-dev python3-sphinx locales ssh -fy
RUN sudo locale-gen en_US.utf8
RUN sudo useradd -m -s /bin/bash -G sudo axom
Expand Down Expand Up @@ -37,4 +37,4 @@ RUN cp ./axom_repo/*.cmake /home/axom/export_hostconfig

# Make sure the new hostconfig worked
# Note: having high job slots causes build log to disappear and job to fail
RUN cd axom_repo && python3 config-build.py -hc *.cmake -bp build && cd build && make -j4 VERBOSE=1 && make -j4 test && cd /home/axom && rm -rf axom_repo
RUN cd axom_repo && python3 config-build.py --ninja -hc *.cmake -bp build && cd build && (ninja || (echo && echo "==================================================================" && echo " Non-verbose build failed. Re-running with verbose output." && echo "==================================================================" && echo && ninja -v)) && ctest --output-on-failure -T Test -VV -j4 && cd /home/axom && rm -rf axom_repo
7 changes: 3 additions & 4 deletions scripts/docker/dockerfile_gcc-12_cuda-12
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ SHELL ["/bin/bash", "-c"]
RUN sudo apt-get update -y
RUN sudo apt-get install -y supervisor
RUN sudo useradd --create-home --shell /bin/bash ${USER}
RUN sudo apt-get install doxygen elfutils gfortran graphviz language-pack-en-base less libopenblas-dev libomp-dev mpich python3-sphinx ssh tree unzip cpio libxcursor1 libxkbcommon0 -fy
RUN sudo apt-get install doxygen elfutils gfortran graphviz language-pack-en-base less libopenblas-dev libomp-dev lld mpich ninja-build python3-sphinx ssh tree unzip cpio libxcursor1 libxkbcommon0 -fy

WORKDIR /opt/archives
RUN sudo curl -L https://github.com/gitpod-io/openvscode-server/releases/download/openvscode-server-v1.69.1/openvscode-server-v1.69.1-linux-x64.tar.gz > \
Expand All @@ -44,13 +44,13 @@ RUN cd ${HOME}/axom_repo && python3 ./scripts/uberenv/uberenv.py --spack-env-fil
# Note: having high job slots causes build log to disappear and job to fail
# Omit testing step, hangs at slam_lulesh unit test (same behavior for azure pipeline images, as well)
# Disable link-time optimization from MPI wrapper causing linkage failures
RUN cd ${HOME}/axom_repo && python3 config-build.py -hc *cuda.cmake \
RUN cd ${HOME}/axom_repo && python3 config-build.py --ninja -hc *cuda.cmake \
-bp ${HOME}/axom_repo/build-release \
-ip ${HOME}/axom_repo/install-release \
-DCMAKE_EXE_LINKER_FLAGS=-fno-lto \
-bt Release \
&& cd ${HOME}/axom_repo/build-release \
&& make -j4 install
&& (ninja install || (echo && echo "==================================================================" && echo " Non-verbose install failed. Re-running with verbose output." && echo "==================================================================" && echo && ninja -v install))

# Install VisIt binary
# Download tarball, installer, test script, perform installation and cleanup
Expand Down Expand Up @@ -80,4 +80,3 @@ RUN sed -i "s/XXX/${USER}/g" /etc/supervisord.conf
RUN touch /var/log/openvscode-server.log && chown -R ${USER}:${USER} /var/log/openvscode-server.log

CMD ["/usr/bin/supervisord"]

4 changes: 2 additions & 2 deletions scripts/docker/dockerfile_gcc-13
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ARG branch=develop

SHELL ["/bin/bash", "-c"]
RUN sudo apt-get update -y
RUN sudo apt-get install gettext gfortran-$(gcc -dumpversion) graphviz libopenblas-dev \
RUN sudo apt-get install gettext gfortran-$(gcc -dumpversion) graphviz libopenblas-dev lld ninja-build \
lsb-release lua5.2 lua5.2-dev python3-sphinx locales ssh -fy
RUN sudo locale-gen en_US.utf8
RUN sudo useradd -m -s /bin/bash -G sudo axom
Expand Down Expand Up @@ -37,4 +37,4 @@ RUN cp ./axom_repo/*.cmake /home/axom/export_hostconfig

# Make sure the new hostconfig worked
# Note: having high job slots causes build log to disappear and job to fail
RUN cd axom_repo && python3 config-build.py -hc *.cmake -bp build && cd build && make -j4 VERBOSE=1 && make -j4 test && cd /home/axom && rm -rf axom_repo
RUN cd axom_repo && python3 config-build.py --ninja -hc *.cmake -bp build && cd build && (ninja || (echo && echo "==================================================================" && echo " Non-verbose build failed. Re-running with verbose output." && echo "==================================================================" && echo && ninja -v)) && ctest --output-on-failure -T Test -VV -j4 && cd /home/axom && rm -rf axom_repo
Loading
Loading