Skip to content

fix: DART 7 iterator invalidation SEGFAULT in Subject/Observer notification loops #6980

fix: DART 7 iterator invalidation SEGFAULT in Subject/Observer notification loops

fix: DART 7 iterator invalidation SEGFAULT in Subject/Observer notification loops #6980

Workflow file for this run

---
name: Publish dartpy
"on":
push:
branches:
- "**"
tags:
- "v*.*.*"
pull_request:
branches:
- "**"
schedule:
- cron: "0 10 * * 0,3"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name != 'schedule' && github.ref != 'refs/heads/main' }}
jobs:
changes:
runs-on: ubuntu-latest
outputs:
code: ${{ steps.filter.outputs.code }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
code:
- '**'
- '!.github/workflows/cache_*.yml'
- '!docker/dev/**'
- '!docs/**'
- '!.readthedocs.yml'
- '!tutorials/**'
- '!**/*.md'
- '!**/*.rst'
- '!**/*.po'
- '!**/*.pot'
build_wheels:
needs: changes
if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' || needs.changes.outputs.code == 'true'
name: Wheels | ${{ matrix.os }} Py${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
env:
# Keep parallelism modest to avoid posix_spawn failures on hosted runners
DART_PARALLEL_JOBS: 8
CMAKE_BUILD_PARALLEL_LEVEL: 8
# Note: No dedicated container image is used; all platforms rely on pixi environments.
# Linux wheels: auditwheel derives the glibc compatibility tag from bundled symbols.
# macOS wheels: delocate bundles dylibs. Windows wheels: delvewheel bundles DLLs.
strategy:
fail-fast: false
matrix:
include:
# Linux builds
- os: ubuntu-latest
python-version: "312"
- os: ubuntu-latest
python-version: "313"
skip-on-commit: true
- os: ubuntu-latest
python-version: "314"
skip-on-commit: true
# macOS builds
- os: macos-latest
python-version: "312"
- os: macos-latest
python-version: "313"
skip-on-commit: true
- os: macos-latest
python-version: "314"
skip-on-commit: true
# Windows builds
- os: windows-latest
python-version: "312"
- os: windows-latest
python-version: "313"
skip-on-commit: true
- os: windows-latest
python-version: "314"
skip-on-commit: true
steps:
- uses: actions/checkout@v6
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
- name: Setup pixi (CI)
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
uses: ./.github/actions/setup-pixi-ci
with:
pixi-version: latest
pixi-bin-path: ${{ runner.temp }}/pixi/bin/pixi${{ runner.os == 'Windows' && '.exe' || '' }}
install-args: -e py${{ matrix.python-version }}-wheel
- name: Configure environment for compiler cache
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
uses: ./.github/actions/configure-compiler-cache
- name: Build wheel
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
env:
# Work around occasional sccache spawn failures on ubuntu-latest + Python 3.14 wheel builds.
DART_DISABLE_COMPILER_CACHE: ${{ (matrix.os == 'ubuntu-latest' && matrix.python-version == '314') && 'ON' || 'OFF' }}
run: pixi run -e py${{ matrix.python-version }}-wheel wheel-build
- name: Repair wheel
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
run: pixi run -e py${{ matrix.python-version }}-wheel wheel-repair
- name: Verify wheel
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
run: pixi run -e py${{ matrix.python-version }}-wheel wheel-verify
- name: Test wheel
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
run: pixi run -e py${{ matrix.python-version }}-wheel wheel-test
- uses: actions/upload-artifact@v6
if: (matrix.skip-on-commit != true) || github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/v')
with:
path: ./dist/*.whl
name: ${{ matrix.os }}-py${{ matrix.python-version }}
upload_pypi:
name: Wheels | Publish to PyPI
needs: [build_wheels]
runs-on: ubuntu-latest
# Publish all tagged versions (stable and dev) to production PyPI
# Examples: v7.0.0, v7.0.0.dev0, v7.0.0.alpha1, v7.0.0.beta1, v7.0.0.rc1
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/download-artifact@v7
with:
# unpacks default artifact into dist/
# if `name: artifact` is omitted, the action will create extra parent dir
# name: artifact
path: dist
merge-multiple: true
- name: List files in dist
run: ls -lR dist/
- uses: pypa/gh-action-pypi-publish@v1.13.0
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
skip-existing: true