Testing - Fix master validation workflow (#611)

- Wrap deprecated FFmpeg calls in MSVC warning push/pop pragmas in two source files  
- Introduce `.github/workflows/master-validation.yml` and remove several old workflows  
- Broadened `if` conditions in `daily-ir-vcpkg-configure.yml` and updated macOS brew deps
This commit is contained in:
Pasukhin Dmitry
2025-07-13 19:28:32 +01:00
committed by GitHub
parent 0947067ed5
commit 06f6a5afec
16 changed files with 645 additions and 985 deletions

View File

@@ -0,0 +1,83 @@
name: 'CMake Basic Build'
description: 'Configure and build OCCT with basic configuration'
inputs:
generator:
description: 'CMake generator'
required: true
default: 'Ninja'
cc:
description: 'C compiler'
required: true
cxx:
description: 'C++ compiler'
required: true
build-type:
description: 'Build type (Debug, Release)'
required: false
default: 'Release'
compiler-flags:
description: 'Additional compiler flags'
required: false
default: ''
thirdparty-dir:
description: '3rd party directory'
required: false
default: ''
shell-type:
description: 'Shell type to use (powershell, msys2, bash)'
required: false
default: 'auto'
runs:
using: "composite"
steps:
- name: Configure basic build (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: |
mkdir -p build
cd build
cmake -G "${{ inputs.generator }}" \
-D CMAKE_C_COMPILER=${{ inputs.cc }} \
-D CMAKE_CXX_COMPILER=${{ inputs.cxx }} \
${{ inputs.thirdparty-dir != '' && format('-D 3RDPARTY_DIR={0}', inputs.thirdparty-dir) || '' }} \
-D CMAKE_BUILD_TYPE=${{ inputs.build-type }} \
${{ inputs.compiler-flags }} ..
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Configure basic build (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: |
mkdir build
cd build
cmake -G "${{ inputs.generator }}" `
-D CMAKE_C_COMPILER=${{ inputs.cc }} `
-D CMAKE_CXX_COMPILER=${{ inputs.cxx }} `
${{ inputs.thirdparty-dir != '' && format('-D 3RDPARTY_DIR={0}', inputs.thirdparty-dir) || '' }} `
-D CMAKE_BUILD_TYPE=${{ inputs.build-type }} `
${{ inputs.compiler-flags }} ..
shell: pwsh
- name: Build basic (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: |
cd build
cmake --build . --config ${{ inputs.build-type }} -- -j 4
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Build basic (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: |
cd build
cmake --build . --config ${{ inputs.build-type }}
shell: pwsh
- name: Clean up build (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: rm -rf build
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Clean up build (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: Remove-Item -Recurse -Force build
shell: pwsh

View File

@@ -0,0 +1,149 @@
name: 'CMake Full Build'
description: 'Configure and build OCCT with full configuration (shared/static)'
inputs:
generator:
description: 'CMake generator'
required: true
default: 'Ninja'
cc:
description: 'C compiler'
required: true
cxx:
description: 'C++ compiler'
required: true
build-type:
description: 'Build type (Debug, Release)'
required: false
default: 'Release'
library-type:
description: 'Library type (Shared, Static)'
required: false
default: 'Shared'
opt-profile:
description: 'Optimization profile (Production, Default)'
required: false
default: 'Production'
compiler-flags:
description: 'Additional compiler flags'
required: false
default: ''
thirdparty-dir:
description: '3rd party directory'
required: false
default: ''
rapidjson-dir:
description: 'RapidJSON directory'
required: false
default: ''
use-vtk:
description: 'Enable VTK'
required: false
default: 'ON'
use-tbb:
description: 'Enable TBB'
required: false
default: 'ON'
with-debug:
description: 'Enable BUILD_WITH_DEBUG'
required: false
default: 'OFF'
shell-type:
description: 'Shell type to use (powershell, msys2, bash)'
required: false
default: 'auto'
runs:
using: "composite"
steps:
- name: Configure full build (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: |
mkdir -p build
cd build
cmake -G "${{ inputs.generator }}" \
-D CMAKE_C_COMPILER=${{ inputs.cc }} \
-D CMAKE_CXX_COMPILER=${{ inputs.cxx }} \
${{ inputs.thirdparty-dir != '' && format('-D 3RDPARTY_DIR={0}', inputs.thirdparty-dir) || '' }} \
${{ inputs.rapidjson-dir != '' && format('-D 3RDPARTY_RAPIDJSON_DIR={0}', inputs.rapidjson-dir) || '' }} \
-D BUILD_USE_PCH=OFF \
-D BUILD_INCLUDE_SYMLINK=ON \
-D BUILD_OPT_PROFILE=${{ inputs.opt-profile }} \
-D BUILD_LIBRARY_TYPE=${{ inputs.library-type }} \
${{ inputs.with-debug == 'ON' && '-D BUILD_WITH_DEBUG=ON' || '' }} \
-D USE_TK=ON \
-D CMAKE_BUILD_TYPE=${{ inputs.build-type }} \
-D USE_MMGR_TYPE=JEMALLOC \
-D INSTALL_DIR=${{ github.workspace }}/install-${{ inputs.build-type }} \
-D USE_FREETYPE=ON \
-D USE_DRACO=ON \
-D USE_FFMPEG=OFF \
-D USE_FREEIMAGE=ON \
-D USE_GLES2=ON \
-D USE_OPENVR=ON \
-D USE_VTK=${{ inputs.use-vtk }} \
-D USE_TBB=${{ inputs.use-tbb }} \
-D USE_RAPIDJSON=ON \
-D USE_OPENGL=ON \
${{ inputs.compiler-flags }} ..
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Configure full build (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: |
mkdir build
cd build
cmake -G "${{ inputs.generator }}" `
-D CMAKE_C_COMPILER=${{ inputs.cc }} `
-D CMAKE_CXX_COMPILER=${{ inputs.cxx }} `
${{ inputs.thirdparty-dir != '' && format('-D 3RDPARTY_DIR={0}', inputs.thirdparty-dir) || '' }} `
${{ inputs.rapidjson-dir != '' && format('-D 3RDPARTY_RAPIDJSON_DIR={0}', inputs.rapidjson-dir) || '' }} `
-D BUILD_USE_PCH=OFF `
-D BUILD_INCLUDE_SYMLINK=ON `
-D BUILD_OPT_PROFILE=${{ inputs.opt-profile }} `
-D BUILD_LIBRARY_TYPE=${{ inputs.library-type }} `
${{ inputs.with-debug == 'ON' && '-D BUILD_WITH_DEBUG=ON' || '' }} `
-D USE_TK=ON `
-D CMAKE_BUILD_TYPE=${{ inputs.build-type }} `
-D USE_MMGR_TYPE=JEMALLOC `
-D INSTALL_DIR=${{ github.workspace }}/install-${{ inputs.build-type }} `
-D USE_FREETYPE=ON `
-D USE_DRACO=ON `
-D USE_FFMPEG=OFF `
-D USE_FREEIMAGE=ON `
-D USE_GLES2=ON `
-D USE_OPENVR=ON `
-D USE_VTK=${{ inputs.use-vtk }} `
-D USE_TBB=${{ inputs.use-tbb }} `
-D USE_RAPIDJSON=ON `
-D USE_OPENGL=ON `
${{ inputs.compiler-flags }} ..
shell: pwsh
- name: Build full (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: |
cd build
cmake --build . --target install --config ${{ inputs.build-type }} -- -j 4
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Build full (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: |
cd build
cmake --build . --target install --config ${{ inputs.build-type }}
shell: pwsh
- name: Clean up build (Unix/MSYS2)
if: runner.os != 'Windows' || inputs.shell-type == 'msys2'
run: |
rm -rf build
rm -rf ${{ github.workspace }}/install-${{ inputs.build-type }}
shell: ${{ inputs.shell-type == 'msys2' && 'msys2 {0}' || 'bash' }}
- name: Clean up build (Windows PowerShell)
if: runner.os == 'Windows' && inputs.shell-type != 'msys2'
run: |
Remove-Item -Recurse -Force build
Remove-Item -Recurse -Force ${{ github.workspace }}/install-${{ inputs.build-type }}
shell: pwsh

30
.github/actions/setup-msys2/action.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: 'Setup MSYS2'
description: 'Setup MSYS2 environment for MinGW builds'
inputs:
msystem:
description: 'MSYS2 subsystem (MINGW64, CLANG64, UCRT64)'
required: true
packages:
description: 'Packages to install'
required: true
dependencies:
description: 'Additional dependencies to install'
required: true
runs:
using: "composite"
steps:
- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: ${{ inputs.msystem }}
update: true
install: ${{ inputs.packages }} ${{ inputs.dependencies }}
- name: Setup environment
shell: msys2 {0}
run: |
echo "Setting up environment variables..."
echo "$MSYSTEM_PREFIX/bin" >> $GITHUB_PATH
echo "CMAKE_PREFIX_PATH=$MSYSTEM_PREFIX" >> $GITHUB_ENV

View File

@@ -0,0 +1,15 @@
name: 'Setup Ubuntu Dependencies'
description: 'Install Ubuntu dependencies and rapidjson for OCCT builds'
runs:
using: "composite"
steps:
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y ninja-build tcl-dev tk-dev cmake clang gcc g++ make libbtbb-dev libx11-dev libglu1-mesa-dev tcllib tcl-thread tcl libvtk9-dev libopenvr-dev libdraco-dev libfreeimage-dev libegl1-mesa-dev libgles2-mesa-dev libfreetype-dev libjemalloc-dev
shell: bash
- name: Install rapidjson
run: |
wget https://github.com/Tencent/rapidjson/archive/858451e5b7d1c56cf8f6d58f88cf958351837e53.zip -O rapidjson.zip
unzip rapidjson.zip
shell: bash

View File

@@ -0,0 +1,30 @@
name: 'Setup Windows MSVC Dependencies'
description: 'Download and setup 3rdparty dependencies and Mesa3D for Windows MSVC builds'
runs:
using: "composite"
steps:
- name: Set up MSVC
uses: ilammy/msvc-dev-cmd@v1.13.0
with:
arch: x64
- name: Download and extract 3rdparty dependencies
run: |
Invoke-WebRequest -Uri https://github.com/Open-Cascade-SAS/OCCT/releases/download/V7_9_0_beta1/3rdparty-vc14-64.zip -OutFile 3rdparty-vc14-64.zip
Expand-Archive -Path 3rdparty-vc14-64.zip -DestinationPath .
Remove-Item 3rdparty-vc14-64.zip
shell: pwsh
- name: Download and extract Mesa3D
run: |
curl -L -o mesa3d.7z https://github.com/pal1000/mesa-dist-win/releases/download/24.3.2/mesa3d-24.3.2-release-mingw.7z
7z x mesa3d.7z -omesa3d
shell: pwsh
- name: Run system-wide deployment
run: |
cd mesa3d
.\systemwidedeploy.cmd 1
.\systemwidedeploy.cmd 5
shell: cmd

View File

@@ -51,14 +51,16 @@ runs:
libgles2-mesa-dev
shell: bash
- name: Install required packages (macOS)
if: runner.os == 'macOS'
run: |
brew update || true
brew install cmake ninja nasm autoconf automake mono || true
brew install cmake ninja nasm autoconf automake mono openexr || true
brew install --cask xquartz || true
shell: bash
- name: Set up vcpkg (Unix)
if: runner.os != 'Windows'
run: |