Skip to content

GHI #20 Setup pipelines and presets #79

GHI #20 Setup pipelines and presets

GHI #20 Setup pipelines and presets #79

Workflow file for this run

name: Run Tests With Warnings
on:
pull_request:
branches:
- "**"
jobs:
#test-native:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# # verbose labels make things easier to read in GitHub Actions
# # platform gets converted to os, preset
# platform:
# - windows-gcc-x86_64
# - windows-gcc-ansi-x86_64
# - windows-msvc-x86
# - windows-msvc-x64
# - macos-clang-x86_64
# - macos-clang-ansi-x86_64
# - linux-clang-x86_64
# - linux-clang-ansi-x86_64
# - linux-gcc-x86_64
# - linux-gcc-ansi-x86_64
# # build-shared gets converted to cmake option
# build-shared:
# - static
# - shared
# # convert verbose labels to usable values (which don't appear in action name)
# # also just other variables that we don't want appearing in action name
# include:
# # use Release for everything
# - cmake-build-type: Release
# # platform -> os, preset
# - platform: windows-gcc-x86_64
# os: windows-latest
# preset: patomic-ci-native-unix-gcc-warning
# - platform: windows-gcc-ansi-x86_64
# os: windows-latest
# preset: patomic-ci-native-unix-gcc-ansi
# - platform: windows-msvc-x86
# os: windows-latest
# preset: patomic-ci-native-windows-msvc-warning -A Win32
# - platform: windows-msvc-x64
# os: windows-latest
# preset: patomic-ci-native-windows-msvc-warning -A x64
# - platform: macos-clang-x86_64
# os: macos-latest
# preset: patomic-ci-native-unix-clang-warning
# - platform: macos-clang-ansi-x86_64
# os: macos-latest
# preset: patomic-ci-native-unix-clang-ansi
# - platform: linux-clang-x86_64
# os: ubuntu-latest
# preset: patomic-ci-native-unix-clang-warning
# - platform: linux-clang-ansi-x86_64
# os: ubuntu-latest
# preset: patomic-ci-native-unix-clang-ansi
# - platform: linux-gcc-x86_64
# os: ubuntu-latest
# preset: patomic-ci-native-unix-gcc-warning
# - platform: linux-gcc-ansi-x86_64
# os: ubuntu-latest
# preset: patomic-ci-native-unix-gcc-ansi
# # build-shared -> cmake-build-shared
# - build-shared: static
# cmake-build-shared: OFF
# - build-shared: shared
# cmake-build-shared: ON
#
# steps:
# - name: Checkout patomic
# uses: actions/checkout@v4
# with:
# path: patomic
#
# - name: Checkout GoogleTest
# uses: actions/checkout@v4
# with:
# repository: google/googletest
# path: googletest
#
# - name: Build and Install GoogleTest
# run: |
# cd googletest
# cp ../patomic/CMakePresets.json .
# mkdir build
# cd build
# cmake --preset ${{ matrix.preset }} -DCMAKE_CXX_FLAGS="" -DBUILD_SHARED_LIBS=${{ matrix.cmake-build-shared }} -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} -Dgtest_force_shared_crt=ON -Dgtest_hide_internal_symbols=ON ..
# cmake --build . --verbose --config ${{ matrix.cmake-build-type }}
# cmake --install . --config ${{ matrix.cmake-build-type }} --prefix install
#
# - name: Build patomic
# run: |
# cd patomic
# mkdir build
# cd build
# cmake --preset ${{ matrix.preset }} -DBUILD_SHARED_LIBS=${{ matrix.cmake-build-shared }} -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} -DGTest_ROOT:PATH="../../googletest/build/install/lib/cmake/GTest" ..
# cmake --build . --verbose --config ${{ matrix.cmake-build-type }}
#
# - name: Test patomic
# continue-on-error: true
# run: |
# cd patomic/build
# ctest --verbose --build-config ${{ matrix.cmake-build-type }} .
#
# - name: Prepare Test Results
# run: |
# mkdir upload
# mkdir upload/${{ matrix.platform }}
# mkdir upload/${{ matrix.platform }}/${{ matrix.build-shared }}
# cp patomic/build/Testing/Temporary/* upload/${{ matrix.platform }}/${{ matrix.build-shared }}
#
# - name: Upload Test Results
# uses: actions/upload-artifact@v3
# with:
# name: test-warning-native-results
# path: upload/
test-qemu:
runs-on: ubuntu-latest
env:
PATOMIC_CI_XARCH: ${{ matrix.architecture }}
PATOMIC_CI_XTRIPLE: ${{ matrix.triple }}
PATOMIC_CI_XCOMPILER: ${{ matrix.compiler }}
PATOMIC_CI_XCOMPILER_VERSION: ${{ matrix.compiler-version }}
strategy:
matrix:
# architecture gets converted to triple
# short form here so that it doesn't take up the whole GitHub Action name
architecture:
# - aarch64
# - arm
- hppa
# - s390x
compiler:
- clang
- gcc
# build-shared gets converted to cmake option
build-shared:
- static
- shared
# convert verbose labels to usable values (which don't appear in action name)
# also just other variables that we don't want appearing in action name
include:
# use Release for everything
- cmake-build-type: Release
# build-shared -> cmake-build-shared
- build-shared: static
cmake-build-shared: OFF
- build-shared: shared
cmake-build-shared: ON
# toolchain versions to use
- gcc-version: 11
- llvm-version: 15
# compiler -> preset, compiler-version
- compiler: clang
preset: patomic-ci-qemu-ubuntu-clang-warning
compiler-version: 15
- compiler: gcc
preset: patomic-ci-qemu-ubuntu-gcc-warning
compiler-version: 11
# architecture -> triple
# - architecture: aarch64
# triple: aarch64-linux-gnu
# - architecture: arm
# triple: arm-linux-gnueabi
- architecture: hppa
triple: hppa-linux-gnu
# - architecture: s390x
# triple: s390x-linux-gnu
steps:
- name: Install Toolchains and Qemu
run: |
sudo apt install g++-${{ matrix.gcc-version }}-multilib
sudo apt install g++-${{ matrix.gcc-version }}-${{ matrix.triple }}
sudo apt install llvm-${{ matrix.llvm-version }}
sudo apt install clang-${{ matrix.llvm-version }}
sudo apt install qemu-user
# - name: Display what was Installed
# run: |
# sudo apt update
# sudo apt-cache dumpavail | sudo dpkg --merge-avail -
# sudo apt install apt-file
# sudo apt install tree
# sudo apt-file update
# sudo apt-file list g++-${{ matrix.gcc-version }}-multilib
# sudo apt-file list g++-${{ matrix.gcc-version }}-${{ matrix.triple }}
# tree /usr/${{ matrix.triple }}
# tree /usr/lib/gcc-cross/${{ matrix.triple }}/${{ matrix.gcc-version}}
- name: Set Up Sysroot
# cannot use symlink or reference directory directly, will not work
run: |
cp -r /usr/${{ matrix.triple }}/ ${HOME}/sysroot
- name: Checkout patomic
uses: actions/checkout@v4
with:
path: patomic
- name: Checkout GoogleTest
uses: actions/checkout@v4
with:
repository: google/googletest
path: googletest
- name: Build and Install GoogleTest
run: |
cd googletest
cp -r ../patomic/ci/ ./
cp ../patomic/CMakePresets.json .
mkdir build
cd build
cmake --preset ${{ matrix.preset }} -DCMAKE_CXX_FLAGS="" -DBUILD_SHARED_LIBS=${{ matrix.cmake-build-shared }} -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} -Dgtest_force_shared_crt=ON -Dgtest_hide_internal_symbols=ON ..
cmake --build . --verbose
cmake --install . --prefix ${HOME}/sysroot
- name: Build patomic
run: |
cd patomic
mkdir build
cd build
cmake --preset ${{ matrix.preset }} -DBUILD_SHARED_LIBS=${{ matrix.cmake-build-shared }} -DCMAKE_BUILD_TYPE=${{ matrix.cmake-build-type }} -DGTest_ROOT:PATH="${HOME}/sysroot/lib/cmake/GTest" ..
cmake --build . --verbose
- name: Test patomic
continue-on-error: true
run: |
cd patomic/build
ctest --verbose .
- name: Prepare Test Results
run: |
mkdir upload
mkdir upload/qemu-linux-${{ matrix.compiler }}-${{ matrix.architecture }}
mkdir upload/qemu-linux-${{ matrix.compiler }}-${{ matrix.architecture }}/${{ matrix.build-shared }}
cp patomic/build/Testing/Temporary/* upload/qemu-linux-${{ matrix.compiler }}-${{ matrix.architecture }}/${{ matrix.build-shared }}
- name: Upload Test Results
uses: actions/upload-artifact@v3
with:
name: test-warning-qemu-results
path: upload/