Skip to content

.github/workflows/build-wheel.yml #135

.github/workflows/build-wheel.yml

.github/workflows/build-wheel.yml #135

Workflow file for this run

name: Create Python wheel using Conda
on:
workflow_dispatch
# push:
# branches: [ master ]
env:
PYTHONUTF8: 1
jobs:
build:
name: Build for python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ 'ubuntu-22.04', 'macos-13', 'windows-2019' ]
python-version: [ '3.9', '3.10', '3.11', '3.12' ]
steps:
# see https://github.com/marketplace/actions/download-workflow-artifact
# - name: Download artifact
# uses: dawidd6/action-download-artifact@v2
# if: ${{ matrix.os == 'ubuntu-22.04' }}
# with:
# workflow: build-vtk.yml
# path: /tmp/vtk-wheels
# - name: List downloaded wheels
# if: ${{ matrix.os == 'ubuntu-22.04' }}
# run: |
# find /tmp/vtk-wheels -ls
# ls -ld /tmp/vtk-wheels/*-cp${{ matrix.python-version }}/vtk-*.whl
- name: Checkout project
uses: actions/checkout@v4
# See https://cibuildwheel.readthedocs.io/en/stable/
# Not usable for now, because cadquery libraries require glibc 2.31,
# but the manylinux images have been created only up to 2.24 (as of 2022-04-11).
# - name: Build wheels
# uses: pypa/[email protected]
# with:
# output-dir: dist
# see https://github.com/marketplace/actions/setup-miniconda
- name: Setup Conda
uses: conda-incubator/setup-miniconda@v2
with:
#miniforge-version: latest
miniconda-version: latest
activate-environment: cadquery-ocp
python-version: ${{ matrix.python-version }}
channels: cadquery, conda-forge, defaults
- name: Ubuntu Deps Setup
shell: bash -l {0}
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt update
sudo apt install -y libegl1 libegl1-mesa-dev
fi
- name: Conda Deps Setup
if: ${{ matrix.os != 'ubuntu-22.04' }}
shell: bash -l {0}
run: |
conda install -c cadquery -n cadquery-ocp -y ocp=7.7.2.* vtk=9.2.*
- name: Conda Deps Setup Linux
if: ${{ matrix.os == 'ubuntu-22.04' }}
shell: bash -l {0}
run: |
conda install -c cadquery -n cadquery-ocp -y ocp=7.7.2.* vtk=9.2.* occt=7.7.2=all* auditwheel
# Save ~100MiB in shared object size by stripping debugging symbols.
# See https://github.com/CadQuery/ocp-build-system/issues/33 for details.
echo "Before stripping:"
ls -l ~/conda_pkgs_dir/ocp-*/lib/python*/site-packages/OCP*.so /usr/share/miniconda3/envs/cadquery-ocp/lib/python*/site-packages/OCP*.so
strip ~/conda_pkgs_dir/ocp-*/lib/python*/site-packages/OCP*.so /usr/share/miniconda3/envs/cadquery-ocp/lib/python*/site-packages/OCP*.so
echo "After stripping:"
ls -l ~/conda_pkgs_dir/ocp-*/lib/python*/site-packages/OCP*.so /usr/share/miniconda3/envs/cadquery-ocp/lib/python*/site-packages/OCP*.so
- name: Pip Deps Setup 1
shell: bash -l {0}
run: |
python -m pip install --upgrade pip
python -m pip install build setuptools wheel requests delocate delvewheel
- name: Pip Deps Setup 2
shell: bash -l {0}
if: ${{ matrix.os == 'ubuntu-22.04' }}
run: |
pip install auditwheel patchelf
# - name: Manylinux Build 1
# shell: bash -l {0}
# if: ${{ matrix.os == 'ubuntu-22.04' }}
# run: |
# export VTK_MANYLINUX=/tmp/vtk-manylinux
# pip install -t $VTK_MANYLINUX --no-deps /tmp/vtk-wheels/*-cp${{ matrix.python-version }}/vtk-*.whl
# python -m build --no-isolation --wheel
- name: Conda-only Build
shell: bash -l {0}
run: |
python -m build --no-isolation --wheel
- name: Print info
shell: bash -l {0}
run: |
conda info
conda list --explicit
echo '${{ github.event_name }} ${{ github.ref }}'
# - name: Test wheel
# shell: bash -l {0}
# run: |
# conda deactivate
# conda create --yes -n cadquerytest python=${{ matrix.python-version }}
# conda activate cadquerytest
# ls dist/*
# pip install dist/*.whl
# python -c "import OCP;print('OCP imported successfully')"
# see https://github.com/marketplace/actions/upload-a-build-artifact
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: cadquery-ocp-${{ matrix.os }}-cp${{ matrix.python-version }}
path: dist/*.whl