Skip to content

fix: 'meson build' deprecation #202

fix: 'meson build' deprecation

fix: 'meson build' deprecation #202

Workflow file for this run

name: Publish to PyPI
on:
pull_request:
push:
release:
types: [published]
workflow_dispatch:
jobs:
build-wayland:
name: Build Wayland libraries
runs-on: ubuntu-24.04
container: quay.io/pypa/manylinux_2_34_x86_64
env:
wayland-version: "1.23.0"
wayland-protocols-version: "1.36"
python-version: "3.13"
steps:
- name: Install dependencies
run: |
yum -y install \
libffi-devel \
libxml2-devel \
ninja-build \
wget
- name: Download and unpack Wayland source
run: |
wget $WAYLAND_URL
wget $WAYLAND_PROTOCOLS_URL
tar -xJf wayland-${{ env.wayland-version }}.tar.xz
tar -xJf wayland-protocols-${{ env.wayland-protocols-version }}.tar.xz
env:
WAYLAND_URL: https://gitlab.freedesktop.org/wayland/wayland/-/releases/${{ env.wayland-version }}/downloads/wayland-${{ env.wayland-version }}.tar.xz
WAYLAND_PROTOCOLS_URL: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/releases/${{ env.wayland-protocols-version }}/downloads/wayland-protocols-${{ env.wayland-protocols-version }}.tar.xz
- name: Set environment variables
run: |
echo "CPATH=/wayland/usr/include" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/wayland/usr/lib" >> $GITHUB_ENV
echo "LIBRARY_PATH=/wayland/usr/lib" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=/wayland/usr/share/pkgconfig:/wayland/usr/lib/pkgconfig" >> $GITHUB_ENV
- name: Set python version
run: |
PYTHON_ROOT=$(find /opt/python -name "cp${PYTHON_VERSION/./}-*" -not -name "*t")
echo "${PYTHON_ROOT}/bin" >> $GITHUB_PATH
shell: bash
env:
PYTHON_VERSION: ${{ env.python-version }}
- name: Install python dependencies
run: |
pip install meson ninja
- name: Build Wayland
working-directory: wayland-${{ env.wayland-version }}
run: |
meson setup build --prefix=/usr -Ddocumentation=false
ninja -C build
DESTDIR=/wayland ninja -C build install
ninja -C build install
- name: Build Wayland protocols
working-directory: wayland-protocols-${{ env.wayland-protocols-version }}
run: |
meson setup build --prefix=/usr
ninja -C build
DESTDIR=/wayland ninja -C build install
- name: Create artifact
run: tar czf /wayland.tar.gz -C /wayland/ .
- name: Upload built libraries
uses: actions/upload-artifact@v4
with:
name: wayland
path: /wayland.tar.gz
if-no-files-found: error
build-wheel-cpython:
name: Build CPython wheels
runs-on: ubuntu-24.04
container: quay.io/pypa/manylinux_2_34_x86_64
needs: build-wayland
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- name: Download wayland libraries
uses: actions/download-artifact@v4
with:
name: wayland
- name: Unpack wayland artifact
run: tar xf wayland.tar.gz -C /
- name: Set python version
run: |
PYTHON_ROOT=$(find /opt/python -name "cp${PYTHON_VERSION/./}-*" -not -name "*t")
echo "${PYTHON_ROOT}/bin" >> $GITHUB_PATH
shell: bash
env:
PYTHON_VERSION: ${{ matrix.python-version }}
- uses: actions/checkout@v4
- name: Install Python dependencies
run: |
python --version
python -m pip install auditwheel build
- name: Build wheels
run: |
python -m build --wheel
auditwheel repair --plat manylinux_2_34_x86_64 -w output_wheels dist/pywayland-*.whl
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-version }}
path: output_wheels/*.whl
build-wheel-pypy:
name: Build PyPy wheels
runs-on: ubuntu-24.04
container: quay.io/pypa/manylinux_2_34_x86_64
needs: build-wayland
strategy:
fail-fast: false
matrix:
python-version: ["3.11"]
pypy-version: ["7.3"]
steps:
- name: Download wayland libraries
uses: actions/download-artifact@v4
with:
name: wayland
- name: Unpack wayland artifact
run: tar xf wayland.tar.gz -C /
- name: Set python version
run: |
ls /opt/python/
PYTHON_ROOT=$(find /opt/python -name "pp${PYTHON_VERSION/./}-*_pp${PP_VERSION/./}" -not -name "*t")
echo "${PYTHON_ROOT}"
echo "${PYTHON_ROOT}/bin" >> $GITHUB_PATH
shell: bash
env:
PYTHON_VERSION: ${{ matrix.python-version }}
PP_VERSION: ${{ matrix.pypy-version }}
- uses: actions/checkout@v4
- name: Install Python dependencies
run: |
python --version
python -m pip install auditwheel build
- name: Build wheels
run: |
python -m build --wheel
auditwheel repair --plat manylinux_2_34_x86_64 -w output_wheels dist/pywayland-*.whl
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-pypy-${{ matrix.python-version }}
path: output_wheels/*.whl
test-wheel:
name: Test wheels
runs-on: ubuntu-24.04
needs: [build-wheel-cpython, build-wheel-pypy]
strategy:
fail-fast: false
matrix:
python-version:
- "3.9"
- "3.10"
- "3.11"
- "3.12"
- "3.13"
- "pypy-3.11"
steps:
- name: Download wheels
uses: actions/download-artifact@v4
with:
name: wheels-${{ matrix.python-version }}
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install wheel
run: pip install pywayland-*.whl
- name: Check installation
shell: python
run: |
import pywayland
print(pywayland.__wayland_version__)
build-source:
name: Build source package
runs-on: ubuntu-24.04
container: quay.io/pypa/manylinux_2_34_x86_64
needs: build-wayland
env:
python-version: "3.13"
steps:
- name: Download wayland libraries
uses: actions/download-artifact@v4
with:
name: wayland
- name: Unpack wayland artifact
run: tar xf wayland.tar.gz -C /
- name: Set python version
run: |
PYTHON_ROOT=$(find /opt/python -name "cp${PYTHON_VERSION/./}-*" -not -name "*t")
echo "${PYTHON_ROOT}/bin" >> $GITHUB_PATH
shell: bash
env:
PYTHON_VERSION: ${{ env.python-version }}
- uses: actions/checkout@v4
- name: Install Python dependencies
run: |
python --version
python -m pip install build
- name: Build source
run: |
python -m build --sdist
- name: Upload source
uses: actions/upload-artifact@v4
with:
name: source
path: dist/*.tar.gz
upload-wheel:
name: Upload wheels
runs-on: ubuntu-24.04
needs: [test-wheel, build-source]
steps:
- name: Download wheels
uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist/
merge-multiple: true
- name: Download source
uses: actions/download-artifact@v4
with:
name: source
path: dist/
- name: Check artifacts
run: ls dist/
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: github.event_name == 'release'
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
- name: Publish package to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
with:
user: __token__
password: ${{ secrets.TEST_PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true