]> OCCT Git - occt.git/commitdiff
Testing - Daily vcpkg package validation (#605)
authorPasukhin Dmitry <dpasukhi@opencascade.com>
Sat, 12 Jul 2025 14:38:39 +0000 (15:38 +0100)
committerGitHub <noreply@github.com>
Sat, 12 Jul 2025 14:38:39 +0000 (15:38 +0100)
- Introduce `.github/workflows/daily-ir-vcpkg-configure.yml` to run OCCT configuration daily on the IR branch for Windows, macOS, and Ubuntu.
- Create a `configure-occt` composite action to encapsulate vcpkg setup and CMake configuration per platform.
- Update the `build-occt` action to reuse the new `configure-occt` step instead of duplicating configuration logic.

.github/actions/build-occt/action.yml
.github/actions/configure-occt/action.yml [new file with mode: 0644]
.github/workflows/daily-ir-vcpkg-configure.yml [new file with mode: 0644]

index 3437e97b0f843d6d29242765abe26f4c2aef6cc6..5b13eb9860c6ce6ac368fe68bf984d6730568f82 100644 (file)
@@ -38,136 +38,18 @@ inputs:
 runs:
   using: "composite"
   steps:
-    - name: Setup vcpkg
-      uses: ./.github/actions/vcpkg-setup
+    - name: Configure OCCT
+      uses: ./.github/actions/configure-occt
       with:
+        platform: ${{ inputs.platform }}
+        compiler: ${{ inputs.compiler }}
+        additional-cmake-flags: ${{ inputs.additional-cmake-flags }}
+        use-vtk: ${{ inputs.use-vtk }}
+        build-use-pch: ${{ inputs.build-use-pch }}
+        build-opt-profile: ${{ inputs.build-opt-profile }}
+        cmake-build-type: ${{ inputs.cmake-build-type }}
         github-token: ${{ inputs.github-token }}
 
-    - name: Download and extract Mesa3D (Windows)
-      if: ${{ inputs.platform == 'windows' }}
-      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 (Windows)
-      if: ${{ inputs.platform == 'windows' }}
-      run: |
-        cd mesa3d
-        .\systemwidedeploy.cmd 1
-        .\systemwidedeploy.cmd 5
-      shell: cmd
-
-    - name: Install dependencies (Linux)
-      if: ${{ inputs.platform == 'linux' }}
-      run: sudo apt-get update && sudo apt-get install -y cmake ${{ inputs.compiler == 'clang' && 'clang' || 'gcc g++' }} make libglu1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev
-      shell: bash
-
-    - name: Install required packages (macOS)
-      if: ${{ inputs.platform == 'macos' }}
-      run: |
-        brew update || true
-        # temporary workaround for missing tcl-tk
-        brew install tcl-tk || true
-        # Force link any conflicting packages
-        brew link --overwrite python@3.12 || true
-        brew link --overwrite python@3.13 || true
-      shell: bash
-
-    - name: Configure OCCT (Windows)
-      if: ${{ inputs.platform == 'windows' }}
-      run: |
-          mkdir build
-          cd build
-          cmake -T ${{ inputs.compiler == 'msvc' && 'host=x64' || 'ClangCL' }} `
-                -D USE_FREETYPE=ON `
-                -D USE_TK=ON `
-                -D BUILD_USE_PCH=${{ inputs.build-use-pch }} `
-                -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} `
-                -D BUILD_INCLUDE_SYMLINK=ON `
-                -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} `
-                -D INSTALL_DIR=${{ github.workspace }}/install `
-                -D BUILD_USE_VCPKG=ON `
-                -D VCPKG_TARGET_TRIPLET=x64-windows `
-                -D USE_D3D=ON `
-                -D USE_DRACO=ON `
-                -D USE_FFMPEG=ON `
-                -D USE_FREEIMAGE=ON `
-                -D USE_GLES2=ON `
-                -D USE_OPENVR=ON `
-                -D USE_VTK=${{ inputs.use-vtk }} `
-                -D USE_TBB=ON `
-                -D USE_RAPIDJSON=ON `
-                -D USE_OPENGL=ON `
-                -D BUILD_GTEST=ON `
-                -D BUILD_CPP_STANDARD=C++17 `
-                -D INSTALL_GTEST=ON `
-                ${{ inputs.additional-cmake-flags }} ..
-      shell: pwsh
-
-    - name: Configure OCCT (macOS)
-      if: ${{ inputs.platform == 'macos' }}
-      run: |
-        mkdir -p build
-        cd build
-        cmake -G "Unix Makefiles" \
-              -D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
-              -D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
-              -D BUILD_USE_PCH=${{ inputs.build-use-pch }} \
-              -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} \
-              -D BUILD_INCLUDE_SYMLINK=ON \
-              -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} \
-              -D INSTALL_DIR=${{ github.workspace }}/install \
-              -D BUILD_USE_VCPKG=ON \
-              -D VCPKG_TARGET_TRIPLET=arm64-osx-dynamic \
-              -D USE_RAPIDJSON=ON \
-              -D USE_DRACO=ON \
-              -D USE_FREETYPE=ON \
-              -D USE_OPENGL=ON \
-              -D USE_FREEIMAGE=ON \
-              -D BUILD_GTEST=ON \
-              -D BUILD_CPP_STANDARD=C++17 \
-              -D INSTALL_GTEST=ON \
-              -D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
-              ${{ inputs.additional-cmake-flags }} ..
-      shell: bash
-
-    - name: Configure OCCT (Linux)
-      if: ${{ inputs.platform == 'linux' }}
-      run: |
-        mkdir -p build
-        cd build
-        # Set environment to help vcpkg find system libraries
-        export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"
-        export CMAKE_PREFIX_PATH="/usr:/usr/local:$CMAKE_PREFIX_PATH"
-        cmake -G "Unix Makefiles" \
-              -D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
-              -D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
-              -D BUILD_USE_PCH=${{ inputs.build-use-pch }} \
-              -D BUILD_INCLUDE_SYMLINK=ON \
-              -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} \
-              -D USE_TK=ON \
-              -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} \
-              -D INSTALL_DIR=${{ github.workspace }}/install \
-              -D BUILD_USE_VCPKG=ON \
-              -D BUILD_LIBRARY_TYPE=Shared \
-              -D VCPKG_TARGET_TRIPLET=x64-linux-dynamic \
-              -D USE_FREETYPE=ON \
-              -D USE_DRACO=ON \
-              -D USE_FFMPEG=ON \
-              -D USE_FREEIMAGE=ON \
-              -D USE_GLES2=ON \
-              -D USE_OPENVR=ON \
-              -D USE_VTK=${{ inputs.use-vtk }} \
-              -D USE_TBB=ON \
-              -D USE_RAPIDJSON=ON \
-              -D USE_OPENGL=ON \
-              -D BUILD_GTEST=ON \
-              -D BUILD_CPP_STANDARD=C++17 \
-              -D INSTALL_GTEST=ON \
-              ${{ inputs.additional-cmake-flags }} ..
-      shell: bash
-
     - name: Upload vcpkg cache
       uses: ./.github/actions/upload-vcpkg-cache
       with:
diff --git a/.github/actions/configure-occt/action.yml b/.github/actions/configure-occt/action.yml
new file mode 100644 (file)
index 0000000..df2e474
--- /dev/null
@@ -0,0 +1,169 @@
+name: 'Configure OCCT'
+description: 'Setup vcpkg and configure OCCT on a specific platform without building'
+
+inputs:
+  platform:
+    description: 'Platform (windows, macos, linux)'
+    required: true
+  compiler:
+    description: 'Compiler (msvc, clang, gcc)'
+    required: true
+  additional-cmake-flags:
+    description: 'Additional CMake flags'
+    required: false
+    default: ''
+  use-vtk:
+    description: 'Enable VTK'
+    required: false
+    default: 'true'
+  build-use-pch:
+    description: 'Enable precompiled headers'
+    required: false
+    default: 'true'
+  build-opt-profile:
+    description: 'Build optimization profile'
+    required: false
+    default: 'Production'
+  cmake-build-type:
+    description: 'CMake build type (Release, Debug, etc)'
+    required: false
+    default: 'Release'
+  github-token:
+    description: 'GitHub token for vcpkg NuGet package access'
+    required: true
+
+runs:
+  using: "composite"
+  steps:
+    - name: Setup vcpkg
+      uses: ./.github/actions/vcpkg-setup
+      with:
+        github-token: ${{ inputs.github-token }}
+
+    - name: Download and extract Mesa3D (Windows)
+      if: ${{ inputs.platform == 'windows' }}
+      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 (Windows)
+      if: ${{ inputs.platform == 'windows' }}
+      run: |
+        cd mesa3d
+        .\systemwidedeploy.cmd 1
+        .\systemwidedeploy.cmd 5
+      shell: cmd
+
+    - name: Install dependencies (Linux)
+      if: ${{ inputs.platform == 'linux' }}
+      run: sudo apt-get update && sudo apt-get install -y cmake ${{ inputs.compiler == 'clang' && 'clang' || 'gcc g++' }} make libglu1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev
+      shell: bash
+
+    - name: Install required packages (macOS)
+      if: ${{ inputs.platform == 'macos' }}
+      run: |
+        brew update || true
+        # temporary workaround for missing tcl-tk
+        brew install tcl-tk || true
+        # Force link any conflicting packages
+        brew link --overwrite python@3.12 || true
+        brew link --overwrite python@3.13 || true
+      shell: bash
+
+    - name: Configure OCCT (Windows)
+      if: ${{ inputs.platform == 'windows' }}
+      run: |
+          mkdir build
+          cd build
+          cmake -T ${{ inputs.compiler == 'msvc' && 'host=x64' || 'ClangCL' }} `
+                -D USE_FREETYPE=ON `
+                -D USE_TK=ON `
+                -D BUILD_USE_PCH=${{ inputs.build-use-pch }} `
+                -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} `
+                -D BUILD_INCLUDE_SYMLINK=ON `
+                -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} `
+                -D INSTALL_DIR=${{ github.workspace }}/install `
+                -D BUILD_USE_VCPKG=ON `
+                -D VCPKG_TARGET_TRIPLET=x64-windows `
+                -D USE_D3D=ON `
+                -D USE_DRACO=ON `
+                -D USE_FFMPEG=ON `
+                -D USE_FREEIMAGE=ON `
+                -D USE_GLES2=ON `
+                -D USE_OPENVR=ON `
+                -D USE_VTK=${{ inputs.use-vtk }} `
+                -D USE_TBB=ON `
+                -D USE_RAPIDJSON=ON `
+                -D USE_OPENGL=ON `
+                -D BUILD_GTEST=ON `
+                -D BUILD_CPP_STANDARD=C++17 `
+                -D INSTALL_GTEST=ON `
+                ${{ inputs.additional-cmake-flags }} ..
+          echo "Configuration completed successfully for Windows"
+      shell: pwsh
+
+    - name: Configure OCCT (macOS)
+      if: ${{ inputs.platform == 'macos' }}
+      run: |
+        mkdir -p build
+        cd build
+        cmake -G "Unix Makefiles" \
+              -D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
+              -D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
+              -D BUILD_USE_PCH=${{ inputs.build-use-pch }} \
+              -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} \
+              -D BUILD_INCLUDE_SYMLINK=ON \
+              -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} \
+              -D INSTALL_DIR=${{ github.workspace }}/install \
+              -D BUILD_USE_VCPKG=ON \
+              -D VCPKG_TARGET_TRIPLET=arm64-osx-dynamic \
+              -D USE_RAPIDJSON=ON \
+              -D USE_DRACO=ON \
+              -D USE_FREETYPE=ON \
+              -D USE_OPENGL=ON \
+              -D USE_FREEIMAGE=ON \
+              -D BUILD_GTEST=ON \
+              -D BUILD_CPP_STANDARD=C++17 \
+              -D INSTALL_GTEST=ON \
+              -D CMAKE_CXX_FLAGS="-Werror -Wall -Wextra" \
+              ${{ inputs.additional-cmake-flags }} ..
+        echo "Configuration completed successfully for macOS"
+      shell: bash
+
+    - name: Configure OCCT (Linux)
+      if: ${{ inputs.platform == 'linux' }}
+      run: |
+        mkdir -p build
+        cd build
+        # Set environment to help vcpkg find system libraries
+        export PKG_CONFIG_PATH="/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"
+        export CMAKE_PREFIX_PATH="/usr:/usr/local:$CMAKE_PREFIX_PATH"
+        cmake -G "Unix Makefiles" \
+              -D CMAKE_C_COMPILER=${{ inputs.compiler == 'clang' && 'clang' || 'gcc' }} \
+              -D CMAKE_CXX_COMPILER=${{ inputs.compiler == 'clang' && 'clang++' || 'g++' }} \
+              -D BUILD_USE_PCH=${{ inputs.build-use-pch }} \
+              -D BUILD_INCLUDE_SYMLINK=ON \
+              -D BUILD_OPT_PROFILE=${{ inputs.build-opt-profile }} \
+              -D USE_TK=ON \
+              -D CMAKE_BUILD_TYPE=${{ inputs.cmake-build-type }} \
+              -D INSTALL_DIR=${{ github.workspace }}/install \
+              -D BUILD_USE_VCPKG=ON \
+              -D BUILD_LIBRARY_TYPE=Shared \
+              -D VCPKG_TARGET_TRIPLET=x64-linux-dynamic \
+              -D USE_FREETYPE=ON \
+              -D USE_DRACO=ON \
+              -D USE_FFMPEG=ON \
+              -D USE_FREEIMAGE=ON \
+              -D USE_GLES2=ON \
+              -D USE_OPENVR=ON \
+              -D USE_VTK=${{ inputs.use-vtk }} \
+              -D USE_TBB=ON \
+              -D USE_RAPIDJSON=ON \
+              -D USE_OPENGL=ON \
+              -D BUILD_GTEST=ON \
+              -D BUILD_CPP_STANDARD=C++17 \
+              -D INSTALL_GTEST=ON \
+              ${{ inputs.additional-cmake-flags }} ..
+        echo "Configuration completed successfully for Linux"
+      shell: bash
\ No newline at end of file
diff --git a/.github/workflows/daily-ir-vcpkg-configure.yml b/.github/workflows/daily-ir-vcpkg-configure.yml
new file mode 100644 (file)
index 0000000..9ff3d5e
--- /dev/null
@@ -0,0 +1,81 @@
+# This workflow runs daily on the IR branch to configure OCCT with vcpkg packages.
+# It only performs configuration without building or installing, using vcpkg for dependency management.
+
+name: Daily IR Branch vcpkg Configure
+
+on:
+  schedule:
+    # Run daily at 02:00 UTC
+    - cron: '0 2 * * *'
+  workflow_dispatch:
+    # Allow manual triggering
+
+jobs:
+  configure-windows:
+    name: Configure OCCT on Windows with MSVC
+    runs-on: windows-2025
+    if: github.ref == 'refs/heads/IR' && github.repository == 'Open-Cascade-SAS/OCCT'
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4.1.7
+      with:
+        ref: IR
+
+    - name: Configure OCCT
+      uses: ./.github/actions/configure-occt
+      with:
+        platform: windows
+        compiler: msvc
+        cmake-build-type: Release
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+
+    - name: Verify configuration output
+      run: |
+        echo "::notice::Successfully configured OCCT on Windows with vcpkg packages"
+
+  configure-macos:
+    name: Configure OCCT on macOS with Clang
+    runs-on: macos-15
+    if: github.ref == 'refs/heads/IR' && github.repository == 'Open-Cascade-SAS/OCCT'
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4.1.7
+      with:
+        ref: IR
+
+    - name: Configure OCCT
+      uses: ./.github/actions/configure-occt
+      with:
+        platform: macos
+        compiler: clang
+        cmake-build-type: Release
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+
+    - name: Verify configuration output
+      run: |
+        echo "::notice::Successfully configured OCCT on macOS with vcpkg packages"
+
+  configure-linux:
+    name: Configure OCCT on Ubuntu with Clang
+    runs-on: ubuntu-24.04
+    if: github.ref == 'refs/heads/IR' && github.repository == 'Open-Cascade-SAS/OCCT'
+
+    steps:
+    - name: Checkout repository
+      uses: actions/checkout@v4.1.7
+      with:
+        ref: IR
+
+    - name: Configure OCCT
+      uses: ./.github/actions/configure-occt
+      with:
+        platform: linux
+        compiler: clang
+        cmake-build-type: Release
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+
+    - name: Verify configuration output
+      run: |
+        echo "::notice::Successfully configured OCCT on Linux with vcpkg packages"
\ No newline at end of file