Skip to content

support glibc2.28 and python 3.10~3.14#386

Open
coderfeli wants to merge 14 commits intomainfrom
ci/multi-python-versions
Open

support glibc2.28 and python 3.10~3.14#386
coderfeli wants to merge 14 commits intomainfrom
ci/multi-python-versions

Conversation

@coderfeli
Copy link
Copy Markdown
Collaborator

support glibc2.28 and python 3.10~3.14

coderfeli and others added 4 commits April 13, 2026 01:30
- Switch CI to manylinux_2_28 Docker image (glibc 2.28 compat)
- Support Python 3.10/3.11/3.12/3.13/3.14 wheel builds with parallel compilation
- Remove NVPTX from LLVM targets (FlyDSL only needs X86+AMDGPU)
- Fix auditwheel --exclude: detect SONAMEs dynamically instead of
  hardcoded globs (libamdhip64.so.* never matched, causing 82MB wheels)
- Strip shared libs and remove duplicate libFlyPythonCAPI.so symlink
  before packaging (327MB -> 219MB raw, 82MB -> 69MB compressed)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The build-whl.yaml "Build manylinux Docker image" step references
flydsl/docker/Dockerfile.manylinux_2_28 but the file was never
committed, causing CI to fail with "lstat flydsl/docker: no such
file or directory".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use flydsl/docker as build context instead of entire repo (Dockerfile
  uses no files from context, avoids sending full checkout to daemon)
- Add egg_info --egg-base to isolate per-version egg-info directories
  during parallel wheel builds (prevents race on shared python/flydsl.egg-info/)
- Move SUMMARY_LLVM_COMMIT to shell run block — $() in GH Actions env:
  is a literal string, not shell expansion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wheels link against libamdhip64.so.7 (ROCm 7 SONAME) and are not
compatible with ROCm 6.x. Update all docs to reflect ROCm 7.x only.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderfeli coderfeli force-pushed the ci/multi-python-versions branch 2 times, most recently from 27e2469 to 9a3addf Compare April 13, 2026 01:53
coderfeli and others added 10 commits April 13, 2026 01:57
Tag push: validate_tag → release version (e.g. 0.1.3)
Manual dispatch: skip tag validation, use devreleases version
(e.g. 0.1.3.dev20260413+abcdef), with optional skip_tests.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
devreleases now produces {base}.dev{commit_count} (e.g. 0.1.3.dev479)
instead of {base}.dev{date}+{hash}. PyPI rejects local version
segments (+hash), and commit count is monotonically increasing.

Also set fetch-depth: 0 in build-whl.yaml so git rev-list --count
returns the full commit count instead of 1 (shallow clone default).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MLIR_ENABLE_ROCM_RUNNER triggers find_package(hip) which calls
amdgpu-arch for GPU detection. In headless build containers this
fails with GPU_TARGETS=NOTFOUND, crashing MLIR's CMake.

FlyDSL provides its own ROCm runtime (mgpuModuleLoad, mgpuLaunchKernel
etc. in FlyRocmRuntimeWrappers.cpp) and does not use MLIR's rocm_runner.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Multiple parallel setup.py invocations each trigger
git submodule update --init, causing race conditions on the git
state (fatal: Unable to find current revision in submodule path).

Initialize submodules once in build_wheels.sh before spawning
parallel build_one processes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The fly-opt binary was copied into the container's dist/ AFTER
docker cp had already pulled dist/ to the host, so fly-opt never
appeared in the uploaded artifact.

Fix: move the fly-opt copy before docker cp, and use find instead
of the fragile ls|xargs pipeline.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add `packages: write` to ci.yaml and publish-pypi.yaml callers so
  GHCR docker push actually succeeds (was silently failing)
- Remove workflow YAML from MLIR cache key — editing the YAML should
  not trigger a 30-60 min LLVM rebuild
- Stop suppressing docker pull stderr so failures are visible
- Add `|| true` to flydsl.yaml cleanup step to avoid masking real errors

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CI pipeline always uses nightlies format (0.1.3.1+YYYYMMDD.hash) for
both scheduled and manual dispatch runs. Output goes to S3, not PyPI,
so local version identifiers (+) are fine.

PyPI pipeline (publish-pypi.yaml) keeps release + devreleases (commit
count) which are PEP 440 / PyPI compatible.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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