From a97c0baada4b844500ad04a9787f1b2f6b3d2be9 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 6 Jun 2026 22:29:32 -0400 Subject: [PATCH 1/3] Run one debug build in CI --- .github/workflows/dist.yml | 13 ++++++++++++- devtools/ci.py | 8 +++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index e45c26834..371ab2d5b 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -166,19 +166,29 @@ jobs: - '3.12' - '3.13' - '3.14' + publish: + - true include: - os: ubuntu-24.04-arm python_version: '3.11' + publish: true container: python:3.11-bookworm - os: ubuntu-24.04-arm python_version: '3.12' + publish: true container: python:3.12-bookworm - os: ubuntu-24.04-arm python_version: '3.13' + publish: true container: python:3.13-bookworm - os: ubuntu-24.04-arm python_version: '3.14' + publish: true container: python:3.14-bookworm + - os: ubuntu-24.04 + python_version: '3.14' + publish: false + build_arg: '--buildtype=debug' container: ${{ matrix.container }} @@ -250,7 +260,7 @@ jobs: - name: Build + test wheels run: | - python -m devtools ci build-meson-wheels + python -m devtools ci build-meson-wheels ${{ matrix.build_arg }} env: SCCACHE_WEBDAV_USERNAME: ${{ secrets.WPI_ARTIFACTORY_USERNAME }} SCCACHE_WEBDAV_PASSWORD: ${{ secrets.WPI_ARTIFACTORY_TOKEN }} @@ -277,6 +287,7 @@ jobs: with: name: "pypi-meson-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python_version }}" path: dist + if: matrix.publish # # Build robot/raspbian wheels diff --git a/devtools/ci.py b/devtools/ci.py index f688c1ace..e2104152b 100644 --- a/devtools/ci.py +++ b/devtools/ci.py @@ -91,8 +91,11 @@ def build_other_wheels(ctx: Context, no_test: bool): "--cross", help="meson cross.txt file (installed at ~/.local/share/meson/cross/FILENAME)", ) +@click.option("--buildtype", help="meson build type (debug, release, etc)") @click.pass_obj -def build_meson_wheels(ctx: Context, no_test: bool, cross: T.Optional[str]): +def build_meson_wheels( + ctx: Context, no_test: bool, cross: T.Optional[str], buildtype: T.Optional[str] +): """ Builds wheels that use meson, runs tests. @@ -114,6 +117,9 @@ def build_meson_wheels(ctx: Context, no_test: bool, cross: T.Optional[str]): if cross: config_settings.append(f"setup-args=--cross-file={cross}") + if buildtype: + config_settings.append(f"setup-args=-Dbuildtype={buildtype}") + for project in ctx.subprojects.values(): if not project.is_meson_project(): continue From a2a92631b9fc379a066fd2f376ed6e4e134814f1 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 6 Jun 2026 23:00:46 -0400 Subject: [PATCH 2/3] Fail CI if update-yaml needs to modify files - This was the original intent --- devtools/ci.py | 5 +++-- devtools/subproject.py | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/devtools/ci.py b/devtools/ci.py index e2104152b..ebabebb86 100644 --- a/devtools/ci.py +++ b/devtools/ci.py @@ -189,8 +189,9 @@ def scan_headers(ctx: Context): @ci.command() +@click.option("--write", default=False, is_flag=True) @click.pass_obj -def update_yaml(ctx: Context): +def update_yaml(ctx: Context, write: bool): """Run update-yaml on all projects""" failed_subprojects = 0 for project in ctx.subprojects.values(): @@ -199,7 +200,7 @@ def update_yaml(ctx: Context): print("- Skipping", project.name, file=sys.stderr) continue - if not project.update_yaml(): + if not project.update_yaml(write): failed_subprojects += 1 if failed_subprojects != 0: diff --git a/devtools/subproject.py b/devtools/subproject.py index ec64865c5..a90143707 100644 --- a/devtools/subproject.py +++ b/devtools/subproject.py @@ -82,14 +82,16 @@ def scan_headers(self): ) return result.returncode == 0 - def update_yaml(self): + def update_yaml(self, write: bool): """Resyncs the yaml files with their header files""" + args = ["--write"] if write else [] + result = run_cmd( self.ctx.python, "-m", "semiwrap", "update-yaml", - "--write", + *args, cwd=self.path, check=False, ) From cba04304ef5a6317bcbdfd36a109e5eb834bebec Mon Sep 17 00:00:00 2001 From: David Vo Date: Sun, 7 Jun 2026 12:39:16 +1000 Subject: [PATCH 3/3] [ci] Update actions to node 24 --- .github/workflows/dist.yml | 56 ++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 371ab2d5b..16a45ab1a 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -47,10 +47,10 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - uses: psf/black@stable - - uses: actions/setup-python@v5 + - uses: actions/setup-python@v6 with: python-version: "3.13" @@ -77,12 +77,12 @@ jobs: build-pure: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.13' @@ -96,7 +96,7 @@ jobs: run: | ./rdev.sh ci build-pure-wheels - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: "pypi-pure" path: dist @@ -120,13 +120,13 @@ jobs: container: ${{ matrix.container }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install python if: matrix.os != 'ubuntu-24.04-arm' - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: '3.13' @@ -140,7 +140,7 @@ jobs: run: | ./rdev.sh ci build-other-wheels - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: "pypi-other-${{ runner.os }}-${{ runner.arch }}" path: dist @@ -193,23 +193,23 @@ jobs: container: ${{ matrix.container }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Install python if: matrix.os != 'ubuntu-24.04-arm' - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ matrix.python_version }} - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: "pypi-other-${{ runner.os }}-*" path: dist-other merge-multiple: true - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: "pypi-pure" path: dist-other @@ -244,11 +244,7 @@ jobs: fi - name: Setup sccache - uses: mozilla-actions/sccache-action@v0.0.9 - # The sccache 0.13.0 release is missing intel mac builds - # see - with: - version: "v0.12.0" + uses: mozilla-actions/sccache-action@v0.0.10 - name: Install deps run: | @@ -283,7 +279,7 @@ jobs: run: | python -m devtools ci update-yaml - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: "pypi-meson-${{ runner.os }}-${{ runner.arch }}-${{ matrix.python_version }}" path: dist @@ -307,7 +303,7 @@ jobs: image: "${{ matrix.os.container }}" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 @@ -324,7 +320,7 @@ jobs: run: | /build/venv/bin/cross-python -m devtools ci build-other-wheels --no-test - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: cross-other-${{ matrix.os.name }} path: dist @@ -344,11 +340,11 @@ jobs: image: "${{ matrix.os.container }}" steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: name: "cross-other-${{ matrix.os.base }}" path: dist-other @@ -374,7 +370,7 @@ jobs: /build/venv/bin/cross-python -m devtools ci build-meson-wheels --no-test --cross=cross.txt - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: cross-meson-${{ matrix.os.name }} path: dist @@ -389,7 +385,7 @@ jobs: if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: cross-meson-* path: dist/ @@ -408,7 +404,7 @@ jobs: if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: cross-other-* path: dist/ @@ -430,17 +426,17 @@ jobs: if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: pypi-meson-* path: dist/ merge-multiple: true - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: pypi-pure path: dist/ @@ -459,11 +455,11 @@ jobs: if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: fetch-depth: 0 - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: pattern: pypi-other-* path: dist/