Skip to content

Add cuDF JAR build support for all Maven classifiers - #23261

Merged
rapids-bot[bot] merged 7 commits into
NVIDIA:release/26.08from
paul-aiyedun:paul/java_release_pipeline
Jul 21, 2026
Merged

Add cuDF JAR build support for all Maven classifiers#23261
rapids-bot[bot] merged 7 commits into
NVIDIA:release/26.08from
paul-aiyedun:paul/java_release_pipeline

Conversation

@paul-aiyedun

Copy link
Copy Markdown
Contributor

Description

  • Split the JAR build into three composable stages (static libcudf build, per-classifier JAR packaging, and Maven-repo gather) so each stage is independently runnable in CI and locally.

  • Link against a static libcudf built from source per CUDA version rather than a conda shared libcudf.

  • Emit the Maven classifier based on the host architecture the build runs on, introducing a new -arm64 suffix to distinguish aarch64 JARs from their x86_64 counterparts.

  • Add test_java_build_local.sh as a one-command local reproducer of the full CI matrix for the host arch, with per-step timings and GPU compute-capability auto-detection.

Contributes to #22204

Checklist

  • I am familiar with the Contributing Guidelines.
  • New or existing tests cover these changes.
  • The documentation is up to date with these changes.

@copy-pr-bot

copy-pr-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions github-actions Bot added the Java Affects Java cuDF API. label Jul 14, 2026
@paul-aiyedun paul-aiyedun added feature request New feature or request non-breaking Non-breaking change ci labels Jul 14, 2026
@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

/ok to test ff0d2c2

@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

/ok to test b03423e

@paul-aiyedun
paul-aiyedun marked this pull request as ready for review July 15, 2026 17:13
@paul-aiyedun
paul-aiyedun requested review from a team as code owners July 15, 2026 17:13
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This change adds containerized static libcudf and cuDF Java JAR builds, architecture-specific Maven classifiers, repository assembly, local validation, Java dependencies, updated documentation, and CUDA/architecture matrix CI jobs.

Changes

cuDF Java build pipeline

Layer / File(s) Summary
Build dependencies and classifier contracts
dependencies.yaml, java/pom.xml
Adds the build_java dependency configuration and appends -arm64 to ARM Maven CUDA classifiers.
Static libcudf container build
java/ci/argparse.sh, java/ci/build_static_libcudf*
Adds argument helpers and host/container scripts that build and validate a static libcudf install tree.
Java classifier packaging
java/ci/build_cudf_java_jar*
Adds isolated containerized JAR packaging, Maven environment setup, artifact copying, ownership handling, and output validation.
Maven repository assembly
java/ci/assemble_maven_repo.sh
Combines classifier JARs and a shared POM into the versioned Maven repository layout while validating versions and artifact counts.
Local and CI orchestration
java/ci/test_java_build_local.sh, .github/workflows/build.yaml, .github/workflows/pr.yaml, java/ci/README.md
Adds parallel local CUDA 12/13 validation, CI matrix build and gather jobs, PR workflow wiring, and revised build instructions.

Estimated code review effort: 4 (Complex) | ~60 minutes

Suggested reviewers: mattgara, mroeschke, mhaseeb123, rjzamora, kylefromnvidia

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: adding JAR build support across Maven classifiers.
Description check ✅ Passed The description matches the changeset and accurately describes the new build stages, ARM64 classifier, and local reproducer.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🧹 Nitpick comments (2)
java/ci/build_static_libcudf_in_container.sh (1)

25-25: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add shellcheck disable=SC1091 for the dynamic conda source.

Shellcheck flags this line since /opt/conda/etc/profile.d/conda.sh isn't resolvable statically. The sibling script build_static_libcudf.sh already applies this pattern (# shellcheck disable=SC1091) for its own dynamic source. As per coding guidelines, "Use the repository's pre-commit hooks before committing and ensure CI formatting and lint checks pass."

🔧 Proposed fix
+# shellcheck disable=SC1091
 . /opt/conda/etc/profile.d/conda.sh
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@java/ci/build_static_libcudf_in_container.sh` at line 25, Add a shellcheck
SC1091 disable directive immediately before the dynamic conda source command in
the build script, matching the existing pattern in build_static_libcudf.sh;
leave the source behavior unchanged.

Sources: Coding guidelines, Linters/SAST tools

dependencies.yaml (1)

648-658: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider anchoring shared package pins with test_java.

build_java and the existing test_java bundle (Lines 1034-1042) both pin maven, openjdk=8.*, and boost independently. Using a YAML anchor (like *cmake_ver) for these shared pins would prevent silent version drift between the two bundles over time.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dependencies.yaml` around lines 648 - 658, Update the shared package
definitions in build_java and test_java so the common maven, openjdk=8.*, and
boost pins are defined once via a YAML anchor and reused by both bundles.
Preserve the existing cuda-profiler-api, make, and bundle-specific packages
while eliminating duplicated shared pin declarations.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/pr.yaml:
- Around line 47-49: Remove the temporary java-build and java-gather jobs from
the workflow, along with their corresponding entries in pr-builder.needs.
Preserve the remaining CI jobs and dependency relationships unchanged.

In `@java/ci/assemble_maven_repo.sh`:
- Around line 125-160: Update the assembly flow around the classifier loop and
POM discovery to validate all JAR inputs, consistent versions, and the required
POM before writing to the output. Stage the complete Maven version repository in
a temporary directory, including all JARs and the POM, then atomically replace
the existing version directory only after staging succeeds so failed runs leave
the prior output unchanged and obsolete classifiers are removed.

In `@java/ci/build_cudf_java_jar_in_container.sh`:
- Around line 112-116: Register the HOST_UID/HOST_GID ownership restoration as
an EXIT cleanup before any fallible Maven or copy steps in the build script.
Ensure the cleanup chowns both OUTPUT_DIR and REPO_ROOT/java/target when those
variables are set, so it runs on successful and failed exits; remove or avoid
relying on the current end-of-script-only chown block.

In `@java/ci/build_cudf_java_jar.sh`:
- Around line 153-167: Update the classifier rebuild setup around CLASSIFIER_OUT
and TARGET_SCRATCH to remove stale artifacts from CLASSIFIER_OUT before Maven
runs. Preserve the directory itself for new outputs, and keep the existing
TARGET_SCRATCH cleanup unchanged so each rebuild starts with no prior classifier
JARs or POMs.

In `@java/ci/build_static_libcudf_in_container.sh`:
- Around line 13-17: Make HOST_UID and HOST_GID truly required in the chown step
of build_static_libcudf_in_container.sh: validate that both are set and fail
clearly when either is missing, rather than conditionally skipping ownership
fixup. Preserve the existing chown behavior when both values are provided.

In `@java/ci/README.md`:
- Around line 3-15: Update the README’s recommended flow to reference scripts
under java/ci/ and document invocation of test_java_build_local.sh as the
one-command local entrypoint for the host architecture, while preserving the
existing prerequisite and build-description content.

In `@java/ci/test_java_build_local.sh`:
- Around line 192-215: Update both build_static_libcudf.sh invocations in the
Step 1 static build block to use the shared JAR_PARALLEL budget instead of
PARALLEL_LEVEL, preserving the existing minimum-one safeguard and all other
arguments.

---

Nitpick comments:
In `@dependencies.yaml`:
- Around line 648-658: Update the shared package definitions in build_java and
test_java so the common maven, openjdk=8.*, and boost pins are defined once via
a YAML anchor and reused by both bundles. Preserve the existing
cuda-profiler-api, make, and bundle-specific packages while eliminating
duplicated shared pin declarations.

In `@java/ci/build_static_libcudf_in_container.sh`:
- Line 25: Add a shellcheck SC1091 disable directive immediately before the
dynamic conda source command in the build script, matching the existing pattern
in build_static_libcudf.sh; leave the source behavior unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 2224cd39-f321-4e19-9128-ee98a7715e7c

📥 Commits

Reviewing files that changed from the base of the PR and between 709e821 and b03423e.

📒 Files selected for processing (12)
  • .github/workflows/build.yaml
  • .github/workflows/pr.yaml
  • dependencies.yaml
  • java/ci/README.md
  • java/ci/argparse.sh
  • java/ci/assemble_maven_repo.sh
  • java/ci/build_cudf_java_jar.sh
  • java/ci/build_cudf_java_jar_in_container.sh
  • java/ci/build_static_libcudf.sh
  • java/ci/build_static_libcudf_in_container.sh
  • java/ci/test_java_build_local.sh
  • java/pom.xml

Comment thread .github/workflows/pr.yaml Outdated
Comment thread java/ci/assemble_maven_repo.sh
Comment thread java/ci/build_cudf_java_jar_in_container.sh Outdated
Comment thread java/ci/build_cudf_java_jar.sh
Comment thread java/ci/build_static_libcudf_in_container.sh
Comment thread java/ci/README.md
Comment thread java/ci/test_java_build_local.sh Outdated

@msarahan msarahan left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I personally would choose a different tool for this - perhaps Make or Just. When you have sequences of things that depend on one another's output, those are a more natural fit. Just would be adding an external dependency for CI, though, and Make can be pretty squirelly. The shell scripts you have are workable. It's up to you and your team to decide what tools you're comfortable with.

# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

# Local end-to-end verification of the build workflow: builds the static

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This seems like it should be a Makefile or similar. It's not really a test, though it has served that purpose for you as you developed your workflow.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I added this script in order to enable local end-to-end testing. It is not intended for use by any CI. Hence, the basic implementation vs using something like make.

@paul-aiyedun paul-aiyedun moved this to Burndown in libcudf Jul 15, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@java/ci/build_cudf_java_jar.sh`:
- Around line 155-158: Add automated unit tests and benchmarks for the packaging
script’s contracts, covering pre-existing classifier directories, classifier
naming, and validation of exactly one JAR and POM, including
rerun/stale-artifact cases. Mock Docker execution where needed, and anchor the
coverage to the script’s classifier-output check and related packaging
validation paths.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3f9c58c4-168e-4ace-aab8-7de570d633ce

📥 Commits

Reviewing files that changed from the base of the PR and between b03423e and cf40693.

📒 Files selected for processing (6)
  • java/ci/README.md
  • java/ci/assemble_maven_repo.sh
  • java/ci/build_cudf_java_jar.sh
  • java/ci/build_cudf_java_jar_in_container.sh
  • java/ci/build_static_libcudf_in_container.sh
  • java/ci/test_java_build_local.sh
🚧 Files skipped from review as they are similar to previous changes (5)
  • java/ci/README.md
  • java/ci/build_static_libcudf_in_container.sh
  • java/ci/assemble_maven_repo.sh
  • java/ci/build_cudf_java_jar_in_container.sh
  • java/ci/test_java_build_local.sh

Comment thread java/ci/build_cudf_java_jar.sh

@NvTimLiu NvTimLiu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, BTW this builds JARs but does not publish them

@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

LGTM, BTW this builds JARs but does not publish them

That is correct. This only covers the build step. Publication will be handled by a different workflow.

@paul-aiyedun
paul-aiyedun changed the base branch from main to release/26.08 July 18, 2026 01:26
@paul-aiyedun
paul-aiyedun requested review from a team as code owners July 18, 2026 01:26
@github-actions github-actions Bot added Python Affects Python cuDF API. CMake CMake build issue cudf.pandas Issues specific to cudf.pandas cudf-polars Issues specific to cudf-polars pylibcudf Issues specific to the pylibcudf package labels Jul 20, 2026
@GPUtester GPUtester moved this to In Progress in cuDF Python Jul 20, 2026
* Split the JAR build into three composable stages (static libcudf
  build, per-classifier JAR packaging, and Maven-repo gather) so each
  stage is independently runnable in CI and locally.

* Link against a static libcudf built from source per CUDA version
  rather than a conda shared libcudf.

* Emit the Maven classifier based on the host architecture the build
  runs on, introducing a new `-arm64` suffix to distinguish aarch64
  JARs from their x86_64 counterparts.

* Add `test_java_build_local.sh` as a one-command local reproducer of
  the full CI matrix for the host arch, with per-step timings and GPU
  compute-capability auto-detection.
@paul-aiyedun
paul-aiyedun force-pushed the paul/java_release_pipeline branch from 1537952 to f6b02ea Compare July 20, 2026 06:02

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@java/ci/build_cudf_java_jar_in_container.sh`:
- Around line 56-59: Add pipefail alongside set -e in
java/ci/build_cudf_java_jar_in_container.sh at lines 22 and
java/ci/build_static_libcudf_in_container.sh at line 19, so failures from
rapids-dependency-file-generator propagate through the tee pipelines and stop
both scripts.

In `@java/ci/README.md`:
- Line 47: Update both directory-tree code fences in the README to specify the
text language on their opening fences, resolving the MD040 markdownlint
violations.

In `@java/ci/test_java_build_local.sh`:
- Around line 192-197: Update the STEP_PARALLEL handling near the concurrent
Step 1 and Step 2 builds so PARALLEL_LEVEL=1 does not launch two simultaneous
workers: either serialize the CUDA builds when the total budget is one, or
reject values below two before launching them. Preserve the existing split
budget behavior for PARALLEL_LEVEL values of two or greater.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 28740006-5bfd-4ee6-ab8b-2da59acafe55

📥 Commits

Reviewing files that changed from the base of the PR and between 1537952 and f6b02ea.

📒 Files selected for processing (12)
  • .github/workflows/build.yaml
  • .github/workflows/pr.yaml
  • dependencies.yaml
  • java/ci/README.md
  • java/ci/argparse.sh
  • java/ci/assemble_maven_repo.sh
  • java/ci/build_cudf_java_jar.sh
  • java/ci/build_cudf_java_jar_in_container.sh
  • java/ci/build_static_libcudf.sh
  • java/ci/build_static_libcudf_in_container.sh
  • java/ci/test_java_build_local.sh
  • java/pom.xml
🚧 Files skipped from review as they are similar to previous changes (6)
  • java/pom.xml
  • dependencies.yaml
  • java/ci/argparse.sh
  • java/ci/build_static_libcudf.sh
  • java/ci/assemble_maven_repo.sh
  • java/ci/build_cudf_java_jar.sh

Comment on lines +56 to +59
rapids-dependency-file-generator \
--output conda \
--file-key build_java \
--matrix "cuda=${CUDA_MAJOR_MINOR};arch=$(arch)" | tee "${ENV_YAML_DIR}/env.yaml"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '--- java/ci/build_cudf_java_jar_in_container.sh ---\n'
nl -ba java/ci/build_cudf_java_jar_in_container.sh | sed -n '1,120p'

printf '\n--- java/ci/build_static_libcudf_in_container.sh ---\n'
nl -ba java/ci/build_static_libcudf_in_container.sh | sed -n '1,120p'

printf '\n--- shell options / pipeline context search ---\n'
rg -n 'set -[^\n]*e|pipefail|rapids-dependency-file-generator|tee "\$\{ENV_YAML_DIR\}/env.yaml"' java/ci/build_cudf_java_jar_in_container.sh java/ci/build_static_libcudf_in_container.sh

Repository: rapidsai/cudf

Length of output: 242


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- java/ci/build_cudf_java_jar_in_container.sh ---'
sed -n '1,90p' java/ci/build_cudf_java_jar_in_container.sh | nl -ba

echo
echo '--- java/ci/build_static_libcudf_in_container.sh ---'
sed -n '1,80p' java/ci/build_static_libcudf_in_container.sh | nl -ba

echo
echo '--- exact option lines / pipeline sites ---'
rg -n 'set -[^\n]*|pipefail|rapids-dependency-file-generator|tee "\$\{ENV_YAML_DIR\}/env.yaml"' \
  java/ci/build_cudf_java_jar_in_container.sh \
  java/ci/build_static_libcudf_in_container.sh

Repository: rapidsai/cudf

Length of output: 243


🏁 Script executed:

#!/bin/bash
set -e

for f in java/ci/build_cudf_java_jar_in_container.sh java/ci/build_static_libcudf_in_container.sh; do
  echo "--- $f ---"
  awk '{printf "%6d  %s\n", NR, $0}' "$f" | sed -n '1,120p'
  echo
done

echo "--- matches ---"
grep -nE 'set -[a-zA-Z]+|pipefail|rapids-dependency-file-generator|tee "\$\{ENV_YAML_DIR\}/env.yaml"' \
  java/ci/build_cudf_java_jar_in_container.sh \
  java/ci/build_static_libcudf_in_container.sh

Repository: rapidsai/cudf

Length of output: 9347


Avoid hiding dependency-file generation failures

Both scripts only use set -e, so a failing rapids-dependency-file-generator can still be followed by a successful tee, and the pipeline won’t stop. Add set -o pipefail in:

  • java/ci/build_cudf_java_jar_in_container.sh#L22
  • java/ci/build_static_libcudf_in_container.sh#L19
📍 Affects 2 files
  • java/ci/build_cudf_java_jar_in_container.sh#L56-L59 (this comment)
  • java/ci/build_static_libcudf_in_container.sh#L48-L51
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@java/ci/build_cudf_java_jar_in_container.sh` around lines 56 - 59, Add
pipefail alongside set -e in java/ci/build_cudf_java_jar_in_container.sh at
lines 22 and java/ci/build_static_libcudf_in_container.sh at line 19, so
failures from rapids-dependency-file-generator propagate through the tee
pipelines and stop both scripts.

Comment thread java/ci/README.md
single classifier JAR (e.g. `cudf-26.08.0-SNAPSHOT-cuda12.jar`) plus its POM
into a classifier-named subdirectory under `--output-dir`:

```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Label the directory-tree code fences.

markdownlint flags both fences as MD040. Use text for each opening fence.

Also applies to: 75-75

🧰 Tools
🪛 markdownlint-cli2 (0.23.0)

[warning] 47-47: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@java/ci/README.md` at line 47, Update both directory-tree code fences in the
README to specify the text language on their opening fences, resolving the MD040
markdownlint violations.

Source: Linters/SAST tools

Comment on lines +192 to +197
# Both Step 1 and Step 2 launch two concurrent builds. Each build gets half
# of PARALLEL_LEVEL so together they stay within PARALLEL_LEVEL.
STEP_PARALLEL=$((PARALLEL_LEVEL / 2))
if [[ ${STEP_PARALLEL} -lt 1 ]]; then
STEP_PARALLEL=1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🚀 Performance & Scalability | 🟡 Minor | ⚡ Quick win

Honor a one-worker total budget.

With --parallel 1, this still launches two concurrent --parallel 1 builds. Run the CUDA builds serially for a one-worker budget, or reject values below two.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@java/ci/test_java_build_local.sh` around lines 192 - 197, Update the
STEP_PARALLEL handling near the concurrent Step 1 and Step 2 builds so
PARALLEL_LEVEL=1 does not launch two simultaneous workers: either serialize the
CUDA builds when the total budget is one, or reject values below two before
launching them. Preserve the existing split budget behavior for PARALLEL_LEVEL
values of two or greater.

@Matt711 Matt711 removed this from cuDF Python Jul 20, 2026
@paul-aiyedun

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit 3003a8c into NVIDIA:release/26.08 Jul 21, 2026
259 of 261 checks passed
@vuule vuule moved this from Burndown to Landed in libcudf Jul 21, 2026
davidwendt pushed a commit to wjxiz1992/cudf that referenced this pull request Jul 21, 2026
* Split the JAR build into three composable stages (static libcudf build, per-classifier JAR packaging, and Maven-repo gather) so each stage is independently runnable in CI and locally.

* Link against a static libcudf built from source per CUDA version rather than a conda shared libcudf.

* Emit the Maven classifier based on the host architecture the build runs on, introducing a new `-arm64` suffix to distinguish aarch64 JARs from their x86_64 counterparts.

* Add `test_java_build_local.sh` as a one-command local reproducer of the full CI matrix for the host arch, with per-step timings and GPU compute-capability auto-detection.

Contributes to NVIDIA#22204

Authors:
  - https://github.com/paul-aiyedun

Approvers:
  - Mike Sarahan (https://github.com/msarahan)
  - Tim Liu (https://github.com/NvTimLiu)

URL: NVIDIA#23261
@GregoryKimball GregoryKimball removed this from libcudf Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci CMake CMake build issue cudf.pandas Issues specific to cudf.pandas cudf-polars Issues specific to cudf-polars feature request New feature or request Java Affects Java cuDF API. libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change pylibcudf Issues specific to the pylibcudf package Python Affects Python cuDF API.

Projects

Status: Landed

Development

Successfully merging this pull request may close these issues.

8 participants