Skip to content

[CI/Build] Keep non-CUDA wheels CUDA-free - #3745

Open
Aionw wants to merge 2 commits into
mainfrom
codex/fix-non-cuda-wheel-cuda-dependency
Open

[CI/Build] Keep non-CUDA wheels CUDA-free#3745
Aionw wants to merge 2 commits into
mainfrom
codex/fix-non-cuda-wheel-cuda-dependency

Conversation

@Aionw

@Aionw Aionw commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

Description

The published 0.3.13 non-CUDA wheel still links mooncake_client and
store.so against libcudart.so.12. Non-CUDA wheels use a CUDA manylinux
image as their toolchain, and Store was treating the presence of that toolkit
as permission to enable CUDA staging.

This change:

  • enables Store CUDA/HIP staging only when the corresponding project option is
    selected;
  • requires the selected CUDA/HIP toolkit to be available;
  • scans every Mooncake artifact in an installed non-CUDA wheel for CUDA runtime
    dependencies instead of checking only mooncake_master.

Module

  • Transfer Engine (mooncake-transfer-engine)
  • Mooncake Store (mooncake-store)
  • Reshard (mooncake-reshard)
  • Mooncake EP (mooncake-ep)
  • Mooncake PG (mooncake-pg)
  • Integration (mooncake-integration)
  • P2P Store (mooncake-p2p-store)
  • Python Wheel (mooncake-wheel)
  • Common (mooncake-common)
  • Mooncake RL (mooncake-rl)
  • CI/CD
  • Docs
  • Other

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Breaking change
  • Documentation update
  • Performance improvement
  • Other

How Has This Been Tested?

Test commands:

cmake -S . -B /tmp/mooncake-noncuda-config -G Ninja \
  -DBUILD_UNIT_TESTS=OFF -DBUILD_BENCHMARK=OFF \
  -DUSE_CUDA=OFF -DUSE_HTTP=ON -DUSE_ETCD=OFF \
  -DSTORE_USE_ETCD=OFF -DWITH_EP=OFF -DWITH_STORE_RUST=OFF
cmake --build /tmp/mooncake-noncuda-config --parallel 128 \
  --target mooncake_client store
readelf -d /tmp/mooncake-noncuda-config/mooncake-store/src/mooncake_client
readelf -d /tmp/mooncake-noncuda-config/mooncake-integration/store.cpython-310-x86_64-linux-gnu.so

cmake -S . -B /tmp/mooncake-cuda-config -G Ninja \
  -DBUILD_UNIT_TESTS=OFF -DBUILD_BENCHMARK=OFF \
  -DUSE_CUDA=ON -DUSE_HTTP=ON -DUSE_ETCD=OFF \
  -DSTORE_USE_ETCD=OFF -DWITH_EP=OFF -DWITH_STORE_RUST=OFF

pre-commit run --files \
  .github/workflows/_build-wheel.yaml \
  mooncake-store/src/CMakeLists.txt

Test results:

  • Unit tests pass
  • Integration tests pass (if applicable)
  • Manual testing done: non-CUDA targets build without CUDA DT_NEEDED
    entries; CUDA configuration finds and links CUDAToolkit.

Checklist

  • I have performed a self-review of my own code
  • I have formatted my code using ./scripts/code_format.sh (not applicable;
    no C/C++ source changed)
  • I have run pre-commit on the files changed in this PR and all hooks pass
  • I have updated the documentation (not applicable)
  • I have added tests to prove my changes are effective
  • For changes >500 LOC: I have filed an RFC issue (not applicable)

AI Assistance Disclosure

  • No AI tools were used
  • AI tools were used: Codex helped inspect the published wheel, trace the
    CMake dependency, implement the fix, and run validation. The submitter has
    reviewed the complete diff.

The non-CUDA CUDA-dependency scan uses process substitution (< <(...)),
which sh (dash) rejects at parse time, failing every wheel build
variant regardless of VARIANT_FLAG. Run the smoke test step under bash.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant