Merge pull request #1 from Uzithei/macos #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and Release dlib Wheels Sequentially | |
| on: | |
| push: | |
| tags: | |
| - 'v*' | |
| workflow_dispatch: | |
| jobs: | |
| build-x86_64: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.11', '3.12'] | |
| timeout-minutes: 200 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y --no-install-recommends \ | |
| build-essential cmake libboost-dev libopenblas-dev liblapack-dev \ | |
| libx11-dev libgtk-3-dev libjpeg-dev libpng-dev libtiff-dev \ | |
| libatlas-base-dev pkg-config | |
| - name: Install Python build tools | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install build wheel setuptools auditwheel | |
| - name: Clone dlib | |
| run: | | |
| # Use master branch which has updated pybind11 | |
| git clone --depth 1 https://github.com/davisking/dlib.git dlib_src | |
| - name: Build wheel | |
| run: | | |
| cd dlib_src | |
| python setup.py bdist_wheel | |
| # Check if wheel was created | |
| if [ ! -f dist/*.whl ]; then | |
| echo "Wheel build failed - no wheel found in dist/" | |
| ls -la dist/ || echo "dist/ directory not found" | |
| exit 1 | |
| fi | |
| - name: Repair wheel (manylinux) | |
| run: | | |
| cd dlib_src | |
| mkdir -p dist_repaired/ | |
| # auditwheel may fail on ubuntu-latest, so fallback to copy | |
| auditwheel repair dist/*.whl -w dist_repaired/ || cp dist/*.whl dist_repaired/ | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dlib-py${{ matrix.python-version }}-linux-x86_64 | |
| path: dlib_src/dist_repaired/*.whl | |
| retention-days: 30 | |
| build-aarch64: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.11', '3.12'] | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: arm64 | |
| - name: Build wheel in Docker | |
| run: | | |
| docker run --rm --platform linux/arm64 \ | |
| -v ${{ github.workspace }}:/workspace \ | |
| -w /workspace \ | |
| quay.io/pypa/manylinux2014_aarch64 \ | |
| bash -c ' | |
| export PYTHON_VERSION=${{ matrix.python-version }} | |
| # Install system dependencies | |
| yum install -y \ | |
| cmake3 boost-devel openblas-devel lapack-devel \ | |
| libX11-devel gtk3-devel \ | |
| libpng-devel libjpeg-devel libtiff-devel git \ | |
| gcc gcc-c++ make atlas-devel | |
| # Set up Python based on version | |
| if [ "$PYTHON_VERSION" = "3.11" ]; then | |
| PYBIN=/opt/python/cp311-cp311/bin | |
| elif [ "$PYTHON_VERSION" = "3.12" ]; then | |
| PYBIN=/opt/python/cp312-cp312/bin | |
| else | |
| echo "Unsupported Python version: $PYTHON_VERSION" | |
| exit 1 | |
| fi | |
| $PYBIN/pip install --upgrade pip wheel setuptools auditwheel | |
| # Clone dlib master (has updated pybind11 for Python 3.11+) | |
| git clone --depth 1 https://github.com/davisking/dlib.git dlib_src | |
| cd dlib_src | |
| # Build wheel | |
| $PYBIN/python setup.py bdist_wheel | |
| # Create output directory and repair wheel | |
| mkdir -p /workspace/dist_final/ | |
| if [ -f dist/*.whl ]; then | |
| $PYBIN/auditwheel repair dist/*.whl -w /workspace/dist_final/ | |
| else | |
| echo "No wheel found to repair" | |
| ls -la dist/ | |
| exit 1 | |
| fi | |
| ' | |
| - name: Upload build artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: dlib-py${{ matrix.python-version }}-linux-aarch64 | |
| path: dist_final/*.whl | |
| retention-days: 30 | |
| release: | |
| runs-on: ubuntu-latest | |
| needs: [build-x86_64, build-aarch64] | |
| if: startsWith(github.ref, 'refs/tags/') | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts/ | |
| - name: Prepare wheels | |
| run: | | |
| mkdir -p wheels | |
| find artifacts -name "*.whl" -exec cp {} wheels/ \; | |
| echo "Built wheels:" | |
| ls -lh wheels/ | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: Release ${{ github.ref_name }} | |
| body: | | |
| Prebuilt dlib wheels for Linux (x86_64 and aarch64) on Python 3.11 and 3.12 | |
| **Installation:** | |
| pip install dlib-*.whl | |
| Choose the wheel that matches your: | |
| - Python version (cp311 or cp312) | |
| - Architecture (x86_64 or aarch64) | |
| files: wheels/*.whl | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |