Add a `--tpt-proto=tipc` CI matrix leg
Plan 01 §7.3's last item. The module ships w/ the standard
ubuntu kernel package but is NOT loaded by default, so the leg
gets a gated `sudo modprobe tipc` step plus a verify that
asserts `TIPCAddress.is_available()` before the suite runs —
i.e. a missing module fails w/ an actionable line instead of a
few hundred connect timeouts.
Deats,
- `tipc` added to the `tpt_proto` matrix axis, and excluded on
`macos-latest` bc `AF_TIPC` is a linux-kernel proto that
doesn't exist on darwin at all.
- `continue-on-error` is scoped to just this leg via
`${{ matrix.tpt_proto == 'tipc' }}` — GH's runners have never
been asked to `modprobe` for us, so it lands NON-blocking
until it's had a few green runs. Drop the gate then.
- if the runners do refuse, the documented fallback is a
container job w/ `--cap-add NET_ADMIN`.
Cross-node (bearer) TIPC still can't be CI'd; that stays the
manual smoke test in `examples/multihost/tipc_cluster/README.md`.
Partially addresses #420.
(this patch was generated in some part by `claude-code` using `claude-opus-5` (`anthropic`))
wkt/pr493_review
parent
1526372e37
commit
2d082373bd
|
|
@ -92,6 +92,12 @@ jobs:
|
|||
timeout-minutes: 16
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
# XXX the `tipc` leg stays NON-blocking until the `modprobe`
|
||||
# step below is proven stable on GH's runners; flip this off
|
||||
# once it's had a few green runs. See plan 01 §7.3 in
|
||||
# `ai/tpt-backends/01_tipc_backend.md`.
|
||||
continue-on-error: ${{ matrix.tpt_proto == 'tipc' }}
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
|
|
@ -117,6 +123,7 @@ jobs:
|
|||
tpt_proto: [
|
||||
'tcp',
|
||||
'uds',
|
||||
'tipc',
|
||||
]
|
||||
# https://github.com/orgs/community/discussions/26253#discussioncomment-3250989
|
||||
exclude:
|
||||
|
|
@ -124,6 +131,11 @@ jobs:
|
|||
- os: macos-latest
|
||||
tpt_proto: 'uds'
|
||||
|
||||
# XXX `AF_TIPC` is a linux-kernel protocol; the address
|
||||
# family doesn't exist on darwin at all.
|
||||
- os: macos-latest
|
||||
tpt_proto: 'tipc'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
|
@ -150,6 +162,20 @@ jobs:
|
|||
- name: List deps tree
|
||||
run: uv tree
|
||||
|
||||
# XXX `AF_TIPC` needs its kernel module loaded! It ships
|
||||
# with the standard ubuntu kernel package but is NOT loaded
|
||||
# by default, so a bare `--tpt-proto=tipc` run would
|
||||
# otherwise fail at the first `.bind()`.
|
||||
#
|
||||
# If GH's runners ever refuse the `modprobe`, the fallback
|
||||
# is a container job w/ `--cap-add NET_ADMIN`.
|
||||
- name: 'Load the `tipc` kernel module'
|
||||
if: matrix.tpt_proto == 'tipc'
|
||||
run: |
|
||||
sudo modprobe tipc
|
||||
tipc node get address
|
||||
uv run python -c "from tractor.ipc._tipc import TIPCAddress; ok, why = TIPCAddress.is_available(); assert ok, why; print('AF_TIPC available')"
|
||||
|
||||
- name: Run tests
|
||||
run: >
|
||||
uv run
|
||||
|
|
|
|||
Loading…
Reference in New Issue