Skip to content

fix: manylinux Docker container for Linux wheel builds#5

Closed
spomichter wants to merge 5 commits intomainfrom
feat/pypi-packaging
Closed

fix: manylinux Docker container for Linux wheel builds#5
spomichter wants to merge 5 commits intomainfrom
feat/pypi-packaging

Conversation

@spomichter
Copy link
Copy Markdown

Fixes the CI failures from v0.30.0a1 tag:

  • linux-x64: uses quay.io/pypa/manylinux_2_28_x86_64 container (matches Rerun's approach)
  • linux-arm64: removed for now (no arm runners)
  • macOS: unchanged (already passing)
  • Trusted publisher OIDC for PyPI (no token needed)

- Rename binary from custom_callback_viewer to dimos-viewer
- Remove unused custom_callback_app binary
- Add pyproject.toml with maturin build backend (bindings=bin)
- Add dimos_viewer Python package with main(), launch(), _find_viewer_binary()
- Add __main__.py for 'python -m dimos_viewer' support
- Add comprehensive Python tests (wrapper, binary, install)
- Replace build-viewer.yml with build-and-publish.yml CI workflow
  - Build matrix: linux-x64, linux-arm64, macos-arm64
  - Python versions: 3.10, 3.11, 3.12, 3.13
  - Rust tests + Python tests
  - PyPI publish on tag push (v*) via maturin upload
  - GitHub Release with wheel artifacts
- Version 0.1.0 (independent semver, based on Rerun 0.30.0-alpha.1)
- Add README with usage, platform support, and versioning docs

Closes DIM-646 (dimos-viewer side)
- Version tracks Rerun base: 0.30.0a1 (based on Rerun 0.30.0-alpha.1)
- Remove comms/ (689 lines TCP protocol, unused)
- Remove panel.rs (demo UI wrapper, unused)
- Remove app.rs (demo app binary, already removed from Cargo.toml)
- lib.rs now only exports interaction module
Rework CI workflow to follow Rerun's patterns:
- Renamed build-and-publish.yml → build-viewer.yml
- Added push-to-main trigger alongside PR and tag triggers
- Simplified wheel build: removed redundant --interpreter flag
  (bindings='bin' produces py3-none universal wheels)
- Added concurrency group to cancel stale runs
- Added workflow_dispatch for manual triggers
- Cleaner job structure: check → build-wheel → test-wheel → publish → release
- Uses GitHub Artifacts for wheel storage (not GCS)
- Publish to PyPI via maturin upload on v* tags only

Rerun's reusable_build_and_upload_wheels.yml cannot be called directly
because it is tightly coupled to building rerun_py (uses pixi, GCS
sccache, rerun-cli download, and rerun_py-specific feature flags).
Instead, this workflow follows the same structural patterns:
platform matrix, manylinux_2_28 compat, artifact upload per platform.
Matches Rerun's ci_docker approach:
- Linux x64: quay.io/pypa/manylinux_2_28_x86_64 container
- System deps via dnf (not apt) inside container
- Rust installed inside container (not pre-installed)
- maturin build with -i python3 for interpreter discovery
- Shell defaults: bash --noprofile --norc -euo pipefail
- 60 min timeout per job (matches Rerun)
- Removed linux-arm64 (no arm runners available yet)
- macOS arm64: native runner (unchanged, already working)

Fixes:
- linux-x64: GLIBC version compliance (was linking 2.29-2.35)
- linux-arm64: removed (was failing on interpreter discovery)
@spomichter spomichter closed this Mar 4, 2026
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