Align native UDF builds with jar dependency pins#632
Conversation
|
verified worked in local |
Greptile SummaryThis PR replaces the previous branch-based native dependency resolution with a jar-anchored pin system. Instead of tracking a moving branch (e.g.
Confidence Score: 4/5Safe to merge once the stale cudf.git.branch reference in the failure message is corrected; the core pin-resolution and override wiring are working and verified end-to-end. The cudf.headers.exist fail message in pom.xml still references ${cudf.git.branch} and directs users to -Dcudf.git.branch=main, but the ref now comes from ${jar.cudf.revision}. A user who hits a clone failure gets incorrect diagnostic advice pointing to a property that no longer controls the ref. pom.xml — the cudf.headers.exist failure message at line 444 needs its ${cudf.git.branch} references replaced with ${jar.cudf.revision}. Important Files Changed
Sequence DiagramsequenceDiagram
participant M as Maven (pom.xml)
participant R as resolve-jni-cudf-pins.sh
participant J as rapids-4-spark.jar
participant GH as GitHub (raw)
participant C as clone-cudf-repo.sh
participant CM as CMakeLists.txt
M->>J: unzip libcudf.so / libnvcomp.so
M->>R: resolve-jni-cudf-pins.sh jar pins-dir props
R->>J: read spark-rapids-jni-version-info.properties
R->>J: read cudf-java-version-info.properties
R->>GH: "download cudf-pins/versions.json @ JNI revision"
R->>GH: "download cudf-pins/rapids-cmake.sha @ JNI revision"
R->>GH: "download RAPIDS.cmake @ rapids-cmake SHA"
R-->>M: jar-native-deps.properties
M->>C: clone-cudf-repo.sh cudf-dir jar.cudf.revision
C->>GH: "git clone filter=blob:none + fetch depth 1 SHA"
M->>CM: cmake -DRAPIDS_CMAKE_FILE -DRAPIDS_CMAKE_CPM_OVERRIDE_VERSION_FILE
CM->>CM: rapids_cpm_init(OVERRIDE versions.json)
CM->>CM: rapids_cpm_cccl() rapids_cpm_rmm() at pinned versions
CM->>CM: link udfexamplesjni to cudf_imported
Reviews (2): Last reviewed commit: "Apply jar-matched native dependency pins" | Re-trigger Greptile |
| break | ||
| PY | ||
| elif command -v unzip >/dev/null 2>&1; then | ||
| unzip -p "$JAR_PATH" "$entry" 2>/dev/null | awk -F= -v key="$property" '$1 == key {print $2; exit}' |
There was a problem hiding this comment.
awk fallback truncates property values containing =
The unzip fallback uses -F= and prints only $2, so a property value containing = is silently truncated. The url property is extracted this way; a query-string = in the JNI repository URL would produce a wrong RAW_BASE and silently download from an incorrect path.
Signed-off-by: liyuan <yuali@nvidia.com>
Signed-off-by: liyuan <yuali@nvidia.com>
22385a4 to
664be00
Compare
|
Updated on top of latest
Remote validation with a 26.08 snapshot jar completed successfully: native package built, all 10 required cuDF symbols were exported by the jar's |
|
@GaryShen2008 can you please help review? thx |
Summary
spark-rapids-jniand cuDF revisions from the selectedrapids-4-sparkjar, then fetch the matchingcudf-pinsandrapids-cmakeentrypoint.versions.jsonthroughrapids_cpm_init(OVERRIDE ...), so RMM/CCCL pins are actually enforced.This prevents release-bump gaps such as CI build
examples-udf-examples-native/628, where the runtime jar was cuDF/RMM 26.08 whilerapids-cmake mainhad already moved to RMM 26.10.Closes #630
Test plan
bash -nforresolve-jni-cudf-pins.sh,clone-cudf-repo.sh, andextract-cudf-libs.sh.shellcheckfor the native build scripts.xmllint --noout pom.xmlandgit diff --check.spark-yuanli, built the native UDF package with a 26.08 snapshot jar. The resolver selected the jar-recorded revisions instead of current main:4ae9d07c30e41a77d6bc6046eeee58873ba12aac547370edfbd2d5cde9b08c496315050950de9ae974a28545e739bc8341cd002c9dae98e03b28939ba66679d671694a1cd9b3965fbc9eccdd44efa2e4libcudf.so: 10 required, 0 missing;cudf::copy_bitmaskmatched exactly.native udf completed rows=3.