devbuild #527
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: devbuild | |
on: | |
push: | |
pull_request: | |
schedule: | |
- cron: '34 17 * * *' | |
jobs: | |
standalone_buffer: | |
if: ${{ github.event_name != '' || (github.event_name == '' && github.repository_owner == 'solvcon') }} | |
name: standalone_buffer_${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
cmake_build_type: [Release] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v1 | |
with: | |
fetch-depth: 1 | |
- name: event name | |
run: | | |
echo "github.event_name: ${{ github.event_name }}" | |
- name: dependency by apt | |
run: | | |
sudo apt-get -qqy update | |
sudo apt-get -qy install \ | |
sudo curl git build-essential make cmake libc6-dev gcc g++ \ | |
python3 python3-dev python3-venv | |
- name: dependency by pip | |
run: | | |
sudo pip3 install setuptools | |
sudo pip3 install numpy pytest flake8 | |
- name: dependency by manual script | |
run: sudo ${GITHUB_WORKSPACE}/contrib/dependency/install.sh pybind11 | |
- name: show dependency | |
# Copy the commands from contrib/dependency/showdep.sh | |
run: | | |
echo "gcc path: $(which gcc)" | |
echo "gcc version: $(gcc --version)" | |
echo "cmake path: $(which cmake)" | |
echo "cmake version: $(cmake --version)" | |
echo "python3 path: $(which python3)" | |
echo "python3 version: $(python3 --version)" | |
echo "pip3 path: $(which pip3)" | |
python3 -c 'import numpy ; print("numpy.__version__:", numpy.__version__)' | |
echo "pytest path: $(which pytest)" | |
echo "pytest version: $(pytest --version)" | |
echo "clang-tidy path: $(which clang-tidy)" | |
echo "clang-tidy version: $(clang-tidy -version)" | |
echo "flake8 path: $(which flake8)" | |
echo "flake8 version: $(flake8 --version)" | |
- name: make standalone_buffer | |
run: | | |
make standalone_buffer_setup | |
make standalone_buffer | |
build_ubuntu: | |
if: ${{ github.event_name != '' || (github.event_name == '' && github.repository_owner == 'solvcon') }} | |
name: build_${{ matrix.os }}_${{ matrix.cmake_build_type }} | |
runs-on: ${{ matrix.os }} | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
QT_QPA_PLATFORM: offscreen | |
strategy: | |
matrix: | |
# ubuntu-20.04 does not have built-in qt6 | |
os: [ubuntu-22.04] | |
cmake_build_type: [Release] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v1 | |
with: | |
fetch-depth: 1 | |
- name: event name | |
run: | | |
echo "github.event_name: ${{ github.event_name }}" | |
- name: dependency by apt | |
run: | | |
sudo apt-get -qqy update | |
sudo apt-get -qy install \ | |
sudo curl git build-essential make cmake libc6-dev gcc g++ \ | |
python3 python3-dev python3-venv | |
# Install qt6 only with ubuntu-22.04 | |
# This page explains why we need libgl1-mesa-dev | |
# https://doc-snapshots.qt.io/qt6-dev/linux.html | |
# | |
# In short, OpenGL libraries and headers are required. Without | |
# installing this package, cmake won't find out the correct lib path. | |
if [ "${{ matrix.os }}" == "ubuntu-22.04" ] ; then \ | |
sudo apt-get -qy install \ | |
qt6-3d-dev xvfb \ | |
libgl1-mesa-dev | |
fi | |
- name: dependency by pip | |
run: | | |
sudo pip3 install setuptools | |
sudo pip3 install numpy pytest flake8 | |
sudo pip3 install pyside6==$(qmake6 -query QT_VERSION) | |
- name: dependency by manual script | |
run: sudo ${GITHUB_WORKSPACE}/contrib/dependency/install.sh pybind11 | |
- name: show dependency | |
# Copy the commands from contrib/dependency/showdep.sh | |
run: | | |
echo "gcc path: $(which gcc)" | |
echo "gcc version: $(gcc --version)" | |
echo "cmake path: $(which cmake)" | |
echo "cmake version: $(cmake --version)" | |
echo "python3 path: $(which python3)" | |
echo "python3 version: $(python3 --version)" | |
echo "pip3 path: $(which pip3)" | |
python3 -c 'import numpy ; print("numpy.__version__:", numpy.__version__)' | |
echo "pytest path: $(which pytest)" | |
echo "pytest version: $(pytest --version)" | |
echo "clang-tidy path: $(which clang-tidy)" | |
echo "clang-tidy version: $(clang-tidy -version)" | |
echo "flake8 path: $(which flake8)" | |
echo "flake8 version: $(flake8 --version)" | |
- name: make gtest BUILD_QT=OFF | |
run: | | |
make gtest \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=OFF | |
- name: make buildext BUILD_QT=OFF | |
run: | | |
rm -f build/*/Makefile | |
make cmake \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=OFF \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
make buildext VERBOSE=1 | |
- name: make pytest BUILD_QT=OFF | |
run: | | |
python3 -c "import modmesh; assert modmesh.HAS_VIEW == False" | |
make pytest VERBOSE=1 | |
- name: make buildext BUILD_QT=ON | |
run: | | |
rm -f build/*/Makefile | |
make cmake \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=ON \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
make buildext VERBOSE=1 | |
- name: make pytest BUILD_QT=ON | |
run: | | |
python3 -c "import modmesh; assert modmesh.HAS_VIEW == True" | |
make pytest VERBOSE=1 | |
- name: make viewer | |
run: | | |
rm -f build/*/Makefile | |
make viewer \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=ON \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
- name: make run_viewer_pytest | |
run: | | |
export LD_LIBRARY_PATH=$(python3 -c "import sys, os, shiboken6; sys.stdout.write(os.path.dirname(shiboken6.__file__))") | |
make run_viewer_pytest VERBOSE=0 | |
build_macos: | |
if: ${{ github.event_name != '' || (github.event_name == '' && github.repository_owner == 'solvcon') }} | |
name: build_${{ matrix.os }}_${{ matrix.cmake_build_type }} | |
runs-on: ${{ matrix.os }} | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
strategy: | |
matrix: | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md | |
os: [macos-12] | |
cmake_build_type: [Release] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v1 | |
with: | |
fetch-depth: 1 | |
- name: event name | |
run: | | |
echo "github.event_name: ${{ github.event_name }}" | |
- name: dependency by homebrew | |
run: | | |
# brew update # No update because it is slow | |
# Force using python 3.10 from homebrew | |
brew unlink python | |
brew link --force --overwrite [email protected] | |
brew install qt6 | |
- name: dependency by pip | |
run: | | |
echo "which python3: $(which python3)" | |
ls -al $(which python3) | |
python3 -m pip -v install --upgrade setuptools | |
python3 -m pip -v install --upgrade pip | |
python3 -m pip -v install --upgrade numpy pytest flake8 | |
python3 -m pip -v install --upgrade pyside6==$(qmake -query QT_VERSION) | |
- name: dependency by manual script | |
run: | | |
sudo ${GITHUB_WORKSPACE}/contrib/dependency/install.sh pybind11 | |
if [ "${{ matrix.os }}" == "macos-12" ] ; then \ | |
thirdparty/metal-cpp.sh ; \ | |
fi | |
- name: show dependency | |
# Copy the commands from contrib/dependency/showdep.sh | |
run: | | |
echo "gcc path: $(which gcc)" | |
echo "gcc version: $(gcc --version)" | |
echo "cmake path: $(which cmake)" | |
echo "cmake version: $(cmake --version)" | |
echo "python3 path: $(which python3)" | |
echo "python3 version: $(python3 --version)" | |
echo "pip3 path: $(which pip3)" | |
python3 -c 'import numpy ; print("numpy.__version__:", numpy.__version__)' | |
echo "pytest path: $(which pytest)" | |
echo "pytest version: $(pytest --version)" | |
echo "clang-tidy path: $(which clang-tidy)" | |
echo "clang-tidy version: $(clang-tidy -version)" | |
echo "flake8 path: $(which flake8)" | |
echo "flake8 version: $(flake8 --version)" | |
- name: make gtest BUILD_QT=OFF | |
run: | | |
make gtest \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=OFF | |
- name: make buildext BUILD_QT=OFF | |
run: | | |
rm -f build/*/Makefile | |
make cmake \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=OFF \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
make buildext VERBOSE=1 | |
- name: make pytest BUILD_QT=OFF | |
run: | | |
JOB_MAKE_ARGS="VERBOSE=1" | |
if [ "${{ matrix.os }}" == "macos-12" ] ; then \ | |
JOB_MAKE_ARGS="${JOB_MAKE_ARGS} BUILD_METAL=ON" ; \ | |
fi | |
make pytest ${JOB_MAKE_ARGS} | |
- name: make buildext BUILD_QT=ON | |
run: | | |
rm -f build/*/Makefile | |
make cmake \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=ON \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
make buildext VERBOSE=1 | |
- name: make pytest BUILD_QT=ON | |
run: | | |
# PySide6 installed by pip will bundle with a prebuilt Qt, | |
# this will cause duplicated symbol. | |
# Solve this issue by removed PySide6 prebuilt Qt library | |
rm -rf $(python3 -c "import sys, os, PySide6; sys.stdout.write(os.path.dirname(PySide6.__file__))")/Qt/lib/*.framework | |
JOB_MAKE_ARGS="VERBOSE=1" | |
if [ "${{ matrix.os }}" == "macos-12" ] ; then \ | |
JOB_MAKE_ARGS="${JOB_MAKE_ARGS} BUILD_METAL=ON" ; \ | |
fi | |
make pytest ${JOB_MAKE_ARGS} | |
- name: make viewer | |
run: | | |
rm -f build/*/Makefile | |
make viewer \ | |
VERBOSE=1 USE_CLANG_TIDY=OFF \ | |
BUILD_QT=ON \ | |
CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} \ | |
CMAKE_ARGS="-DPYTHON_EXECUTABLE=$(which python3)" | |
- name: make run_viewer_pytest | |
run: | | |
make run_viewer_pytest VERBOSE=1 | |
build_windows: | |
if: ${{ github.event_name != '' || (github.event_name == '' && github.repository_owner == 'solvcon') }} | |
name: build_${{ matrix.os }}_${{ matrix.cmake_build_type }} | |
runs-on: ${{ matrix.os }} | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
strategy: | |
matrix: | |
os: [windows-2022] | |
# Build Debug because there is not a job for windows in lint.yml (which uses the Debug build type) | |
cmake_build_type: [Release, Debug] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 1 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- name: event name | |
run: | | |
echo "github.event_name: ${{ github.event_name }}" | |
- name: install qt | |
uses: jurplel/install-qt-action@v3 | |
with: | |
aqtversion: '==2.1.*' | |
version: '6.3.1' | |
host: 'windows' | |
target: 'desktop' | |
arch: 'win64_msvc2019_64' | |
modules: 'qt3d' | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: dependency by pip | |
run: | | |
pip3 install -U numpy pytest flake8 pybind11 pyside6==$(qmake -query QT_VERSION) | |
# Add PySide6 and Shiboken6 path into system path, that allow exe file can find | |
# dll during runtime | |
# If user needs to modified system path in github actions container | |
# user should use GITHUB_PATH | |
# ref: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#adding-a-system-path | |
# But the way of update GITHUB_PATH in github action document does not work, there is a other way to update it. | |
# ref: https://stackoverflow.com/questions/60169752/how-to-update-the-path-in-a-github-action-workflow-file-for-a-windows-latest-hos | |
$pyside6_path = $(python3 -c "import sys, os, PySide6; sys.stdout.write(os.path.dirname(PySide6.__file__))") | |
$shiboken6_path = $(python3 -c "import sys, os, shiboken6; sys.stdout.write(os.path.dirname(shiboken6.__file__))") | |
echo "$pyside6_path;$shiboken6_path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
- name: show dependency | |
run: | | |
Get-Command cl | |
Get-Command cmake | |
Get-Command python3 | |
Get-Command pip3 | |
python3 -c "import numpy ; print('numpy.__version__:', numpy.__version__)" | |
python3 -c "import pybind11 ; print('pybind11.__version__:', pybind11.__version__)" | |
pybind11-config --cmakedir | |
Get-Command pytest | |
Get-Command clang-tidy | |
Get-Command flake8 | |
- name: cmake ALL_BUILD | |
run: | | |
cmake ` | |
-DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} ` | |
-Dpybind11_DIR="$(pybind11-config --cmakedir)" ` | |
-S${{ github.workspace }} ` | |
-B${{ github.workspace }}/build | |
cmake --build ${{ github.workspace }}/build ` | |
--config ${{ matrix.cmake_build_type }} ` | |
--target ALL_BUILD | |
- name: cmake run_gtest | |
run: | | |
cmake --build ${{ github.workspace }}/build ` | |
--config ${{ matrix.cmake_build_type }} ` | |
--target run_gtest | |
- name: cmake run_viewer_pytest | |
run: | | |
cmake --build ${{ github.workspace }}/build ` | |
--config ${{ matrix.cmake_build_type }} ` | |
--target run_viewer_pytest |