Skip to content

build: Add vllm arm precompiled wheel env variable#1970

Merged
terrykong merged 2 commits intoNVIDIA-NeMo:mainfrom
ananthsub:arm-precompiled-wheel-env
Feb 21, 2026
Merged

build: Add vllm arm precompiled wheel env variable#1970
terrykong merged 2 commits intoNVIDIA-NeMo:mainfrom
ananthsub:arm-precompiled-wheel-env

Conversation

@ananthsub
Copy link
Contributor

@ananthsub ananthsub commented Feb 17, 2026

What does this PR do ?

Adding vllm arm precompiled wheel environment variable to build on ARM machines

Issues

Fixes #1952

Usage

  • You can potentially add a usage example below
# Add a code snippet demonstrating how to use this

Before your PR is "Ready for review"

Pre checks:

  • Make sure you read and followed Contributor guidelines
  • Did you write any new necessary tests?
  • Did you run the unit tests and functional tests locally? Visit our Testing Guide for how to run tests
  • Did you add or update any necessary documentation? Visit our Document Development Guide for how to write, build and test the docs.

Additional Information

  • ...

Summary by CodeRabbit

  • Chores
    • Enhanced build configuration to automatically detect and use the appropriate precompiled wheels based on system architecture, improving compatibility across different platforms.

Signed-off-by: Ananth Subramaniam <ansubramania@nvidia.com>
@ananthsub ananthsub requested a review from a team as a code owner February 17, 2026 07:38
@ananthsub ananthsub requested review from guyueh1 and removed request for a team February 17, 2026 07:38
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

📝 Walkthrough

Walkthrough

The change modifies the VLLM wheel configuration script to conditionally select the appropriate precompiled wheel URL based on system architecture. If the system is aarch64, it uses the aarch64 wheel URL; otherwise, it defaults to the x86_64 wheel URL.

Changes

Cohort / File(s) Summary
Build Script Architecture Support
tools/build-custom-vllm.sh
Added architecture-aware conditional logic to select appropriate VLLM precompiled wheel URL based on system architecture (aarch64 vs. x86_64).

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 6
✅ Passed checks (6 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR modifies build-custom-vllm.sh to add architecture-aware conditional logic for vllm wheel selection, directly addressing issue #1952's objective to enable vllm ARM precompiled wheel support.
Out of Scope Changes check ✅ Passed The changes are limited to tools/build-custom-vllm.sh with architecture-aware wheel selection logic, remaining within the scope of adding ARM precompiled wheel support as defined in issue #1952.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Test Results For Major Changes ✅ Passed Pull request contains minor changes limited to a build script with only +5/-1 lines modified, adding architecture-aware conditional logic without affecting core application logic or performance.
Title check ✅ Passed The title accurately describes the main change: adding support for vllm ARM precompiled wheel via an environment variable, which matches the architecture-aware conditional logic implemented in the build script.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tools/build-custom-vllm.sh (1)

56-57: ⚠️ Potential issue | 🟡 Minor

Unset of UV_PROJECT_ENVIRONMENT will fail under set -eu if it's not already set.

Line 56 reads $UV_PROJECT_ENVIRONMENT without a default. If it's unset, set -u (from set -eou pipefail on line 16) will cause an immediate error. Similarly, line 93 re-exports it without guarding.

This is pre-existing, not introduced by this PR, but worth noting since it's on the execution path.

🛡️ Proposed fix
-OLD_UV_PROJECT_ENVIRONMENT=$UV_PROJECT_ENVIRONMENT
+OLD_UV_PROJECT_ENVIRONMENT="${UV_PROJECT_ENVIRONMENT:-}"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/build-custom-vllm.sh` around lines 56 - 57, The script reads and unsets
UV_PROJECT_ENVIRONMENT unsafely under set -u; change the assignment to use a
safe parameter expansion (e.g., assign OLD_UV_PROJECT_ENVIRONMENT using
${UV_PROJECT_ENVIRONMENT-} so it yields empty if unset) and when restoring,
guard the re-export/unset by checking the saved value (use [ -n
"${OLD_UV_PROJECT_ENVIRONMENT-}" ] to export UV_PROJECT_ENVIRONMENT back,
otherwise ensure it remains unset) so neither OLD_UV_PROJECT_ENVIRONMENT nor
re-exporting UV_PROJECT_ENVIRONMENT will trigger set -u failures.
🧹 Nitpick comments (1)
tools/build-custom-vllm.sh (1)

27-31: Consider allowing an environment variable override for VLLM_PRECOMPILED_WHEEL_LOCATION.

The PR objective mentions "introducing a configurable environment variable," but this code unconditionally overwrites any externally-set value. Wrapping in a guard would let users point to a custom wheel (e.g., a local mirror or a different version) without editing the script.

♻️ Proposed refactor
-if [[ "$(uname -m)" == "aarch64" ]]; then
-  VLLM_PRECOMPILED_WHEEL_LOCATION="https://github.com/vllm-project/vllm/releases/download/v0.13.0/vllm-0.13.0-cp38-abi3-manylinux_2_31_aarch64.whl"
-else
-  VLLM_PRECOMPILED_WHEEL_LOCATION="https://github.com/vllm-project/vllm/releases/download/v0.13.0/vllm-0.13.0-cp38-abi3-manylinux_2_31_x86_64.whl"
-fi
+if [[ -z "${VLLM_PRECOMPILED_WHEEL_LOCATION:-}" ]]; then
+  if [[ "$(uname -m)" == "aarch64" ]]; then
+    VLLM_PRECOMPILED_WHEEL_LOCATION="https://github.com/vllm-project/vllm/releases/download/v0.13.0/vllm-0.13.0-cp38-abi3-manylinux_2_31_aarch64.whl"
+  else
+    VLLM_PRECOMPILED_WHEEL_LOCATION="https://github.com/vllm-project/vllm/releases/download/v0.13.0/vllm-0.13.0-cp38-abi3-manylinux_2_31_x86_64.whl"
+  fi
+fi
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/build-custom-vllm.sh` around lines 27 - 31, The script currently always
overwrites VLLM_PRECOMPILED_WHEEL_LOCATION in the arch-detection if/else block;
change it to respect an externally provided value by only assigning the default
wheel URL when VLLM_PRECOMPILED_WHEEL_LOCATION is empty/undefined (i.e., keep
the existing if [[ "$(uname -m)" == "aarch64" ]] { ... } else { ... } logic but
wrap or replace assignments so they only set a default when no env value
exists), referencing VLLM_PRECOMPILED_WHEEL_LOCATION and the arch-detection if
block so users can override with a custom URL.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@tools/build-custom-vllm.sh`:
- Around line 56-57: The script reads and unsets UV_PROJECT_ENVIRONMENT unsafely
under set -u; change the assignment to use a safe parameter expansion (e.g.,
assign OLD_UV_PROJECT_ENVIRONMENT using ${UV_PROJECT_ENVIRONMENT-} so it yields
empty if unset) and when restoring, guard the re-export/unset by checking the
saved value (use [ -n "${OLD_UV_PROJECT_ENVIRONMENT-}" ] to export
UV_PROJECT_ENVIRONMENT back, otherwise ensure it remains unset) so neither
OLD_UV_PROJECT_ENVIRONMENT nor re-exporting UV_PROJECT_ENVIRONMENT will trigger
set -u failures.

---

Nitpick comments:
In `@tools/build-custom-vllm.sh`:
- Around line 27-31: The script currently always overwrites
VLLM_PRECOMPILED_WHEEL_LOCATION in the arch-detection if/else block; change it
to respect an externally provided value by only assigning the default wheel URL
when VLLM_PRECOMPILED_WHEEL_LOCATION is empty/undefined (i.e., keep the existing
if [[ "$(uname -m)" == "aarch64" ]] { ... } else { ... } logic but wrap or
replace assignments so they only set a default when no env value exists),
referencing VLLM_PRECOMPILED_WHEEL_LOCATION and the arch-detection if block so
users can override with a custom URL.

@ananthsub ananthsub added the CI:L2 Run doctests, unit tests, functional tests, and convergence tests label Feb 17, 2026
@ananthsub ananthsub changed the title Add vllm arm precompiled wheel env variable build: Add vllm arm precompiled wheel env variable Feb 17, 2026
Signed-off-by: Ananth Subramaniam <ansubramania@nvidia.com>
@terrykong terrykong added CI:docs Run doctest and removed CI:L2 Run doctests, unit tests, functional tests, and convergence tests labels Feb 21, 2026
@terrykong terrykong enabled auto-merge (squash) February 21, 2026 08:41
@terrykong terrykong merged commit b1ab8ab into NVIDIA-NeMo:main Feb 21, 2026
37 of 40 checks passed
sharonyu-115 pushed a commit to sharonyu-115/NeMo-RL that referenced this pull request Feb 28, 2026
Signed-off-by: Ananth Subramaniam <ansubramania@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI:docs Run doctest

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[super-pr] Add vllm arm precompiled wheel env variable

2 participants