Skip to content

devbuild

devbuild #652

Workflow file for this run

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