name: Wheel build on: release: types: [created] jobs: sdist: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - name: Install lib dependencies run: sudo apt-get update -y -q && sudo apt-get install -y -q "libxml2=2.9.13*" "libxml2-dev=2.9.13*" libxslt1.1 libxslt1-dev - name: Install Python dependencies run: python -m pip install -U pip setuptools && python -m pip install -U docutils pygments sphinx sphinx-rtd-theme -r requirements.txt - name: Build docs and sdist run: make html sdist env: { STATIC_DEPS: false } - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: dist/*.tar.gz - name: Upload sdist uses: actions/upload-artifact@v3 with: name: sdist path: dist/*.tar.gz - name: Upload website uses: actions/upload-artifact@v3 with: name: website path: doc/html Linux: runs-on: ubuntu-latest strategy: # Allows for matrix sub-jobs to fail without canceling the rest fail-fast: false matrix: image: - manylinux1_x86_64 - manylinux1_i686 #- manylinux2010_x86_64 #- manylinux2010_i686 - manylinux_2_24_x86_64 - manylinux_2_24_i686 - manylinux_2_24_aarch64 - musllinux_1_1_x86_64 - musllinux_1_1_aarch64 #- manylinux_2_24_ppc64le #- manylinux_2_24_ppc64le #- manylinux_2_24_s390x pyversion: ["*"] exclude: - image: manylinux_2_24_aarch64 pyversion: "*" - image: musllinux_1_1_aarch64 pyversion: "*" include: - image: manylinux2014_aarch64 pyversion: "cp36*" - image: manylinux_2_24_aarch64 pyversion: "cp37*" - image: manylinux_2_24_aarch64 pyversion: "cp38*" - image: manylinux_2_24_aarch64 pyversion: "cp39*" - image: manylinux_2_24_aarch64 pyversion: "cp310*" - image: manylinux_2_24_aarch64 pyversion: "cp311*" - image: musllinux_1_1_aarch64 pyversion: "cp36*" - image: musllinux_1_1_aarch64 pyversion: "cp37*" - image: musllinux_1_1_aarch64 pyversion: "cp38*" - image: musllinux_1_1_aarch64 pyversion: "cp39*" - image: musllinux_1_1_aarch64 pyversion: "cp310*" - image: musllinux_1_1_aarch64 pyversion: "cp311*" steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - name: Install dependencies run: python -m pip install -r requirements.txt - name: Cache [libs] uses: actions/cache@v3 with: path: | libs/*.xz libs/*.gz libs/*.zip key: linux-libs - name: Build Linux wheels run: make sdist wheel_${{ matrix.image }} env: { STATIC_DEPS: true, PYTHON_BUILD_VERSION: "${{ matrix.pyversion }}" } - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: wheelhouse/*/*-m*linux*.whl # manylinux / musllinux - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels-${{ matrix.image }} path: wheelhouse/*/*-m*linux*.whl # manylinux / musllinux if-no-files-found: ignore non-Linux: strategy: # Allows for matrix sub-jobs to fail without canceling the rest fail-fast: false matrix: os: [macos-latest, windows-2019] #os: [macos-10.15, windows-latest] #os: [macos-10.15, macOS-M1] #os: [macos-10.15] python-version: ["2.7", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "pypy-3.8-v7.3.7", "pypy-3.9-v7.3.9"] include: - os: windows-2016 python-version: 2.7 exclude: - os: windows-2019 python-version: 2.7 # needs older image runs-on: ${{ matrix.os }} env: { LIBXML2_VERSION: 2.10.3, LIBXSLT_VERSION: 1.1.37, MACOSX_DEPLOYMENT_TARGET: 10.15 } steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install MacOS dependencies if: startsWith(runner.os, 'macos-') run: | brew install automake libtool ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize - name: Install dependencies run: python -m pip install setuptools wheel -r requirements.txt - name: Cache [libs] uses: actions/cache@v3 if: startsWith(runner.os, 'macos-') with: path: | libs/*.xz libs/*.gz libs/*.zip key: non-linux-libs - name: Build wheels run: make sdist wheel env: { STATIC_DEPS: true, RUN_TESTS: true } - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: dist/lxml-*.whl - name: Upload wheels uses: actions/upload-artifact@v3 with: name: wheels-${{ matrix.os }} path: dist/lxml-*.whl if-no-files-found: ignore