From 5df5e92699c88c2570e7dc1da469322791c6d427 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 14:28:36 -0600 Subject: [PATCH 01/27] Create bindings.yml --- .github/workflows/bindings.yml | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/bindings.yml diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml new file mode 100644 index 00000000..1dfa920d --- /dev/null +++ b/.github/workflows/bindings.yml @@ -0,0 +1,40 @@ +name: Build Bindings + +on: + push: + branches: [ master ] + tags: [ '*' ] + pull_request: + branches: [ master ] + +jobs: + Linux: + uses: ./.github/workflows/build-job.yml + with: + name: Linux + runner_generate: ubuntu-22.04 + runner_compile: ubuntu-22.04 + platform: Linux + secrets: + ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} + + Windows: + uses: ./.github/workflows/build-job.yml + with: + name: Windows + # Note: As per your Azure setup, Windows generation runs on Linux first + runner_generate: ubuntu-22.04 + runner_compile: windows-latest + platform: Windows + secrets: + ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} + + OSX: + uses: ./.github/workflows/build-job.yml + with: + name: OSX + runner_generate: macos-15-intel # Using 13 for x86_64 compatibility or latest as needed + runner_compile: macos-15-intel + platform: OSX + secrets: + ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} From 9c6a6e43eb58db96f7d6322468928e82b0f89748 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 14:29:19 -0600 Subject: [PATCH 02/27] Create build-job.yml --- .github/workflows/build-job.yml | 253 ++++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 .github/workflows/build-job.yml diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml new file mode 100644 index 00000000..c44674ec --- /dev/null +++ b/.github/workflows/build-job.yml @@ -0,0 +1,253 @@ +name: Build Bindings Logic + +on: + workflow_call: + inputs: + name: + required: true + type: string + runner_generate: + required: true + type: string + runner_compile: + required: true + type: string + platform: + required: true + type: string + secrets: + ANACONDA_TOKEN: + required: false + +jobs: + # ----------------------------------------------------------------------------- + # PHASE 1: Generate Bindings (Python wrapper generation) + # ----------------------------------------------------------------------------- + generate: + name: Generate ${{ inputs.name }} + runs-on: ${{ inputs.runner_generate }} + timeout-minutes: 360 + outputs: + output_dir: ${{ steps.conf.outputs.OUTPUT }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + # --- Mac SDK Hack --- + - name: SDK install and symlink (Mac) + if: contains(inputs.runner_generate, 'mac') + run: | + curl -L -O https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz + sudo mkdir -p /opt + sudo tar -xf MacOSX11.3.sdk.tar.xz -C /opt + sudo mkdir -p /opt/usr/local/ + sudo ln -s /opt/MacOSX11.3.sdk/usr/include /opt/usr/local/include + sudo ln -s /opt/MacOSX11.3.sdk/System/Library/Frameworks/OpenGL.framework/Headers /usr/local/include/OpenGL + + # --- Setup Environment --- + - uses: mamba-org/setup-micromamba@v1 + with: + micromamba-version: '1.5.8-0' + environment-file: environment.devenv.yml + environment-name: cpp-py-bindgen + cache-environment: true + # We force a specific python version for the env creation as per your Azure setup + create-args: >- + python=3.12 + + - name: Prepare conda environment (mamba-devenv) + shell: bash -l {0} + run: micromamba run -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml + + - name: Read output dir + id: conf + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + OUTPUT=`python -c'import toml; print(toml.load("ocp.toml")["output_folder"])'` + echo "OUTPUT=$OUTPUT" >> $GITHUB_OUTPUT + + # --- Generation Logic --- + + # Windows Special Case (Running on Linux targeting Windows) + - name: Generate (Windows on Linux) + if: inputs.platform == 'Windows' + shell: bash -l {0} + run: | + micromamba create --yes --platform win-64 --no-deps --prefix ./occt occt=7.9.0 + micromamba activate cpp-py-bindgen + cmake -S . -B . -G Ninja \ + -DPython_ROOT_DIR=$CONDA_PREFIX \ + -DPython3_ROOT_DIR=$CONDA_PREFIX \ + -DPython_FIND_VIRTUALENV=ONLY \ + -DPython3_FIND_VIRTUALENV=ONLY \ + -DOCCT_LIB_DIR=./occt/Library/bin/ \ + -DPLATFORM=Windows + cmake --build . -- -v + + # Standard Case (Linux/Mac) + - name: Generate (Standard) + if: inputs.platform != 'Windows' + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + cmake -S . -B . -G Ninja \ + -DPython_ROOT_DIR=$CONDA_PREFIX \ + -DPython3_ROOT_DIR=$CONDA_PREFIX \ + -DPython_FIND_VIRTUALENV=ONLY \ + -DPython3_FIND_VIRTUALENV=ONLY + cmake --build . + + # --- Artifact Upload --- + - name: Upload Sources + uses: actions/upload-artifact@v4 + with: + name: OCP_src_${{ inputs.platform }} + path: ${{ steps.conf.outputs.OUTPUT }} + retention-days: 1 + + - name: Upload Pickles + uses: actions/upload-artifact@v4 + with: + name: OCP_pkl_${{ inputs.platform }} + path: ${{ steps.conf.outputs.OUTPUT }}_pkl + retention-days: 1 + + # ----------------------------------------------------------------------------- + # PHASE 2: Compile (Matrix) + # ----------------------------------------------------------------------------- + compile: + needs: generate + name: Compile ${{ inputs.name }} (3.${{ matrix.py_min }}) + runs-on: ${{ inputs.runner_compile }} + timeout-minutes: 360 + strategy: + fail-fast: false + matrix: + py_min: [10, 11, 12, 13] + + env: + OCP_src: OCP_src_${{ inputs.platform }} + n_cores: 2 + PYTHON_VERSION: 3.${{ matrix.py_min }} + STAGE: "compile" + ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + # --- Download Artifacts --- + - name: Download Source Artifact + uses: actions/download-artifact@v4 + with: + name: OCP_src_${{ inputs.platform }} + path: ${{ env.OCP_src }} + + # --- Mac SDK Hack (Compile Phase) --- + - name: SDK install (Mac) + if: contains(inputs.runner_compile, 'mac') + run: | + curl -L -O https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.15.sdk.tar.xz + sudo mkdir -p /opt + sudo tar -xf MacOSX10.15.sdk.tar.xz -C /opt + + # --- Setup Environment --- + - uses: mamba-org/setup-micromamba@v1 + with: + micromamba-version: '1.5.8-0' + environment-file: environment.devenv.yml + environment-name: cpp-py-bindgen + create-args: >- + python=${{ env.PYTHON_VERSION }} + + - name: Prepare conda environment + shell: bash -l {0} + run: micromamba run -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml + + # --- Compilation --- + + # Ubuntu Compile + - name: Compile (Ubuntu) + if: contains(inputs.runner_compile, 'ubuntu') + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release + cmake --build build -j 2 -- -k 0 + rm -rf build/CMakeFiles + + # Mac Compile + - name: Compile (Mac) + if: contains(inputs.runner_compile, 'mac') + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=/opt/MacOSX10.15.sdk/ + cmake --build build -j 2 -- -k 0 + rm -rf build/CMakeFiles + + # Windows Compile + - name: Compile (Windows) + if: contains(inputs.runner_compile, 'windows') + shell: powershell + run: | + # Note: PowerShell interpolation of env vars is different + micromamba run -n cpp-py-bindgen cmake -B build -S "../$env:OCP_src" -G Ninja -DCMAKE_BUILD_TYPE=Release -DPython3_FIND_STRATEGY=LOCATION -DPython3_ROOT_DIR=$env:CONDA_PREFIX -DCMAKE_LINKER=lld-link.exe + micromamba run -n cpp-py-bindgen cmake --build build -j 1 -- -v -k 0 + micromamba run -n cpp-py-bindgen cmake -E rm -rf build\CMakeFiles + env: + CXX: "cl.exe" + + # --- Stubs & Test --- + - name: Generate stubs + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + cd build + python -m pybind11_stubgen OCP -o . --root-suffix stubs + cp -r "../../${OCP_src}" ../upload + mv OCPstubs OCP-stubs + cp -r OCP-stubs ../upload/ + + - name: Test Import + shell: bash -l {0} + run: | + micromamba activate cpp-py-bindgen + cd build + # LD_DEBUG is linux specific, keeping it safe for others + if [[ "${{ inputs.platform }}" == "Linux" ]]; then + LD_DEBUG=libs python -c"import OCP" + else + python -c"import OCP" + fi + + # --- Conda Packaging --- + # Combined the PR and Push logic into one step using dynamic flags + - name: Build Conda Package + shell: bash -l {0} + env: + BUILD_STRING: "1" + TOKEN: ${{ secrets.ANACONDA_TOKEN }} + run: | + # Install build tools in a fresh env + micromamba create -n build -y -c conda-forge python=3.11 liblief=0.14.1 conda-build anaconda-client + micromamba activate build + + # Determine flags based on event + if [[ "${{ github.event_name }}" == "pull_request" ]]; then + echo "Building for PR..." + conda build -c conda-forge --override-channels conda + else + echo "Building and Uploading..." + conda build --token $TOKEN --user cadquery --label dev -c conda-forge --override-channels conda + fi + + - name: Upload Compilation Artifacts + uses: actions/upload-artifact@v4 + with: + name: OCP_${{ inputs.platform }}_py3${{ matrix.py_min }} + path: build From ecd34a33ec47c3e010b180dbaa3ae2506ffc5d64 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 14:57:25 -0600 Subject: [PATCH 03/27] Update build-job.yml --- .github/workflows/build-job.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index c44674ec..f73bf166 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -50,12 +50,12 @@ jobs: - uses: mamba-org/setup-micromamba@v1 with: micromamba-version: '1.5.8-0' - environment-file: environment.devenv.yml + # REMOVE: environment-file: environment.devenv.yml environment-name: cpp-py-bindgen cache-environment: true - # We force a specific python version for the env creation as per your Azure setup + # Create a minimal environment with mamba-devenv create-args: >- - python=3.12 + python=3.12 mamba-devenv - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} @@ -159,10 +159,11 @@ jobs: - uses: mamba-org/setup-micromamba@v1 with: micromamba-version: '1.5.8-0' - environment-file: environment.devenv.yml + # REMOVE: environment-file: environment.devenv.yml environment-name: cpp-py-bindgen + # Create a minimal environment with mamba-devenv create-args: >- - python=${{ env.PYTHON_VERSION }} + python=${{ env.PYTHON_VERSION }} mamba-devenv - name: Prepare conda environment shell: bash -l {0} From dde941d51258baa7c1d23566020e002b79a3c779 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:01:07 -0600 Subject: [PATCH 04/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index f73bf166..afe6d515 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -55,7 +55,7 @@ jobs: cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- - python=3.12 mamba-devenv + -c conda-forge python=3.12 mamba-devenv - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} @@ -163,7 +163,7 @@ jobs: environment-name: cpp-py-bindgen # Create a minimal environment with mamba-devenv create-args: >- - python=${{ env.PYTHON_VERSION }} mamba-devenv + -c conda-forge python=${{ env.PYTHON_VERSION }} mamba-devenv - name: Prepare conda environment shell: bash -l {0} From 5b48d92dc9bc108bf57b27a034d10a0d86132660 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:17:10 -0600 Subject: [PATCH 05/27] Update build-job.yml --- .github/workflows/build-job.yml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index afe6d515..64145a63 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -47,19 +47,18 @@ jobs: sudo ln -s /opt/MacOSX11.3.sdk/System/Library/Frameworks/OpenGL.framework/Headers /usr/local/include/OpenGL # --- Setup Environment --- - - uses: mamba-org/setup-micromamba@v1 + - uses: mamba-org/setup-micromamba@v2 with: - micromamba-version: '1.5.8-0' # REMOVE: environment-file: environment.devenv.yml - environment-name: cpp-py-bindgen - cache-environment: true + # environment-name: cpp-py-bindgen + # cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- - -c conda-forge python=3.12 mamba-devenv + python=3.12 - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} - run: micromamba run -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml + run: micromamba run -n mamba-devenv -f environment.devenv.yml - name: Read output dir id: conf @@ -156,18 +155,18 @@ jobs: sudo tar -xf MacOSX10.15.sdk.tar.xz -C /opt # --- Setup Environment --- - - uses: mamba-org/setup-micromamba@v1 + - uses: mamba-org/setup-micromamba@v2 with: - micromamba-version: '1.5.8-0' + # micromamba-version: '1.5.8-0' # REMOVE: environment-file: environment.devenv.yml - environment-name: cpp-py-bindgen + # environment-name: cpp-py-bindgen # Create a minimal environment with mamba-devenv create-args: >- - -c conda-forge python=${{ env.PYTHON_VERSION }} mamba-devenv + python=${{ env.PYTHON_VERSION }} - name: Prepare conda environment shell: bash -l {0} - run: micromamba run -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml + run: micromamba run -n mamba-devenv -f environment.devenv.yml # --- Compilation --- From bcc89ab20a6ded8eabb8468d34ad6b47995e1de1 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:18:12 -0600 Subject: [PATCH 06/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 64145a63..c8a91139 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -50,7 +50,7 @@ jobs: - uses: mamba-org/setup-micromamba@v2 with: # REMOVE: environment-file: environment.devenv.yml - # environment-name: cpp-py-bindgen + environment-name: mamba-devenv # cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- @@ -159,7 +159,7 @@ jobs: with: # micromamba-version: '1.5.8-0' # REMOVE: environment-file: environment.devenv.yml - # environment-name: cpp-py-bindgen + environment-name: mamba-devenv # Create a minimal environment with mamba-devenv create-args: >- python=${{ env.PYTHON_VERSION }} From ee14bf25573bbc354282e8057590f3029ea6d2b2 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:21:26 -0600 Subject: [PATCH 07/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index c8a91139..66c62f82 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -58,7 +58,7 @@ jobs: - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} - run: micromamba run -n mamba-devenv -f environment.devenv.yml + run: micromamba run mamba-devenv -f environment.devenv.yml - name: Read output dir id: conf @@ -166,7 +166,7 @@ jobs: - name: Prepare conda environment shell: bash -l {0} - run: micromamba run -n mamba-devenv -f environment.devenv.yml + run: micromamba run mamba-devenv -f environment.devenv.yml # --- Compilation --- From 049c41553c7d95236dcf9a86836da7a1bed24118 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:26:26 -0600 Subject: [PATCH 08/27] Update build-job.yml --- .github/workflows/build-job.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 66c62f82..65450401 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -50,11 +50,11 @@ jobs: - uses: mamba-org/setup-micromamba@v2 with: # REMOVE: environment-file: environment.devenv.yml - environment-name: mamba-devenv + # environment-name: mamba-devenv # cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- - python=3.12 + -c conda-forge python=3.12 conda-devenv - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} @@ -159,10 +159,10 @@ jobs: with: # micromamba-version: '1.5.8-0' # REMOVE: environment-file: environment.devenv.yml - environment-name: mamba-devenv + # environment-name: mamba-devenv # Create a minimal environment with mamba-devenv create-args: >- - python=${{ env.PYTHON_VERSION }} + -c conda-forge python=${{ env.PYTHON_VERSION }} conda-devenv - name: Prepare conda environment shell: bash -l {0} From fade34c8ef300cb9b9f6b60c6ed939c7db0f666c Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:27:08 -0600 Subject: [PATCH 09/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 65450401..9312696c 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -50,7 +50,7 @@ jobs: - uses: mamba-org/setup-micromamba@v2 with: # REMOVE: environment-file: environment.devenv.yml - # environment-name: mamba-devenv + environment-name: placeholder # cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- @@ -159,7 +159,7 @@ jobs: with: # micromamba-version: '1.5.8-0' # REMOVE: environment-file: environment.devenv.yml - # environment-name: mamba-devenv + environment-name: placeholder # Create a minimal environment with mamba-devenv create-args: >- -c conda-forge python=${{ env.PYTHON_VERSION }} conda-devenv From 44db6f13dfcb9e8cadf779f4a360ee7839cd0509 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:29:40 -0600 Subject: [PATCH 10/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 9312696c..44d49dc8 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -58,7 +58,7 @@ jobs: - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} - run: micromamba run mamba-devenv -f environment.devenv.yml + run: mamba-devenv -f environment.devenv.yml - name: Read output dir id: conf @@ -166,7 +166,7 @@ jobs: - name: Prepare conda environment shell: bash -l {0} - run: micromamba run mamba-devenv -f environment.devenv.yml + run: mamba-devenv -f environment.devenv.yml # --- Compilation --- From c0131c2e7ba7017e0e9896e1960f15fa02b8c0d3 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:33:32 -0600 Subject: [PATCH 11/27] Update build-job.yml --- .github/workflows/build-job.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 44d49dc8..4fc895e6 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -58,7 +58,9 @@ jobs: - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} - run: mamba-devenv -f environment.devenv.yml + run: | + micromamba activate placeholder + mamba-devenv -f environment.devenv.yml - name: Read output dir id: conf @@ -166,7 +168,9 @@ jobs: - name: Prepare conda environment shell: bash -l {0} - run: mamba-devenv -f environment.devenv.yml + run: | + micromamba activate placeholder + mamba-devenv -f environment.devenv.yml # --- Compilation --- From 1804212e58f7cc3eed48b0c7576e266ed21a3127 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:40:58 -0600 Subject: [PATCH 12/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 4fc895e6..6c9be591 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -59,8 +59,8 @@ jobs: - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} run: | - micromamba activate placeholder - mamba-devenv -f environment.devenv.yml + mamba devenv -e mamba + mamba devenv -f environment.devenv.yml - name: Read output dir id: conf From 689403cf2f8b1bc5df6cf5b79badc4b910c6d28c Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:42:17 -0600 Subject: [PATCH 13/27] Update build-job.yml --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 6c9be591..ed116ba5 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -59,8 +59,8 @@ jobs: - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} run: | - mamba devenv -e mamba - mamba devenv -f environment.devenv.yml + micromamba devenv -e mamba + micromamba devenv -f environment.devenv.yml - name: Read output dir id: conf From eac26807d176406b07214bc5e1c8bb38ce019ddf Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:47:40 -0600 Subject: [PATCH 14/27] Update build-job.yml --- .github/workflows/build-job.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index ed116ba5..660b555e 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -54,13 +54,13 @@ jobs: # cache-environment: true # Create a minimal environment with mamba-devenv create-args: >- - -c conda-forge python=3.12 conda-devenv + -c conda-forge python=3.12 conda-devenv mamba - name: Prepare conda environment (mamba-devenv) shell: bash -l {0} run: | - micromamba devenv -e mamba - micromamba devenv -f environment.devenv.yml + export CONDA_DEVENV_ENV_MANAGER=mamba + mamba devenv -f environment.devenv.yml - name: Read output dir id: conf From 53e353af219fbe331626cd57f87c773d658dc4c9 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:48:52 -0600 Subject: [PATCH 15/27] Update build-job.yml --- .github/workflows/build-job.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 660b555e..d55be009 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -60,7 +60,7 @@ jobs: shell: bash -l {0} run: | export CONDA_DEVENV_ENV_MANAGER=mamba - mamba devenv -f environment.devenv.yml + mamba-devenv -f environment.devenv.yml - name: Read output dir id: conf From 07f3f45a3806dce9eca5c3cd8b7a642cb0eaf4b1 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 15:51:33 -0600 Subject: [PATCH 16/27] Update build-job.yml --- .github/workflows/build-job.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index d55be009..cd0870a0 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -60,6 +60,7 @@ jobs: shell: bash -l {0} run: | export CONDA_DEVENV_ENV_MANAGER=mamba + mamba create -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml - name: Read output dir From 175fdbf35f98306a0b7b2af7cf8b8e2a2ad0d042 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 2 Dec 2025 16:59:11 -0600 Subject: [PATCH 17/27] Update build-job.yml --- .github/workflows/build-job.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index cd0870a0..d7d6490b 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -165,12 +165,13 @@ jobs: environment-name: placeholder # Create a minimal environment with mamba-devenv create-args: >- - -c conda-forge python=${{ env.PYTHON_VERSION }} conda-devenv + -c conda-forge python=${{ env.PYTHON_VERSION }} conda-devenv mamba - name: Prepare conda environment shell: bash -l {0} run: | - micromamba activate placeholder + export CONDA_DEVENV_ENV_MANAGER=mamba + mamba create -n cpp-py-bindgen mamba-devenv -f environment.devenv.yml # --- Compilation --- From 01c40d71f1a96d2ccbf05eaaaabe89afd099be6c Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Wed, 3 Dec 2025 10:16:35 -0600 Subject: [PATCH 18/27] build-job.yml -> change pkl artifact upload, and source artifact download in compile --- .github/workflows/build-job.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index d7d6490b..55c66713 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -88,6 +88,7 @@ jobs: -DOCCT_LIB_DIR=./occt/Library/bin/ \ -DPLATFORM=Windows cmake --build . -- -v + ls -lRht # Standard Case (Linux/Mac) - name: Generate (Standard) @@ -101,6 +102,13 @@ jobs: -DPython_FIND_VIRTUALENV=ONLY \ -DPython3_FIND_VIRTUALENV=ONLY cmake --build . + ls -lRht + + - name: Copy pkl output + shell: bash -l {0} + run: | + mkdir -p ${{ steps.conf.outputs.OUTPUT }}_pkl + cp *.pkl ${{ steps.conf.outputs.OUTPUT }}_pkl/ # --- Artifact Upload --- - name: Upload Sources @@ -147,7 +155,7 @@ jobs: uses: actions/download-artifact@v4 with: name: OCP_src_${{ inputs.platform }} - path: ${{ env.OCP_src }} + path: .. # --- Mac SDK Hack (Compile Phase) --- - name: SDK install (Mac) From dbc75ae3fe55ee3d8dd2035ec7f18d8ee973f8e3 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Mon, 15 Dec 2025 15:36:22 -0600 Subject: [PATCH 19/27] build-job.yml -> caching for OCP_src --- .github/workflows/build-job.yml | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 55c66713..71a5b79a 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -35,6 +35,13 @@ jobs: with: submodules: true + - name: Restore OCP_src cache + id: cache-ocp-src-restore + uses: actions/cache/restore@v4 + with: + path: ${{ steps.conf.outputs.OUTPUT }} + key: OCP-src-${{ inputs.platform }}- + # --- Mac SDK Hack --- - name: SDK install and symlink (Mac) if: contains(inputs.runner_generate, 'mac') @@ -75,10 +82,10 @@ jobs: # Windows Special Case (Running on Linux targeting Windows) - name: Generate (Windows on Linux) - if: inputs.platform == 'Windows' + if: inputs.platform == 'Windows' && steps.cache-ocp-src-restore.outputs.cache-hit != 'true' shell: bash -l {0} run: | - micromamba create --yes --platform win-64 --no-deps --prefix ./occt occt=7.9.0 + micromamba create --yes --platform win-64 --no-deps --prefix ./occt occt=7.9.2 micromamba activate cpp-py-bindgen cmake -S . -B . -G Ninja \ -DPython_ROOT_DIR=$CONDA_PREFIX \ @@ -92,7 +99,7 @@ jobs: # Standard Case (Linux/Mac) - name: Generate (Standard) - if: inputs.platform != 'Windows' + if: inputs.platform != 'Windows' && steps.cache-ocp-src-restore.outputs.cache-hit != 'true' shell: bash -l {0} run: | micromamba activate cpp-py-bindgen @@ -104,6 +111,13 @@ jobs: cmake --build . ls -lRht + - name: Cache OCP_src + id: cache-ocp-src-save + uses: actions/cache/save@v4 + with: + path: ${{ steps.conf.outputs.OUTPUT }} + key: ${{ steps.cache-ocp-src-save.outputs.cache-primary-key }} + - name: Copy pkl output shell: bash -l {0} run: | @@ -116,14 +130,12 @@ jobs: with: name: OCP_src_${{ inputs.platform }} path: ${{ steps.conf.outputs.OUTPUT }} - retention-days: 1 - name: Upload Pickles uses: actions/upload-artifact@v4 with: name: OCP_pkl_${{ inputs.platform }} path: ${{ steps.conf.outputs.OUTPUT }}_pkl - retention-days: 1 # ----------------------------------------------------------------------------- # PHASE 2: Compile (Matrix) @@ -132,7 +144,7 @@ jobs: needs: generate name: Compile ${{ inputs.name }} (3.${{ matrix.py_min }}) runs-on: ${{ inputs.runner_compile }} - timeout-minutes: 360 + # timeout-minutes: 360 strategy: fail-fast: false matrix: From dc5496c94851828a41c278d96dc9d7264dd3324a Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Mon, 15 Dec 2025 15:38:25 -0600 Subject: [PATCH 20/27] build-job.yml -> reorder steps to catch correct outputdir --- .github/workflows/build-job.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 71a5b79a..bbf5bd0d 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -35,13 +35,6 @@ jobs: with: submodules: true - - name: Restore OCP_src cache - id: cache-ocp-src-restore - uses: actions/cache/restore@v4 - with: - path: ${{ steps.conf.outputs.OUTPUT }} - key: OCP-src-${{ inputs.platform }}- - # --- Mac SDK Hack --- - name: SDK install and symlink (Mac) if: contains(inputs.runner_generate, 'mac') @@ -78,6 +71,13 @@ jobs: OUTPUT=`python -c'import toml; print(toml.load("ocp.toml")["output_folder"])'` echo "OUTPUT=$OUTPUT" >> $GITHUB_OUTPUT + - name: Restore OCP_src cache + id: cache-ocp-src-restore + uses: actions/cache/restore@v4 + with: + path: ${{ steps.conf.outputs.OUTPUT }} + key: OCP-src-${{ inputs.platform }}- + # --- Generation Logic --- # Windows Special Case (Running on Linux targeting Windows) From aa79b8a1c8cf97b1f89a0ede8589d2c4d9765320 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Mon, 15 Dec 2025 16:49:01 -0600 Subject: [PATCH 21/27] build-job.yml -> fix wrong key for saving cache --- .github/workflows/build-job.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index bbf5bd0d..922e554a 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -116,7 +116,7 @@ jobs: uses: actions/cache/save@v4 with: path: ${{ steps.conf.outputs.OUTPUT }} - key: ${{ steps.cache-ocp-src-save.outputs.cache-primary-key }} + key: ${{ steps.cache-ocp-src-restore.outputs.cache-primary-key }} - name: Copy pkl output shell: bash -l {0} From dd8cce29a421294286968fc0523cba7d31443df7 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Mon, 15 Dec 2025 21:58:35 -0600 Subject: [PATCH 22/27] bindings.yml -> add workflow dispatch --- .github/workflows/bindings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/bindings.yml b/.github/workflows/bindings.yml index 1dfa920d..acc88b05 100644 --- a/.github/workflows/bindings.yml +++ b/.github/workflows/bindings.yml @@ -6,6 +6,7 @@ on: tags: [ '*' ] pull_request: branches: [ master ] + workflow_dispatch: jobs: Linux: From 0c93ff76ab53150148b3ad506d6ea543953c6540 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 16 Dec 2025 09:07:04 -0600 Subject: [PATCH 23/27] build-job.yml -> caching/artifact for second major phase, recursive dir list --- .github/workflows/build-job.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 922e554a..edaec73b 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -119,6 +119,7 @@ jobs: key: ${{ steps.cache-ocp-src-restore.outputs.cache-primary-key }} - name: Copy pkl output + if: steps.cache-ocp-src-restore.outputs.cache-hit != 'true' shell: bash -l {0} run: | mkdir -p ${{ steps.conf.outputs.OUTPUT }}_pkl @@ -126,12 +127,14 @@ jobs: # --- Artifact Upload --- - name: Upload Sources + # if: steps.cache-ocp-src-restore.outputs.cache-hit != 'true' uses: actions/upload-artifact@v4 with: name: OCP_src_${{ inputs.platform }} path: ${{ steps.conf.outputs.OUTPUT }} - name: Upload Pickles + if: steps.cache-ocp-src-restore.outputs.cache-hit != 'true' uses: actions/upload-artifact@v4 with: name: OCP_pkl_${{ inputs.platform }} @@ -162,6 +165,14 @@ jobs: with: submodules: true + # rely on source artifact?? + # - name: Restore OCP_src cache + # id: cache-ocp-src-restore + # uses: actions/cache/restore@v4 + # with: + # path: ${{ steps.conf.outputs.OUTPUT }} + # key: OCP-src-${{ inputs.platform }}- + # --- Download Artifacts --- - name: Download Source Artifact uses: actions/download-artifact@v4 @@ -201,6 +212,7 @@ jobs: if: contains(inputs.runner_compile, 'ubuntu') shell: bash -l {0} run: | + ls -alR micromamba activate cpp-py-bindgen cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build -j 2 -- -k 0 @@ -211,6 +223,7 @@ jobs: if: contains(inputs.runner_compile, 'mac') shell: bash -l {0} run: | + ls -alR micromamba activate cpp-py-bindgen cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=/opt/MacOSX10.15.sdk/ cmake --build build -j 2 -- -k 0 @@ -221,6 +234,7 @@ jobs: if: contains(inputs.runner_compile, 'windows') shell: powershell run: | + Get-ChildItem -Force -Recurse # Note: PowerShell interpolation of env vars is different micromamba run -n cpp-py-bindgen cmake -B build -S "../$env:OCP_src" -G Ninja -DCMAKE_BUILD_TYPE=Release -DPython3_FIND_STRATEGY=LOCATION -DPython3_ROOT_DIR=$env:CONDA_PREFIX -DCMAKE_LINKER=lld-link.exe micromamba run -n cpp-py-bindgen cmake --build build -j 1 -- -v -k 0 From c0debc523f367ce446afe03f8f6a23372f37bf0f Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 16 Dec 2025 09:19:07 -0600 Subject: [PATCH 24/27] Update build-job.yml --- .github/workflows/build-job.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index edaec73b..093d548b 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -212,7 +212,7 @@ jobs: if: contains(inputs.runner_compile, 'ubuntu') shell: bash -l {0} run: | - ls -alR + ls -alR ../ micromamba activate cpp-py-bindgen cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build -j 2 -- -k 0 From 478aac6d8390384181ffb97fdede9828c3f74267 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 16 Dec 2025 09:27:20 -0600 Subject: [PATCH 25/27] build-job.yml -> alter artifact path --- .github/workflows/build-job.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 093d548b..c62426f1 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -178,7 +178,7 @@ jobs: uses: actions/download-artifact@v4 with: name: OCP_src_${{ inputs.platform }} - path: .. + path: ../${{ env.OCP_src }} # --- Mac SDK Hack (Compile Phase) --- - name: SDK install (Mac) @@ -234,7 +234,7 @@ jobs: if: contains(inputs.runner_compile, 'windows') shell: powershell run: | - Get-ChildItem -Force -Recurse + Get-ChildItem -Force -Recurse ../ # Note: PowerShell interpolation of env vars is different micromamba run -n cpp-py-bindgen cmake -B build -S "../$env:OCP_src" -G Ninja -DCMAKE_BUILD_TYPE=Release -DPython3_FIND_STRATEGY=LOCATION -DPython3_ROOT_DIR=$env:CONDA_PREFIX -DCMAKE_LINKER=lld-link.exe micromamba run -n cpp-py-bindgen cmake --build build -j 1 -- -v -k 0 From 0083fbe8a42b801add6d336cdebb104c03b9f969 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 16 Dec 2025 11:03:19 -0600 Subject: [PATCH 26/27] build-job.yml -> reduce verbosity, store build and stubs artifacts sooner --- .github/workflows/build-job.yml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index c62426f1..2f87a6a2 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -212,7 +212,6 @@ jobs: if: contains(inputs.runner_compile, 'ubuntu') shell: bash -l {0} run: | - ls -alR ../ micromamba activate cpp-py-bindgen cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release cmake --build build -j 2 -- -k 0 @@ -223,7 +222,6 @@ jobs: if: contains(inputs.runner_compile, 'mac') shell: bash -l {0} run: | - ls -alR micromamba activate cpp-py-bindgen cmake -B build -S "../${OCP_src}" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=/opt/MacOSX10.15.sdk/ cmake --build build -j 2 -- -k 0 @@ -234,7 +232,6 @@ jobs: if: contains(inputs.runner_compile, 'windows') shell: powershell run: | - Get-ChildItem -Force -Recurse ../ # Note: PowerShell interpolation of env vars is different micromamba run -n cpp-py-bindgen cmake -B build -S "../$env:OCP_src" -G Ninja -DCMAKE_BUILD_TYPE=Release -DPython3_FIND_STRATEGY=LOCATION -DPython3_ROOT_DIR=$env:CONDA_PREFIX -DCMAKE_LINKER=lld-link.exe micromamba run -n cpp-py-bindgen cmake --build build -j 1 -- -v -k 0 @@ -242,6 +239,12 @@ jobs: env: CXX: "cl.exe" + - name: Upload Compilation Artifacts + uses: actions/upload-artifact@v4 + with: + name: OCP_${{ inputs.platform }}_py3${{ matrix.py_min }} + path: build + # --- Stubs & Test --- - name: Generate stubs shell: bash -l {0} @@ -253,6 +256,12 @@ jobs: mv OCPstubs OCP-stubs cp -r OCP-stubs ../upload/ + - name: Upload Stubs Artifacts + uses: actions/upload-artifact@v4 + with: + name: OCP_src_stubs_${{ inputs.platform }}_py3${{ matrix.py_min }} + path: upload + - name: Test Import shell: bash -l {0} run: | @@ -266,7 +275,6 @@ jobs: fi # --- Conda Packaging --- - # Combined the PR and Push logic into one step using dynamic flags - name: Build Conda Package shell: bash -l {0} env: @@ -285,9 +293,3 @@ jobs: echo "Building and Uploading..." conda build --token $TOKEN --user cadquery --label dev -c conda-forge --override-channels conda fi - - - name: Upload Compilation Artifacts - uses: actions/upload-artifact@v4 - with: - name: OCP_${{ inputs.platform }}_py3${{ matrix.py_min }} - path: build From 185cabedf4fb83690fabf42076c5db0f7f178889 Mon Sep 17 00:00:00 2001 From: jdegenstein Date: Tue, 16 Dec 2025 13:35:09 -0600 Subject: [PATCH 27/27] build-job.yml -> call stubgen correctly per Adam https://github.com/CadQuery/OCP/commit/de940274f305322442eb6988e708e30f0ef263a1 --- .github/workflows/build-job.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-job.yml b/.github/workflows/build-job.yml index 2f87a6a2..819620f5 100644 --- a/.github/workflows/build-job.yml +++ b/.github/workflows/build-job.yml @@ -251,9 +251,9 @@ jobs: run: | micromamba activate cpp-py-bindgen cd build - python -m pybind11_stubgen OCP -o . --root-suffix stubs - cp -r "../../${OCP_src}" ../upload - mv OCPstubs OCP-stubs + python -m pybind11_stubgen -o . OCP + rm -rf OCP-stubs/setup.py OCP-stubs/__pycache__ OCP-stubs/MANIFEST.in + cp -r "../../$(OCP_src)" ../upload cp -r OCP-stubs ../upload/ - name: Upload Stubs Artifacts