Skip to content

support glibc2.28#386

Merged
coderfeli merged 20 commits into
mainfrom
ci/multi-python-versions
May 2, 2026
Merged

support glibc2.28#386
coderfeli merged 20 commits into
mainfrom
ci/multi-python-versions

Conversation

@coderfeli
Copy link
Copy Markdown
Collaborator

support glibc2.28 and python 3.10~3.14

@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 coderfeli force-pushed the ci/multi-python-versions branch from 152a178 to 71c13fd Compare April 28, 2026 08:48
coderfeli and others added 14 commits April 28, 2026 09:04
- 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>
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>
- 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>
Keep the PR focused on manylinux_2_28 wheel support now that main already handles multi-version Python builds.

Made-with: Cursor
Keep the manylinux builder Dockerfile at the repo root and avoid sending the checkout as Docker build context.

Made-with: Cursor
@coderfeli coderfeli force-pushed the ci/multi-python-versions branch from dbd4ce6 to 8e87d10 Compare April 28, 2026 09:04
Make the manylinux wheel job use an explicit Python for LLVM setup and keep the CI docker image input scoped to tests.

Made-with: Cursor
Use the wheel payload's DT_NEEDED entries to exclude ROCm runtime SONAMEs instead of probing host library paths.

Made-with: Cursor
@coderfeli coderfeli force-pushed the ci/multi-python-versions branch 2 times, most recently from 152a178 to a6f835e Compare April 28, 2026 13:29
Keep the wheel-builder Dockerfile next to the workflow that consumes it.

Made-with: Cursor
Keep the manylinux PR focused on the glibc 2.28 build environment and avoid changing the existing ROCm runtime exclude behavior.

Made-with: Cursor
@coderfeli coderfeli changed the title support glibc2.28 and python 3.10~3.14 support glibc2.28 Apr 29, 2026
@coderfeli coderfeli added this to the v0.2 milestone Apr 29, 2026
@coderfeli coderfeli merged commit 49232b1 into main May 2, 2026
15 checks passed
@coderfeli coderfeli deleted the ci/multi-python-versions branch May 2, 2026 23:49
omuhamma pushed a commit that referenced this pull request May 8, 2026
---------

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