Port latest FOEDAG (#822) #3874
This file contains 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: 'main' | |
on: | |
push: | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
linux-gcc: | |
name: ubuntu-${{ matrix.mode }} | |
runs-on: ubuntu-22.04 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: | |
- test | |
- regression | |
- coverage | |
- install | |
- valgrind | |
- production | |
env: | |
MODE: ${{ matrix.mode }} | |
steps: | |
- uses: actions/setup-python@v5.0.0 | |
with: | |
python-version: 3.8 | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies | |
run: | | |
bash .github/workflows/install_ubuntu_dependencies_build.sh | |
- name: Use ccache | |
uses: hendrikmuhs/ccache-action@v1.2.12 | |
with: | |
key: linux-${{ matrix.mode }} | |
- name: Configure shell | |
run: | | |
echo 'CC=gcc-11' >> $GITHUB_ENV | |
echo 'CXX=g++-11' >> $GITHUB_ENV | |
echo 'PATH=/usr/lib/ccache:'"$PATH" >> $GITHUB_ENV | |
echo 'PREFIX=/tmp/raptor_gui-install' >> $GITHUB_ENV | |
echo "$PREFIX" >> $GITHUB_PATH | |
echo "ADDITIONAL_CMAKE_OPTIONS='-DMY_CXX_WARNING_FLAGS="-W -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable -Werror -UNDEBUG"'" >> $GITHUB_ENV | |
echo 'RULE_MESSAGES=off' >> $GITHUB_ENV | |
- name: Show shell configuration | |
run: | | |
env | |
which cmake && cmake --version | |
which make && make --version | |
which python && python --version | |
which ninja && ninja --version | |
which tclsh && echo 'puts [info patchlevel];exit 0' | tclsh | |
which $CC && $CC --version | |
which $CXX && $CXX --version | |
- name: Test | |
if: matrix.mode == 'test' | |
run: | | |
make debug VERBOSE=1 | |
# make test/unittest-d | |
# make release test/batch | |
# make test/gui | |
- name: Regression | |
if: matrix.mode == 'regression' | |
run: | | |
make regression | |
- name: Coverage | |
if: matrix.mode == 'coverage' | |
run: | | |
make debug coverage-build/raptor_gui.coverage | |
- name: Valgrind | |
if: matrix.mode == 'valgrind' | |
run: | | |
make debug | |
make test/valgrind | |
- name: Install Test | |
if: matrix.mode == 'install' | |
run: | | |
make release | |
make install | |
make clean # make sure we only see installation artifacts | |
make test_install | |
- name: Production | |
if: matrix.mode == 'production' | |
run: | | |
make release PRODUCTION_BUILD=ON | |
./build/bin/raptor --version | |
- name: Archive regression artifacts | |
if: matrix.mode == 'regression' && always() | |
uses: actions/upload-artifact@v4.4.3 | |
with: | |
name: raptor_gui-linux-gcc-regression | |
path: | | |
${{ github.workspace }}/build/test/ | |
${{ github.workspace }}/build/tests/ | |
# Reference: https://github.com/OPM/ResInsight/blob/dev/.github/workflows/centos7.yml | |
centos7-gcc: | |
name: centos7-${{ matrix.mode }} | |
runs-on: ubuntu-22.04 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: | |
- test | |
env: | |
MODE: ${{ matrix.mode }} | |
steps: | |
- name: Log in to the Container registry | |
uses: docker/login-action@v3.0.0 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Pull the CentOS image | |
run: docker pull ghcr.io/os-fpga/foedag:centos7latest | |
- name: Install minimum dependencies | |
run: | | |
sudo apt update && sudo apt upgrade -y | |
sudo apt install -y qt6-base-dev qt6-webengine-dev qt6-webengine* libqt6webenginecore6* && sudo apt clean all | |
sudo apt install -y libegl1-mesa-dev libx11-xcb-dev libxkbcommon-dev libhwloc-dev libusb-1.0-0-dev && sudo apt clean all | |
wget -qO- https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo tee /etc/apt/trusted.gpg.d/lunarg.asc | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list http://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list | |
sudo apt update | |
sudo apt install -y vulkan-sdk | |
sudo apt-get autoremove -y >/dev/null 2>&1 | |
sudo apt-get autoclean -y >/dev/null 2>&1 | |
df -h | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Checkout submodules | |
uses: addnab/docker-run-action@v3 | |
with: | |
shell: bash | |
image: ghcr.io/os-fpga/foedag:centos7latest | |
options: -v ${{ github.workspace }}:/home/runner | |
run: | | |
cd $HOME | |
make run-cmake-release | |
- name: Show shell configuration | |
uses: addnab/docker-run-action@v3 | |
with: | |
shell: bash | |
image: ghcr.io/os-fpga/foedag:centos7latest | |
run: | | |
env | |
source /opt/rh/devtoolset-11/enable | |
which gcc | |
which g++ | |
python3 -V | |
- name: Test | |
if: matrix.mode == 'test' | |
uses: addnab/docker-run-action@v3 | |
with: | |
shell: bash | |
image: ghcr.io/os-fpga/foedag:centos7latest | |
options: -v ${{ github.workspace }}:/home/runner | |
run: | | |
cd $HOME | |
# make debug test/unittest-d | |
make clean && make release test/batch | |
# make test/gui | |
- name: Regression | |
id: reg_ok | |
if: matrix.mode == 'regression' | |
uses: addnab/docker-run-action@v3 | |
with: | |
shell: bash | |
image: ghcr.io/os-fpga/foedag:centos7latest | |
options: -v ${{ github.workspace }}:/home/runner | |
run: | | |
cd $HOME | |
make regression | |
# Reference: https://github.com/eyllanesc/69108420/blob/main/.github/workflows/test.yml | |
msys2-gcc: | |
runs-on: windows-2022 | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
# Fix Cmake version, 3.21.4 has a bug that prevents Tcl to build | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2.0.1 | |
with: | |
cmake-version: '3.21.3' | |
- name: Configure Git | |
run: git config --global core.autocrlf input | |
shell: bash | |
- name: Git pull | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Msys2 | |
uses: msys2/setup-msys2@v2.22.0 | |
with: | |
msystem: MINGW64 | |
path-type: minimal | |
update: true | |
install: >- | |
base-devel | |
git | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-cmake | |
mingw-w64-x86_64-qt6-base-debug | |
mingw-w64-x86_64-qt6 | |
mingw-w64-x86_64-qt6-declarative-debug | |
mingw-w64-x86_64-tcl | |
mingw-w64-x86_64-zlib | |
mingw-w64-x86_64-libusb | |
python-devel | |
release: false | |
env: | |
MSYS2_PATH_TYPE: inherit | |
- shell: msys2 {0} | |
run: | | |
pacman --noconfirm -S zlib | |
pacman --noconfirm -S zlib-devel | |
pacman --noconfirm -S mingw-w64-x86_64-qt6 | |
# Static version pacman --noconfirm -Syu mingw-w64-x86_64-qt6-static | |
find . -name qt6-config.cmake | |
find . -name Qt6Config.cmake | |
find /mingw64 -name qt6-config.cmake | |
find /mingw64 -name Qt6Config.cmake | |
find C:/msys64/ -name qt6-config.cmake | |
find C:/msys64/ -name Qt6Config.cmake | |
- name: Configure shell environment variables | |
run: | | |
export Qt6_Dir=/mingw64/lib/cmake/Qt6/ | |
# Static version: export Qt6_Dir=/mingw64/qt6-static/lib/cmake/Qt6/ | |
export Qt6_DIR=$Qt6_Dir | |
export CWD=`pwd` | |
echo "Qt6_DIR=$Qt6_DIR" >> $GITHUB_ENV | |
echo 'CMAKE_GENERATOR=Ninja' >> $GITHUB_ENV | |
echo 'CC=gcc' >> $GITHUB_ENV | |
echo 'CXX=g++' >> $GITHUB_ENV | |
echo 'NO_TCMALLOC=On' >> $GITHUB_ENV | |
echo "PREFIX=$CWD/install" >> $GITHUB_ENV | |
echo "$Qt6_DIR" >> $GITHUB_PATH | |
- name: Show shell configuration | |
run: | | |
which git && git --version || true | |
which cmake && cmake --version || true | |
which make && make --version || true | |
which python && python --version || true | |
which ninja && ninja --version || true | |
which tclsh && echo 'puts [info patchlevel];exit 0' | tclsh || true | |
- name: Build | |
run: | | |
export Qt6_Dir=/mingw64/lib/cmake/Qt6/ | |
# export Qt6_Dir=/mingw64/qt6-static/lib/cmake/Qt6/ | |
export Qt6_DIR=$Qt6_Dir | |
export PATH=$Qt6_DIR:$PATH | |
make MONACO_EDITOR=0 lib-only | |
# There are Qt linkage issues, so build only the libs for now | |
# make VERBOSE=1 release | |
# make debug | |
# make install | |
- name: Test | |
run: | | |
export Qt6_Dir=/mingw64/lib/cmake/Qt6/ | |
# export Qt6_Dir=/mingw64/qt5-static/lib/cmake/Qt6/ | |
export Qt6_DIR=$Qt6_Dir | |
export PATH=$Qt6_DIR:$PATH | |
# There Qt are linkage issues, so build only the libs for now | |
# make test_install | |
# make test/unittest | |
# make regression | |
windows-msvc: | |
runs-on: windows-2022 | |
defaults: | |
run: | |
shell: cmd | |
steps: | |
# Fix Cmake version, 3.21.4 has a bug that prevents Tcl to build | |
- name: Setup cmake | |
uses: jwlawson/actions-setup-cmake@v2.0.1 | |
with: | |
cmake-version: '3.21.3' | |
- name: Use cmake | |
run: cmake --version | |
- name: Install Core Dependencies | |
run: | | |
choco install -y make | |
- name: Setup Python | |
uses: actions/setup-python@v5.0.0 | |
with: | |
python-version: 3.8 | |
architecture: x64 | |
- name: Install libusb with vcpkg | |
run: | | |
C:\vcpkg\vcpkg.exe install libusb:x64-windows | |
C:\vcpkg\vcpkg.exe integrate install | |
- name: Install nasm with choco | |
run: | | |
choco install -y nasm | |
ls "C:\Program Files\NASM" | |
- name: Install Qt | |
uses: jurplel/install-qt-action@v3.0.0 | |
with: | |
version: '6.2.4' | |
modules: 'qtwebengine qtwebchannel qtpositioning' | |
- run: git config --global core.autocrlf input | |
shell: bash | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Build & Test | |
run: | | |
call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" | |
set CMAKE_GENERATOR=Ninja | |
set CC=cl | |
set CXX=cl | |
set NO_TCMALLOC=On | |
set PREFIX=%GITHUB_WORKSPACE%\install | |
set CPU_CORES=%NUMBER_OF_PROCESSORS% | |
set MAKE_DIR=C:\make\bin | |
#set TCL_DIR=%PROGRAMFILES%\Git\mingw64\bin | |
set PATH=%pythonLocation%;%MAKE_DIR%;C:\Program Files\NASM;%PATH% | |
#set PATH=%pythonLocation%;%MAKE_DIR%;%TCL_DIR%;%PATH% | |
set | |
where cmake && cmake --version | |
where make && make --version | |
where python && python --version | |
where ninja && ninja --version | |
make release | |
if %errorlevel% neq 0 exit /b %errorlevel% | |
make install | |
if %errorlevel% neq 0 exit /b %errorlevel% | |
make test/unittest | |
if %errorlevel% neq 0 exit /b %errorlevel% | |
make test_install | |
if %errorlevel% neq 0 exit /b %errorlevel% | |
make regression | |
if %errorlevel% neq 0 exit /b %errorlevel% | |
make test/batch | |
- name: Archive build artifacts | |
uses: actions/upload-artifact@v4.4.3 | |
with: | |
name: raptor_gui-windows-msvc | |
path: ${{ github.workspace }}/install | |
- name: Archive regression artifacts | |
if: always() | |
uses: actions/upload-artifact@v4.4.3 | |
with: | |
name: raptor_gui-windows-msvc-regression | |
path: | | |
${{ github.workspace }}/build/test/ | |
${{ github.workspace }}/build/tests/ | |
macos-gcc: | |
runs-on: macos-12 | |
steps: | |
- uses: actions/setup-python@v5.0.0 | |
with: | |
python-version: 3.8 | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies | |
uses: jurplel/install-qt-action@v3.0.0 | |
with: | |
version: '6.2.4' | |
setup-python: false | |
modules: 'qtwebengine qtwebchannel qtpositioning' | |
- name: Use ccache | |
uses: hendrikmuhs/ccache-action@v1.2.12 | |
with: | |
key: macos-gcc | |
- name: Configure shell | |
run: | | |
echo 'CC=gcc-12' >> $GITHUB_ENV | |
echo 'CXX=g++-12' >> $GITHUB_ENV | |
echo "PATH=$(brew --prefix)/opt/ccache/libexec:$PATH" >> $GITHUB_ENV | |
echo 'PREFIX=${GITHUB_WORKSPACE}/install' >> $GITHUB_ENV | |
echo "$PREFIX" >> $GITHUB_PATH | |
- name: Show shell configuration | |
run: | | |
env | |
which cmake && cmake --version | |
which make && make --version | |
which python && python --version | |
which tclsh && echo 'puts [info patchlevel];exit 0' | tclsh | |
which $CC && $CC --version | |
which $CXX && $CXX --version | |
- name: Build | |
run: | | |
make release | |
make install | |
#- name: Unit tests | |
# run: | | |
# make test_install_mac | |
# make test_install | |
- name: Regression tests | |
run: | | |
make regression | |
macos-clang: | |
runs-on: macos-12 | |
steps: | |
- uses: actions/setup-python@v5.0.0 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
uses: jurplel/install-qt-action@v3.0.0 | |
with: | |
version: '6.2.4' | |
setup-python: false | |
modules: 'qtwebengine qtwebchannel qtpositioning' | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Use ccache | |
uses: hendrikmuhs/ccache-action@v1.2.12 | |
with: | |
key: macos-clang | |
- name: Configure shell | |
run: | | |
echo 'PREFIX=${GITHUB_WORKSPACE}/install' >> $GITHUB_ENV | |
echo "PATH=$(brew --prefix)/opt/ccache/libexec:$PATH" >> $GITHUB_ENV | |
echo "$PREFIX" >> $GITHUB_PATH | |
- name: Install XQuartz on macOS | |
run: brew install xquartz --cask | |
- name: Show shell configuration | |
run: | | |
env | |
which cmake && cmake --version | |
which make && make --version | |
which python && python --version | |
which tclsh && echo 'puts [info patchlevel];exit 0' | tclsh | |
- name: Build | |
run: | | |
make release | |
make install | |
- name: Unit tests | |
run: | | |
#make test_install_mac | |
#make test_install | |
make test/unittest | |
make XVFB="" debug test/gui_mac | |
- name: Regression tests | |
run: | | |
make regression | |
CodeFormatting: | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
sudo apt-get install clang-format | |
clang-format --version | |
- name: Run formatting style check | |
run: ./.github/bin/run-clang-format.sh | |
ClangTidy: | |
runs-on: ubuntu-22.04 | |
if: ${{github.event_name == 'pull_request'}} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Dependencies | |
run: | | |
sudo apt-get update -qq && sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo apt -qq -y install clang-tidy-12 \ | |
g++-11 tclsh default-jre cmake \ | |
uuid-dev build-essential xorg \ | |
qt6-base-dev qt6-webengine-dev qt6-webengine* libegl1-mesa-dev libx11-xcb-dev libxkbcommon-dev \ | |
libusb-1.0-0-dev pkg-config | |
- name: Use ccache | |
uses: hendrikmuhs/ccache-action@v1.2.12 | |
with: | |
key: clang-tidy-codegen | |
- name: Configure shell | |
run: | | |
echo 'PATH=/usr/lib/ccache:'"$PATH" >> $GITHUB_ENV | |
echo 'RULE_MESSAGES=off' >> $GITHUB_ENV | |
- name: Prepare source | |
run: | | |
make run-cmake-release | |
ln -s build/compile_commands.json . | |
- name: Run clang tidy | |
run: | | |
./.github/bin/run-clang-tidy.sh |