Repository navigation
Merge pull request #21 from bonachea/ci-2026-09 #62
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Smoke Test | |
| run-name: ${{ github.event_name == 'workflow_dispatch' && 'Manual:' || '' }} ${{ inputs.run_name }} | |
| on: | |
| push: | |
| paths-ignore: &paths_ignore | |
| - 'docs/**' | |
| - '**.txt' | |
| - '**.md' | |
| - 'ChangeLog' | |
| - '**/README*' | |
| - 'mpi-conduit/contrib/mpirun_h/**' | |
| - 'other/contrib/cross-configure-*' | |
| - 'other/valgrind/*.supp' | |
| pull_request: | |
| paths-ignore: *paths_ignore | |
| workflow_dispatch: | |
| inputs: | |
| run_name: | |
| description: 'Descriptive name for this run' | |
| type: string | |
| required: false | |
| configure_args: | |
| description: 'Additional configure arguments' | |
| type: string | |
| required: false | |
| test_list: | |
| description: 'Conduit tests to run (or "all")' | |
| type: string | |
| default: 'testgasnet testinternal testthreads' | |
| required: true | |
| test_nodes: | |
| description: 'Test process count' | |
| type: integer | |
| default: 4 | |
| required: true | |
| env_vars: | |
| description: 'Environment vars: k1=v1 k2=v2' | |
| type: string | |
| default: '' | |
| required: false | |
| concurrency: | |
| # De-duplicate concurrent workflow runs on the same branch/ref | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}-${{ ( github.event_name == 'workflow_dispatch' && github.run_id ) || 'auto' }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' && | |
| github.ref != 'refs/heads/stable' && | |
| github.ref != 'refs/heads/develop' }} | |
| jobs: | |
| build: | |
| name: ${{ matrix.compiler }}-${{ matrix.version }} (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash --noprofile --norc -e -x -o pipefail {0} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ macos-14, macos-15, macos-15-intel, macos-26, macos-26-intel, ubuntu-24.04, ubuntu-26.04-arm ] | |
| compiler: [ gcc ] | |
| version: [ 12, 13, 14, 15, 16 ] | |
| exclude: | |
| # Homebrew removed Intel bottles for gcc@16 | |
| - os: macos-15-intel | |
| version: 16 | |
| - os: macos-26-intel | |
| version: 16 | |
| include: | |
| - os: ubuntu-24.04 | |
| conduits: &ubuntu_conduits [ mpi, ibv, ofi, ucx ] | |
| - os: ubuntu-22.04 | |
| compiler: gcc | |
| version: 12 # no package available for gcc 13+ | |
| conduits: *ubuntu_conduits | |
| # --- LLVM clang coverage --- | |
| - os: macos-15 | |
| compiler: clang | |
| version: 23 | |
| - os: macos-26 | |
| compiler: clang | |
| version: 23 | |
| #- os: macos-15-intel | |
| # compiler: clang | |
| # version: 23 | |
| #- os: macos-26-intel | |
| # compiler: clang | |
| # version: 23 | |
| # https://hub.docker.com/r/phhargrove/llvm-flang/tags | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 23 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:23.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 22 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:22.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 21 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:21.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 20 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:20.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 19 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:19.1.1-latest | |
| # --- Intel coverage --- | |
| # https://hub.docker.com/r/intel/oneapi-toolkit/tags | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: latest | |
| container: intel/oneapi-toolkit:latest | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2026.0.0 | |
| container: intel/oneapi-toolkit:2026.0.0-devel-ubuntu24.04 | |
| # https://hub.docker.com/r/intel/oneapi-hpckit/tags | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2025.3.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.3.0-0-devel-ubuntu24.04 | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2025.2.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.2.0-0-devel-ubuntu24.04 | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2025.1.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.1.0-0-devel-ubuntu24.04 | |
| - os: ubuntu-22.04 | |
| compiler: icx | |
| version: 2025.0.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.0.0-0-devel-ubuntu22.04 | |
| container: | |
| image: ${{ matrix.container }} | |
| options: --shm-size=2gb | |
| env: | |
| COMPILER_VERSION: ${{ matrix.version }} | |
| CC: ${{ matrix.compiler }} | |
| CFLAGS: ${{ matrix.cflags }} | |
| CXXFLAGS: ${{ matrix.cxxflags }} | |
| LDFLAGS: ${{ matrix.ldflags }} | |
| CONFIGURE_ARGS: --disable-mpi-compat --enable-rpath --enable-debug --enable-smp --enable-udp ${{ inputs.configure_args }} | |
| GASNET_BACKTRACE: 1 | |
| GASNET_SPAWN_VERBOSE: 1 | |
| GASNET_VERBOSEENV: 1 | |
| GASNET_SPAWNFN: L | |
| GASNET_MASTERIP: 127.0.0.1 | |
| GASNET_TEST_TIME_SLACK: 0.1 | |
| MAKE_FLAGS: -j 4 | |
| TEST_NODES: ${{ inputs.test_nodes || 4 }} | |
| TEST_FILTER: |- | |
| ${{ case( github.event_name == 'workflow_dispatch' && inputs.test_list != 'all', | |
| format('TESTS={0}', inputs.test_list), | |
| github.event_name == 'workflow_dispatch', '_dummy_TESTS=all', | |
| 'TESTS=testgasnet testinternal testthreads' | |
| ) }} | |
| ERR_CHECK: '! grep -q -e "\bERROR" -e "Caught a signal" -e "Caught a fatal signal" -e ": command not found" -e "No such file or directory"' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Ubuntu Native Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container == '' && matrix.compiler == 'gcc' }} | |
| run: | | |
| sudo apt update | |
| #sudo apt list -a 'gcc-*' | |
| sudo apt install -y build-essential autoconf2.69 automake | |
| if [[ ${COMPILER_VERSION} -lt 15 ]] || type -p gcc-${COMPILER_VERSION} ; then | |
| sudo apt install -y gcc-${COMPILER_VERSION} g++-${COMPILER_VERSION} | |
| else | |
| curl -L https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o install-homebrew.sh | |
| chmod +x install-homebrew.sh | |
| env CI=1 ./install-homebrew.sh | |
| HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" | |
| ${HOMEBREW_PREFIX}/bin/brew install -v gcc@${COMPILER_VERSION} binutils | |
| ls -al ${HOMEBREW_PREFIX}/bin | |
| echo "PATH=${HOMEBREW_PREFIX}/bin:${PATH}" >> "$GITHUB_ENV" | |
| : Homebrew GCC@15 needs binutils 2.44+ | |
| HOMEBREW_BINUTILS=$(ls -d ${HOMEBREW_PREFIX}/Cellar/binutils/2.*/bin ) | |
| ls -al ${HOMEBREW_BINUTILS} | |
| echo "FFLAGS=$FFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| echo "CFLAGS=$CFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| echo "CXXFLAGS=$CXXFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| fi | |
| - name: Install Ubuntu Container Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container != '' }} | |
| run: | | |
| apt update | |
| apt install -y build-essential autoconf2.69 automake | |
| - name: Install Ubuntu Conduit Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && toJSON(matrix.conduits) != '[]' }} | |
| run: | | |
| FORCE_CONDUITS="" | |
| if [[ $(whoami) == root ]] ; then | |
| SUDO= | |
| else | |
| SUDO=sudo | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ibv') }} == true ]] ; then | |
| $SUDO apt install -y libibverbs-dev | |
| FORCE_CONDUITS+=" --enable-ibv" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ofi') }} == true ]] ; then | |
| $SUDO apt install -y libfabric-dev | |
| FORCE_CONDUITS+=" --enable-ofi" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ucx') }} == true ]] ; then | |
| $SUDO apt install -y libucx-dev | |
| FORCE_CONDUITS+=" --enable-ucx" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'mpi') }} == true ]] ; then | |
| if [[ ${{ matrix.compiler }} == 'icx' ]] ; then # icx uses Intel MPI | |
| echo "MPI_CC=mpiicx" >> "$GITHUB_ENV" | |
| else | |
| $SUDO apt install -y libopenmpi-dev | |
| fi | |
| FORCE_CONDUITS+=" --enable-mpi --enable-mpi-compat" | |
| fi | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS$FORCE_CONDUITS" >> "$GITHUB_ENV" | |
| - name: Fix macOS Homebrew Configuration | |
| if: ${{ contains(matrix.os, 'macos') }} | |
| run: | | |
| # silence Homebrew tap trust warnings: | |
| (set +e ; brew untap -f aws/tap hashicorp/tap 2>&1 | perl -pe 's/#*.warning./warn: /' ; brew trust azure/bicep ) | |
| # set some Homebrew knobs to accelerate installation | |
| # but only when we are not simulating the user environment brew-via-install workflow | |
| if [[ -z "${{ matrix.brew_via_install }}" ]] ; then | |
| echo HOMEBREW_NO_ANALYTICS=1 >> "$GITHUB_ENV" | |
| echo HOMEBREW_NO_AUTO_UPDATE=1 >> "$GITHUB_ENV" | |
| echo HOMEBREW_NO_GITHUB_API=1 >> "$GITHUB_ENV" | |
| echo HOMEBREW_NO_INSTALL_CLEANUP=1 >> "$GITHUB_ENV" | |
| fi | |
| - name: Install macOS Dependencies | |
| if: contains(matrix.os, 'macos') | |
| run: | | |
| brew update | |
| brew install automake # autoconf | |
| if [[ "${{ matrix.compiler }}@${{ matrix.version }}" == gcc@12 ]] ; then | |
| brew install gcc@12 | |
| fi | |
| if [[ ${{ matrix.compiler }} == 'gcc' && ${COMPILER_VERSION} -gt 15 ]] ; then | |
| brew install gcc@${COMPILER_VERSION} | |
| fi | |
| if [[ ${{ runner.arch }} == "ARM64" ]] ; then | |
| # openmpi depends on gcc@latest which only has ARM64 bottles on macOS | |
| brew install libfabric openmpi | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS --enable-ofi --enable-mpi" >> "$GITHUB_ENV" | |
| else | |
| brew install libfabric | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS --enable-ofi" >> "$GITHUB_ENV" | |
| fi | |
| - name: Install LLVM on macOS | |
| if: contains(matrix.os, 'macos') && matrix.compiler == 'clang' | |
| run: | | |
| brew install llvm@${COMPILER_VERSION} | |
| # Prepend homebrew clang to PATH: | |
| echo "PATH=$(brew --prefix)/opt/llvm/bin:${PATH}" >> "$GITHUB_ENV" | |
| - name: Setup Compilers | |
| run: | | |
| if test "$CC" = "clang" ; then | |
| echo "CXX=clang++" >> "$GITHUB_ENV" | |
| elif test "$CC" = "icx" ; then | |
| echo "CXX=icpx" >> "$GITHUB_ENV" | |
| else | |
| echo "CC=gcc-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| echo "CXX=g++-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| # XCode 26 / gcc bug workaround: | |
| # <mach/mach_time.h> generates xnu_static_assert_struct_size errors from <mach/message.h> | |
| if [[ ${{ matrix.os }} =~ macos-26 ]] ; then | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS --enable-force-posix-realtime" >> "$GITHUB_ENV" | |
| fi | |
| fi | |
| - name: Set Workflow Dispatch Environment | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| for setting in ${{ inputs.env_vars }}; do | |
| echo $setting >> "$GITHUB_ENV" | |
| done | |
| - name: Version info | |
| run: | | |
| set +x | |
| echo == Platform version info == | |
| uname -a | |
| if test -r /etc/os-release ; then grep -e NAME -e VERSION /etc/os-release ; fi | |
| if test -x /usr/bin/sw_vers ; then /usr/bin/sw_vers ; fi | |
| if test -d /dev/shm ; then df -h /dev/shm ; fi | |
| echo | |
| echo == Tool version info == | |
| echo PATH="$PATH" | |
| for tool in ${CC} ${MPI_CC:-`type -p mpicc`} ${CXX} make ; do | |
| ( echo ; set -x ; w=$(which $tool) ; ls -al $w ; ls -alhL $w ; $tool --version ) | |
| done | |
| - name: Bootstrap | |
| run: | | |
| ./Bootstrap | |
| - name: configure | |
| run: | | |
| ./configure --prefix=$PWD/inst ${CONFIGURE_ARGS} | |
| - name: make all | |
| run: | | |
| make ${MAKE_FLAGS} all | |
| - name: make install | |
| run: | | |
| make ${MAKE_FLAGS} install | |
| - name: make check | |
| run: | | |
| make ${MAKE_FLAGS} check 2>&1 | tee output | |
| eval $ERR_CHECK output | |
| mv smp-conduit/testtools . | |
| rm -f */testtools | |
| - name: Run smp-conduit tests | |
| run: | | |
| make ${MAKE_FLAGS} -C smp-conduit run-tests TEST_NODES=${TEST_NODES} "${TEST_FILTER}" 2>&1 | tee output | |
| grep -q -e 'Test results: 0 failures' output | |
| eval $ERR_CHECK output | |
| - name: Run udp-conduit tests | |
| run: | | |
| if [[ -z "$GASNET_SUPERNODE_MAXSIZE" ]] ; then | |
| if [[ ${TEST_NODES} > 2 ]] ; then | |
| export GASNET_SUPERNODE_MAXSIZE=2 | |
| else | |
| export GASNET_SUPERNODE_MAXSIZE=1 | |
| fi | |
| fi | |
| make ${MAKE_FLAGS} -C udp-conduit run-tests TEST_NODES=${TEST_NODES} "${TEST_FILTER}" 2>&1 | tee output | |
| grep -q -e 'Test results: 0 failures' output | |
| eval $ERR_CHECK output | |
| - name: Run testtools | |
| run: | | |
| ./testtools 2>&1 | tee output | |
| eval $ERR_CHECK output | |