Fix/fix mutable #4
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 Wheels | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| tags: | |
| - "v*.*.*" | |
| jobs: | |
| build_sdist: | |
| name: "sdist" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install poetry | |
| uses: snok/install-poetry@v1 | |
| - name: Build sdist | |
| run: | | |
| poetry self add "poetry-dynamic-versioning[plugin]" | |
| poetry build --format=sdist | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-sdist | |
| path: dist/*.tar.gz | |
| build_wheels_windows: | |
| name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows-latest] | |
| cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"] | |
| cibw_archs: ["AMD64", "x86", "ARM64"] | |
| exclude: | |
| - os: windows-latest | |
| cibw_build: "cp38-*" | |
| cibw_archs: "ARM64" | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install poetry | |
| uses: snok/install-poetry@v1 | |
| with: | |
| virtualenvs-create: false | |
| virtualenvs-in-project: false | |
| # Add Visual Studio build tools | |
| - name: Install Visual Studio Build Tools | |
| uses: microsoft/setup-msbuild@v2 | |
| - name: Add MSBuild to PATH | |
| uses: microsoft/setup-msbuild@v2 | |
| with: | |
| msbuild-architecture: x64 | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v2.16.5 | |
| env: | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_BUILD: ${{ matrix.cibw_build }} | |
| CIBW_TEST_SKIP: "*-win_arm64" | |
| CIBW_TEST_REQUIRES: pytest pandas | |
| CIBW_TEST_COMMAND: | | |
| dir /s {package} | |
| pytest {package}/tests -v | |
| CIBW_BEFORE_BUILD: | | |
| python -m pip install --upgrade pip | |
| python -m pip install setuptools wheel | |
| python -m pip list | |
| CIBW_BUILD_VERBOSITY: 3 | |
| CIBW_ENVIRONMENT: | | |
| DISTUTILS_USE_SDK=1 | |
| MSSdk=1 | |
| PYTHONVERBOSE=1 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ env.CIBW_BUILD_SANITIZED }}-${{ matrix.cibw_archs }} | |
| path: wheelhouse/*.whl | |
| build_wheels_linux: | |
| name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest] | |
| cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"] | |
| cibw_archs: ["x86_64", "i686", "aarch64", "ppc64le"] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Sanitize matrix.cibw_build | |
| id: sanitize_build | |
| run: echo "CIBW_BUILD_SANITIZED=$(echo '${{ matrix.cibw_build }}' | sed 's/\*/_/g')" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Set up QEMU | |
| if: matrix.cibw_archs != 'x86_64' | |
| uses: docker/setup-qemu-action@v3 | |
| with: | |
| platforms: all | |
| # Add Docker debug info | |
| - name: Docker Info | |
| run: | | |
| docker info | |
| docker version | |
| docker ps | |
| docker system df | |
| - name: Set up python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install poetry | |
| uses: snok/install-poetry@v1 | |
| with: | |
| virtualenvs-create: false | |
| virtualenvs-in-project: false | |
| # Add system dependencies | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y build-essential python3-dev | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v2.16.5 | |
| env: | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_BUILD: ${{ matrix.cibw_build }} | |
| CIBW_TEST_REQUIRES: pytest pandas | |
| CIBW_TEST_COMMAND: | | |
| ls -la {package} | |
| python -c "import sys; print('Python:', sys.version)" | |
| python -c "import newtype; print('newtype:', newtype.__file__)" | |
| pytest {package}/tests -v | |
| CIBW_BEFORE_BUILD: | | |
| python -m pip install --upgrade pip | |
| python -m pip install setuptools wheel | |
| python -m pip list | |
| echo "=== Environment ===" | |
| env | sort | |
| CIBW_REPAIR_WHEEL_COMMAND_LINUX: | | |
| # Print system information | |
| echo "=== System Information ===" | |
| uname -a | |
| cat /etc/os-release | |
| # Print wheel information | |
| echo "=== Wheel Information ===" | |
| ls -l {wheel} | |
| unzip -l {wheel} | |
| # Print detailed wheel dependencies | |
| echo "=== Original Wheel Dependencies ===" | |
| auditwheel show {wheel} | |
| find {wheel} -name "*.so" -exec ldd {} \; | |
| echo "=== Attempting wheel repair ===" | |
| # Try repair with maximum verbosity | |
| auditwheel -v repair -w {dest_dir} {wheel} || cp {wheel} {dest_dir}/ | |
| CIBW_BUILD_VERBOSITY: 3 | |
| CIBW_ENVIRONMENT: | | |
| PYTHONVERBOSE=1 | |
| CFLAGS="-v" | |
| LDFLAGS="-v" | |
| LD_LIBRARY_PATH="/usr/local/lib" | |
| PYTHONPATH="/usr/local/lib/python3/dist-packages" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ env.CIBW_BUILD_SANITIZED }}-${{ matrix.cibw_archs }} | |
| path: wheelhouse/*.whl | |
| build_wheels_macos: | |
| name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-13] | |
| cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"] | |
| cibw_archs: ["x86_64"] | |
| env: | |
| SYSTEM_VERSION_COMPAT: 0 | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Sanitize matrix.cibw_build | |
| id: sanitize_build | |
| run: echo "CIBW_BUILD_SANITIZED=$(echo '${{ matrix.cibw_build }}' | sed 's/\*/_/g')" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Set up python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install poetry | |
| uses: snok/install-poetry@v1 | |
| with: | |
| version: 1.8.5 | |
| virtualenvs-create: false | |
| virtualenvs-in-project: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v2.16.5 | |
| env: | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_BUILD: ${{ matrix.cibw_build }} | |
| CIBW_TEST_REQUIRES: pytest pandas | |
| CIBW_TEST_COMMAND: | | |
| ls -R {package} | |
| python -c "import newtype; print('newtype location:', newtype.__file__)" | |
| python -c "from newtype.extensions import newtypeinit; print('newtypeinit exists')" | |
| pytest {package}/tests -v | |
| CIBW_BEFORE_BUILD: | | |
| python -m pip install --upgrade pip | |
| python -m pip install setuptools wheel | |
| python -m pip list | |
| CIBW_REPAIR_WHEEL_COMMAND: | | |
| echo "=== Wheel Contents Before Repair ===" | |
| unzip -l {wheel} | |
| delocate-listdeps --all {wheel} | |
| delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v {wheel} | |
| echo "=== Wheel Contents After Repair ===" | |
| unzip -l {dest_dir}/*.whl | |
| CIBW_BUILD_VERBOSITY: 3 | |
| CIBW_ENVIRONMENT: | | |
| MACOSX_DEPLOYMENT_TARGET=10.14 | |
| ARCHFLAGS="-arch x86_64" | |
| PYTHONVERBOSE=1 | |
| CFLAGS="-v" | |
| LDFLAGS="-v" | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ env.CIBW_BUILD_SANITIZED }}-${{ matrix.cibw_archs }} | |
| path: wheelhouse/*.whl | |
| build_wheels_macos_arm64: | |
| name: "${{ matrix.os }} ${{ matrix.cibw_archs }} ${{ matrix.cibw_build }}" | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [macos-13] | |
| cibw_build: ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*"] | |
| cibw_archs: ["arm64"] | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Sanitize matrix.cibw_build | |
| id: sanitize_build | |
| run: echo "CIBW_BUILD_SANITIZED=$(echo '${{ matrix.cibw_build }}' | sed 's/\*/_/g')" >> $GITHUB_ENV | |
| shell: bash | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@v2.16.5 | |
| env: | |
| CIBW_BUILD: ${{ matrix.cibw_build }} | |
| CIBW_ARCHS: ${{ matrix.cibw_archs }} | |
| CIBW_TEST_SKIP: "*-macosx_arm64" | |
| CIBW_TEST_REQUIRES: pytest | |
| CIBW_TEST_COMMAND: pytest {package}/tests | |
| CIBW_REPAIR_WHEEL_COMMAND: | | |
| echo "Target delocate archs: {delocate_archs}" | |
| ORIGINAL_WHEEL={wheel} | |
| echo "Running delocate-listdeps to list linked original wheel dependencies" | |
| delocate-listdeps --all $ORIGINAL_WHEEL | |
| echo "Renaming .whl file when architecture is 'macosx_arm64'" | |
| RENAMED_WHEEL=${ORIGINAL_WHEEL//x86_64/arm64} | |
| echo "Wheel will be renamed to $RENAMED_WHEEL" | |
| mv $ORIGINAL_WHEEL $RENAMED_WHEEL | |
| echo "Running delocate-wheel command on $RENAMED_WHEEL" | |
| delocate-wheel --require-archs {delocate_archs} -w {dest_dir} -v $RENAMED_WHEEL | |
| echo "Running delocate-listdeps to list linked wheel dependencies" | |
| WHEEL_SIMPLE_FILENAME="${RENAMED_WHEEL##*/}" | |
| delocate-listdeps --all {dest_dir}/$WHEEL_SIMPLE_FILENAME | |
| echo "DONE." | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheels-${{ matrix.os }}-${{ env.CIBW_BUILD_SANITIZED }}-${{ matrix.cibw_archs }} | |
| path: ./wheelhouse/*.whl | |
| upload_to_pypi: | |
| if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') | |
| needs: | |
| [ | |
| "build_sdist", | |
| "build_wheels_windows", | |
| "build_wheels_linux", | |
| "build_wheels_macos", | |
| "build_wheels_macos_arm64", | |
| ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| path: wheels | |
| pattern: wheels-* | |
| merge-multiple: true | |
| - uses: pypa/gh-action-pypi-publish@release/v1 | |
| with: | |
| password: ${{ secrets.PYPI_TOKEN }} | |
| packages_dir: wheels/ | |
| skip_existing: true |