GHDL plugin support (#496) #2273
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: | |
jobs: | |
linux-gcc: | |
name: ${{ matrix.mode }} | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: | |
- test | |
- regression | |
- coverage | |
- install | |
- valgrind | |
- production | |
env: | |
MODE: ${{ matrix.mode }} | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- uses: actions/[email protected] | |
with: | |
python-version: 3.8 | |
- name: ssh-agent | |
if: matrix.mode == 'production' | |
uses: webfactory/[email protected] | |
with: | |
ssh-private-key: | | |
${{ secrets.SSH_PRIVATE_KEY_RAPTOR_TOOLS }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies | |
run: | | |
bash .github/workflows/install_ubuntu_dependencies_build.sh | |
- name: Use ccache | |
uses: hendrikmuhs/[email protected] | |
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/[email protected] | |
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: ${{ matrix.mode }} | |
runs-on: ubuntu-20.04 | |
container: | |
image: centos:7 | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
mode: | |
- test | |
env: | |
MODE: ${{ matrix.mode }} | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Install ssh-agent | |
run: | | |
yum install -y openssh-server openssh-clients | |
yum-config-manager --enable rhel-server-rhscl-7-rpms | |
yum install -y https://repo.ius.io/ius-release-el7.rpm | |
yum install -y centos-release-scl | |
yum install -y devtoolset-11 | |
yum install -y devtoolset-11-toolchain | |
yum remove -y git* | |
yum install -y https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm | |
yum install -y git | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install dependencies and build QT | |
run: | | |
bash .github/workflows/install_centos_dependencies_build.sh | |
- name: Show space. | |
run: | | |
du -sch * && df -h | |
- name: Show shell configuration | |
run: | | |
env | |
source /opt/rh/devtoolset-11/enable | |
which gcc | |
which g++ | |
- name: Configure shell | |
run: | | |
source /opt/rh/devtoolset-11/enable | |
echo 'CC=/opt/rh/devtoolset-11/root/usr/bin/gcc' >> $GITHUB_ENV | |
echo 'CXX=/opt/rh/devtoolset-11/root/usr/bin/g++' >> $GITHUB_ENV | |
echo 'PATH=/usr/local/Qt-5.15.4/bin:/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: Test | |
if: matrix.mode == 'test' | |
run: | | |
git config --global --add safe.directory '*' | |
# make debug test/unittest-d | |
make release test/batch | |
# make test/gui | |
- name: Regression | |
id: reg_ok | |
if: matrix.mode == 'regression' | |
run: | | |
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: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
# Fix Cmake version, 3.21.4 has a bug that prevents Tcl to build | |
- name: Setup cmake | |
uses: jwlawson/[email protected] | |
with: | |
cmake-version: '3.21.3' | |
- name: Configure Git | |
run: git config --global core.autocrlf input | |
shell: bash | |
- name: Git pull | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Msys2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MSYS | |
update: true | |
install: gcc make cmake ninja python python-devel git diffutils autoconf mingw-w64-x86_64-libusb | |
release: false | |
env: | |
MSYS2_PATH_TYPE: inherit | |
# Install Qt | |
- shell: msys2 {0} | |
run: | | |
pacman --noconfirm -S zlib | |
pacman --noconfirm -S zlib-devel | |
pacman --noconfirm -S mingw-w64-x86_64-qt5 | |
# Static version pacman --noconfirm -Syu mingw-w64-x86_64-qt5-static | |
find . -name qt5-config.cmake | |
find . -name Qt5Config.cmake | |
find /mingw64 -name qt5-config.cmake | |
find /mingw64 -name Qt5Config.cmake | |
find C:/msys64/ -name qt5-config.cmake | |
find C:/msys64/ -name Qt5Config.cmake | |
- name: Configure shell environment variables | |
run: | | |
export Qt5_Dir=/mingw64/lib/cmake/Qt5/ | |
# Static version: export Qt5_Dir=/mingw64/qt5-static/lib/cmake/Qt5/ | |
export Qt5_DIR=$Qt5_Dir | |
export CWD=`pwd` | |
echo "Qt5_DIR=$Qt5_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 "$Qt5_DIR" >> $GITHUB_PATH | |
- name: Show shell configuration | |
run: | | |
env | |
where git && git --version | |
where cmake && cmake --version | |
where make && make --version | |
where python && python --version | |
where ninja && ninja --version | |
where tclsh && echo 'puts [info patchlevel];exit 0' | tclsh | |
where $CC && $CC --version | |
where $CXX && $CXX --version | |
- name: Build | |
run: | | |
export Qt5_Dir=/mingw64/lib/cmake/Qt5/ | |
# export Qt5_Dir=/mingw64/qt5-static/lib/cmake/Qt5/ | |
export Qt5_DIR=$Qt5_Dir | |
export PATH=$Qt5_DIR:$PATH | |
make 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 Qt5_Dir=/mingw64/lib/cmake/Qt5/ | |
# export Qt5_Dir=/mingw64/qt5-static/lib/cmake/Qt5/ | |
export Qt5_DIR=$Qt5_Dir | |
export PATH=$Qt5_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: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
# Fix Cmake version, 3.21.4 has a bug that prevents Tcl to build | |
- name: Setup cmake | |
uses: jwlawson/[email protected] | |
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/[email protected] | |
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 Qt | |
uses: jurplel/[email protected] | |
- run: git config --global core.autocrlf input | |
shell: bash | |
- uses: actions/checkout@v3 | |
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%;%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/[email protected] | |
with: | |
name: raptor_gui-windows-msvc | |
path: ${{ github.workspace }}/install | |
- name: Archive regression artifacts | |
if: always() | |
uses: actions/[email protected] | |
with: | |
name: raptor_gui-windows-msvc-regression | |
path: | | |
${{ github.workspace }}/build/test/ | |
${{ github.workspace }}/build/tests/ | |
macos-gcc: | |
runs-on: macos-latest | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- uses: actions/[email protected] | |
with: | |
python-version: 3.8 | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install dependencies | |
uses: jurplel/[email protected] | |
with: | |
setup-python: false | |
- name: Use ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: macos-gcc | |
- name: Configure shell | |
run: | | |
echo 'CC=gcc-11' >> $GITHUB_ENV | |
echo 'CXX=g++-11' >> $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-latest | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- uses: actions/[email protected] | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
uses: jurplel/[email protected] | |
with: | |
setup-python: false | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Use ccache | |
uses: hendrikmuhs/[email protected] | |
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@v3 | |
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-20.04 | |
if: ${{github.event_name == 'pull_request'}} | |
steps: | |
- name: Cancel previous | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
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 \ | |
qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtdeclarative5-dev xvfb \ | |
libusb-1.0-0-dev pkg-config | |
- name: Use ccache | |
uses: hendrikmuhs/[email protected] | |
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 |