Skip to content

Merge pull request #142 from insertinterestingnamehere/ci #240

Merge pull request #142 from insertinterestingnamehere/ci

Merge pull request #142 from insertinterestingnamehere/ci #240

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
linux-gcc:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
gcc_version: [9, 10, 11, 12, 13]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
env:
CC: gcc-${{ matrix.gcc_version }}
CXX: g++-${{ matrix.gcc_version }}
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.gcc_version == '13' }}
run: sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
- name: install compiler
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 3m make check
timeout-minutes: 4
linux-clang:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
clang_version: [11, 12, 13, 14, 15, 16, 17]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
include:
- clang_version: 11
gcc_version: 10
- clang_version: 12
gcc_version: 11
- clang_version: 13
gcc_version: 11
- clang_version: 14
gcc_version: 11
- clang_version: 15
gcc_version: 12
- clang_version: 16
gcc_version: 13
- clang_version: 17
gcc_version: 13
env:
CC: clang-${{ matrix.clang_version }}
CXX: clang++${{ matrix.clang_version }}
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.clang_version == '16' || matrix.clang_version == 17 }}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ matrix.clang_version }} main' && break || sleep 1
- if: ${{ matrix.gcc_version == '13' && ! matrix.use_libcxx }}
run: sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
- name: install gcc
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- name: install clang
run: sudo apt-get install clang-${{ matrix.clang_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7
mac:
runs-on: macos-latest
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_asserts: [true, false]
env:
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v3
- name: install deps
run: |
brew install autoconf automake libtool coreutils # coreutils is to get gtimeout for CI and is not universally required by qthreads.
- if: ${{ matrix.topology != 'no' }}
run: |
brew install hwloc
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j3
- name: make check
run: gtimeout -k 10s --foreground 8m make check
timeout-minutes: 9
sanitizers:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
sanitizer: [address, memory, thread, undefined]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
env:
CC: clang-17
CXX: clang++-17
CFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
CXXFLAGS: ${{ matrix.use_libcxx && format('-stdlib=libc++ -fsanitize={0}', matrix.sanitizer) || format('-fsanitize={0}', matrix.sanitizer) }}
LDFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
steps:
- uses: actions/checkout@v3
- if: ${{ ! matrix.use_libcxx }}
run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- name: install compiler
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 8m make check
timeout-minutes: 9
linux-thorough:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
compiler: [gcc, clang]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
use_asserts: [true, false]
exclude:
- compiler: gcc
use_libcxx: true
env:
CC: ${{ matrix.compiler == 'gcc' && 'gcc-13' || 'clang-17' }}
CXX: ${{ matrix.compiler == 'gcc' && 'g++-13' || 'clang++-17' }}
CXXFLAGS: ${{ matrix.use_libcxx && '-stdlib=libc++' || '' }}
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v3
- run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- if: ${{ matrix.compiler == 'clang' }}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7