Skip to content

glean-sdk: Add version 70.0.0 - #2963

Merged
github-actions[bot] merged 3 commits into
mainfrom
glean-sdk
Oct 25, 2026
Merged

github-actions[bot] merged 3 commits into
mainfrom
glean-sdk

Conversation

@luhenry

@luhenry luhenry commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Compiles glean-core's Rust FFI bundle (maturin, uniffi bindings) into a ctypes-loaded libglean_ffi.so behind Mozilla's Python Glean wrapper. Upstream publishes no riscv64 wheel.

Mirrors upstream's own make build-python-wheel (a plain maturin build), as driven by pypi-linux-release.

Differs from upstream

  • Built natively on a riscv64 runner instead of upstream's x86_64-plus-Zig cross-compile - no toolchain upstream targets riscv64 with.

Matrix: single py3-none build - bindings = "uniffi" has no CPython ABI, so one build serves every interpreter.

Testing

  • same as upstream

License: OK

Maturin uniffi-bindings build (glean-core/bundle, cdylib loaded via
ctypes), not a thin pure-Python wrapper over a prebuilt binary and not
pyo3: upstream's own CI (CircleCI, not GitHub Actions) just runs
`maturin build` per target, cross-compiling additional Linux arches
with Zig. The wheel is py3-none (no CPython ABI), so cibuildwheel
builds it once. Verified by building the real v70.0.0 tag locally
with maturin and running upstream's full pytest suite against the
resulting wheel (154 passed, 1 skipped, matching upstream's own skip).
luhenry added a commit that referenced this pull request Oct 13, 2026
@luhenry
luhenry marked this pull request as draft October 13, 2026 09:26
@github-actions

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://riseproject-dev.github.io/python-wheels/pr-preview/pr-2963/

Built to branch gh-pages at 2026-10-13 13:08 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

glean's Python SDK uploads pings from a freshly spawned interpreter that
has to import glean and load libglean_ffi.so first. The test helpers
wait_for_ping() and wait_for_requests() give that 2 seconds, which the
riscv64 runner's cold start regularly exceeds: 12 tests failed with
"No ping appeared ... within 2 seconds" while tests on the same upload
path passed in the same run.

Patch both defaults to 30 seconds (matching wait_for_server() in the
same conftest); the helpers poll, so faster hardware pays nothing.

Upstream-Status: To upstream [fixed timeout sized for fast hardware, not riscv64-specific; not yet submitted]
With the ping upload timeouts raised, a single test still failed on
riscv64: test_client_activity_api timed out waiting 30 seconds for the
"inactive" baseline ping.

That is not a timeout issue. The upload process only uploads the pings
it finds in pending_pings/ when it starts, and ProcessDispatcher does
not start a new one while the previous one is still running. The test
only sleeps 0.1 seconds after the first ping lands before submitting the
next one; on riscv64 the first upload process is still exiting by then,
so the trigger for the next ping is dropped and the ping is never sent.

Patch the test to call ProcessDispatcher._wait_for_last_process()
instead, as test_network.py already does, so every trigger starts a fresh
upload process.

Also add patches/glean-sdk/** to the workflow's pull_request and push
paths, like the other patched packages, so a patch change rebuilds.

Upstream-Status: To upstream [race in the test exposed by slow hardware, not riscv64-specific; not yet submitted]
@github-actions
github-actions Bot marked this pull request as ready for review October 25, 2026 00:20
@github-actions
github-actions Bot merged commit ac6fab2 into main Oct 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant