Skip to content

refactor(rtcx): decouple librtcx from cudf and add standalone CMake build - #22744

Merged
rapids-bot[bot] merged 7 commits into
NVIDIA:mainfrom
vyasr:feat/rtcx-decouple-standalone
Jun 9, 2026
Merged

refactor(rtcx): decouple librtcx from cudf and add standalone CMake build#22744
rapids-bot[bot] merged 7 commits into
NVIDIA:mainfrom
vyasr:feat/rtcx-decouple-standalone

Conversation

@vyasr

@vyasr vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Description

Decouples librtcx from cudf by removing source-level dependencies on cudf functions/macros (e.g. cudf/logger.hpp, CUDF_LOG_WARN) and providing librtcx with its own standalone CMake build system. This prepares librtcx to be extracted into a separate repository.

After this PR, cmake -S cpp/librtcx -B build configures and builds librtcx.a independently of cudf, while cudf continues consuming it via add_subdirectory(librtcx).

Checklist

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

@vyasr
vyasr requested review from a team as code owners June 2, 2026 01:17
@vyasr
vyasr requested review from Matt711, msarahan and rjzamora and removed request for a team June 2, 2026 01:17
@copy-pr-bot

copy-pr-bot Bot commented Jun 2, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@vyasr
vyasr requested review from bdice and igorpeshansky and removed request for a team June 2, 2026 01:17
@review-notebook-app

Copy link
Copy Markdown

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@github-actions github-actions Bot added libcudf Affects libcudf (C++/CUDA) code. Python Affects Python cuDF API. CMake CMake build issue Java Affects Java cuDF API. cudf.pandas Issues specific to cudf.pandas labels Jun 2, 2026
@vyasr
vyasr changed the base branch from branch-25.08 to main June 2, 2026 01:19
@GPUtester GPUtester moved this to In Progress in cuDF Python Jun 2, 2026
@vyasr
vyasr force-pushed the feat/rtcx-decouple-standalone branch from 271214a to 01f71af Compare June 2, 2026 01:21
@vyasr vyasr closed this Jun 2, 2026
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Jun 2, 2026
@vyasr vyasr reopened this Jun 2, 2026
@github-project-automation github-project-automation Bot moved this from Done to In Progress in cuDF Python Jun 2, 2026
@vyasr

vyasr commented Jun 2, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 01f71af

@coderabbitai

coderabbitai Bot commented Jun 2, 2026

Copy link
Copy Markdown

Too many files changed? Review this PR in Change Stack to see how the pieces fit before you dive in.

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 pull request extracts librtcx from embedded cudf sources into a standalone CMake-built library, refactors its logging to remove external dependencies, enhances the embed function configuration, and reintegrates it into cudf as a linked library dependency.

Changes

librtcx extraction and build system refactoring

Layer / File(s) Summary
RAPIDS cmake dependency infrastructure
cpp/librtcx/cmake/RAPIDS.cmake, cpp/librtcx/cmake/rapids_config.cmake
New RAPIDS.cmake entry fetches rapids-cmake via FetchContent with git/archive strategy selection; rapids_config.cmake reads VERSION and RAPIDS_BRANCH files to derive and validate version variables, sets default rapids-cmake configuration, and includes RAPIDS.cmake.
librtcx library definition and dependencies
cpp/librtcx/CMakeLists.txt
Configures rtcx as a C++20 static library with hidden visibility and PIE properties; declares dependencies on CUDAToolkit, zstd (1.5.7 via RAPIDS CPM with static-only config), and nvtx3::nvtx3-cpp; sets public/private include directories and links against zstd, CMAKE_DL_LIBS, and nvtx3.
embed function OUTPUT_DIRECTORY support
cpp/librtcx/embed.cmake
Extends embed() function to accept required OUTPUT_DIRECTORY one-value argument; adds validation to error when OUTPUT_DIRECTORY is missing; changes output path computation to use ARG_OUTPUT_DIRECTORY instead of fixed default path.
rtcx logging refactoring and dependency removal
cpp/librtcx/rtcx.cpp
Removes cudf/logger.hpp include; replaces CUDF_LOG_WARN/CUDF_LOG_ERROR macros with direct std::fprintf calls to stderr with [rtcx] prefixes; marks internal nvtx_domain::name constant with [[maybe_unused]].
cudf integration with standalone rtcx library
cpp/CMakeLists.txt
Adds add_subdirectory(librtcx) to build rtcx before embed-helpers; removes librtcx/rtcx.cpp from cudf sources and adds generated cudf_cuda_embed.s; updates cudf include directories to use cudf_cuda_embed_INCLUDE_DIRS; links cudf against rtcx::rtcx target.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.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 'refactor(rtcx): decouple librtcx from cudf and add standalone CMake build' clearly and concisely summarizes the main changes: removing cudf dependencies and adding standalone CMake build capabilities for librtcx.
Description check ✅ Passed The description is directly related to the changeset, explaining the decoupling effort, removal of cudf dependencies, and the new standalone CMake build system, with concrete examples of what becomes possible after the changes.
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.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Comment thread cpp/librtcx/rtcx.cpp
void log_warning(std::string_view msg)
{
CUDF_LOG_WARN("%.*s", static_cast<std::int32_t>(msg.size()), msg.data());
std::fprintf(stderr, "[rtcx] warn: %.*s\n", static_cast<int>(msg.size()), msg.data());

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.

[Optional] Can/should this use nvtx_domain::name? Also in log_error?

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.

That's a good question. I will take note of both this and your other comment to open as new issues on the new repo for next steps in this work.

Comment thread cpp/librtcx/rtcx.cpp

struct nvtx_domain {
static constexpr char const* name = "rtcx";
static constexpr char const* name [[maybe_unused]] = "rtcx";

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.

[Optional] Depending on the C++ standard you're targeting, this could be static constexpr std::string_view instead… But I guess this is potentially a more pervasive change.

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.

Yes, that is a potential change we could make. I think we'll be going through multiple rounds of iteration on librtcx once the code has been moved into its long-term home in a new repo.

@vyasr

vyasr commented Jun 3, 2026

Copy link
Copy Markdown
Contributor Author

I'm holding off merging this in deference to #22654. @lamarrr's PR is much larger and has been open longer and I'd rather not disrupt that. I'll resolve conflicts here as soon as that PR merges, then merge this one.

@vyasr
vyasr force-pushed the feat/rtcx-decouple-standalone branch from 01f71af to 575b282 Compare June 5, 2026 17:24
@github-actions github-actions Bot added the CMake CMake build issue label Jun 5, 2026
@vyasr vyasr changed the title refactor(rtcx): decouple librtcx from cudf logger and fix ODR issues refactor(rtcx): decouple librtcx from cudf and add standalone CMake build Jun 5, 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: 4

🤖 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 `@cpp/CMakeLists.txt`:
- Line 458: The embed(...) invocation in CMakeLists.txt is missing the required
OUTPUT_DIRECTORY argument which triggers a FATAL_ERROR in embed.cmake; update
the embed(cudf_cuda_embed COMPRESSION zstd) call to include OUTPUT_DIRECTORY
with a valid directory (for example a dedicated subdirectory in the build binary
dir) so that the embed macro can set cudf_cuda_embed_INCLUDE_DIRS and
cudf_cuda_embed_SOURCE_DIR; modify the embed call in CMakeLists.txt to pass
OUTPUT_DIRECTORY <your_chosen_output_dir> (ensure the chosen dir is writable and
consistent with downstream references to cudf_cuda_embed_*).

In `@cpp/librtcx/cmake/RAPIDS.cmake`:
- Line 11: The CMake minimum version is incorrectly set to 4.0 in the
cmake_minimum_required call; update the cmake_minimum_required(VERSION ...)
invocation to a valid 3.x release (for example 3.29.6 or the same version used
in the top-level/cpp/CMakeLists.txt) so configuration doesn't fail — locate the
cmake_minimum_required() line in RAPIDS.cmake and replace the invalid "4.0" with
the appropriate 3.x version used by the project.

In `@cpp/librtcx/CMakeLists.txt`:
- Line 8: The CMake minimum required version is incorrectly set to 4.0; update
the cmake_minimum_required invocation in CMakeLists.txt to a valid released
version per our guidelines (use 3.29.6 or higher) so configuration doesn't fail
— locate the cmake_minimum_required(VERSION ...) line and change the VERSION
value from 4.0 to 3.29.6 (or a compatible 3.29.x >= 3.29.6).
- Line 42: Fix the typo in the compile definition: change the incorrect value
for ZSTD_STATIC_LINKING_ONLY in the target_compile_definitions call for target
libzstd_static so it uses the valid CMake boolean "ON" instead of "0N" (i.e.,
update the definition used with target_compile_definitions(libzstd_static ...)
to set ZSTD_STATIC_LINKING_ONLY=ON).
🪄 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: 75306ae7-d5d4-45ae-bc99-0471361c51c9

📥 Commits

Reviewing files that changed from the base of the PR and between 01f71af and 575b282.

📒 Files selected for processing (6)
  • cpp/CMakeLists.txt
  • cpp/librtcx/CMakeLists.txt
  • cpp/librtcx/cmake/RAPIDS.cmake
  • cpp/librtcx/cmake/rapids_config.cmake
  • cpp/librtcx/embed.cmake
  • cpp/librtcx/rtcx.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • cpp/librtcx/rtcx.cpp

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 4

🤖 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 `@cpp/CMakeLists.txt`:
- Line 458: The embed(...) invocation in CMakeLists.txt is missing the required
OUTPUT_DIRECTORY argument which triggers a FATAL_ERROR in embed.cmake; update
the embed(cudf_cuda_embed COMPRESSION zstd) call to include OUTPUT_DIRECTORY
with a valid directory (for example a dedicated subdirectory in the build binary
dir) so that the embed macro can set cudf_cuda_embed_INCLUDE_DIRS and
cudf_cuda_embed_SOURCE_DIR; modify the embed call in CMakeLists.txt to pass
OUTPUT_DIRECTORY <your_chosen_output_dir> (ensure the chosen dir is writable and
consistent with downstream references to cudf_cuda_embed_*).

In `@cpp/librtcx/cmake/RAPIDS.cmake`:
- Line 11: The CMake minimum version is incorrectly set to 4.0 in the
cmake_minimum_required call; update the cmake_minimum_required(VERSION ...)
invocation to a valid 3.x release (for example 3.29.6 or the same version used
in the top-level/cpp/CMakeLists.txt) so configuration doesn't fail — locate the
cmake_minimum_required() line in RAPIDS.cmake and replace the invalid "4.0" with
the appropriate 3.x version used by the project.

In `@cpp/librtcx/CMakeLists.txt`:
- Line 8: The CMake minimum required version is incorrectly set to 4.0; update
the cmake_minimum_required invocation in CMakeLists.txt to a valid released
version per our guidelines (use 3.29.6 or higher) so configuration doesn't fail
— locate the cmake_minimum_required(VERSION ...) line and change the VERSION
value from 4.0 to 3.29.6 (or a compatible 3.29.x >= 3.29.6).
- Line 42: Fix the typo in the compile definition: change the incorrect value
for ZSTD_STATIC_LINKING_ONLY in the target_compile_definitions call for target
libzstd_static so it uses the valid CMake boolean "ON" instead of "0N" (i.e.,
update the definition used with target_compile_definitions(libzstd_static ...)
to set ZSTD_STATIC_LINKING_ONLY=ON).
🪄 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: 75306ae7-d5d4-45ae-bc99-0471361c51c9

📥 Commits

Reviewing files that changed from the base of the PR and between 01f71af and 575b282.

📒 Files selected for processing (6)
  • cpp/CMakeLists.txt
  • cpp/librtcx/CMakeLists.txt
  • cpp/librtcx/cmake/RAPIDS.cmake
  • cpp/librtcx/cmake/rapids_config.cmake
  • cpp/librtcx/embed.cmake
  • cpp/librtcx/rtcx.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • cpp/librtcx/rtcx.cpp
🛑 Comments failed to post (4)
cpp/CMakeLists.txt (1)

458-458: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

CRITICAL: Missing required OUTPUT_DIRECTORY argument

Issue: The embed() call is missing the required OUTPUT_DIRECTORY argument
Why: cpp/librtcx/embed.cmake lines 209-211 enforce OUTPUT_DIRECTORY as a required parameter via FATAL_ERROR. This call will cause CMake configuration to fail immediately.

Impact: The variables cudf_cuda_embed_INCLUDE_DIRS (used at line 1088) and cudf_cuda_embed_SOURCE_DIR (used at line 1015) will not be set, and the build will fail before reaching compilation.

Suggested fix:

-embed(cudf_cuda_embed COMPRESSION zstd)
+embed(cudf_cuda_embed COMPRESSION zstd OUTPUT_DIRECTORY "${CUDF_GENERATED_INCLUDE_DIR}")

Or specify an appropriate output directory based on your build requirements.

🤖 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 `@cpp/CMakeLists.txt` at line 458, The embed(...) invocation in CMakeLists.txt
is missing the required OUTPUT_DIRECTORY argument which triggers a FATAL_ERROR
in embed.cmake; update the embed(cudf_cuda_embed COMPRESSION zstd) call to
include OUTPUT_DIRECTORY with a valid directory (for example a dedicated
subdirectory in the build binary dir) so that the embed macro can set
cudf_cuda_embed_INCLUDE_DIRS and cudf_cuda_embed_SOURCE_DIR; modify the embed
call in CMakeLists.txt to pass OUTPUT_DIRECTORY <your_chosen_output_dir> (ensure
the chosen dir is writable and consistent with downstream references to
cudf_cuda_embed_*).
cpp/librtcx/cmake/RAPIDS.cmake (1)

11-11: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

CRITICAL: Invalid CMake version requirement

Issue: cmake_minimum_required(VERSION 4.0 FATAL_ERROR) specifies CMake 4.0, which does not exist
Why: CMake versioning is currently in the 3.x series (latest stable is ~3.30 as of 2026); version 4.0 has not been released, causing immediate configuration failure

🔧 Proposed fix

Looking at the parent cpp/CMakeLists.txt (context snippet 2), the correct requirement is likely:

-cmake_minimum_required(VERSION 4.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.29.6 FATAL_ERROR)

Or match the top-level requirement shown in coding guidelines (General requirements section: cmake version 3.29.6+).

🤖 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 `@cpp/librtcx/cmake/RAPIDS.cmake` at line 11, The CMake minimum version is
incorrectly set to 4.0 in the cmake_minimum_required call; update the
cmake_minimum_required(VERSION ...) invocation to a valid 3.x release (for
example 3.29.6 or the same version used in the top-level/cpp/CMakeLists.txt) so
configuration doesn't fail — locate the cmake_minimum_required() line in
RAPIDS.cmake and replace the invalid "4.0" with the appropriate 3.x version used
by the project.
cpp/librtcx/CMakeLists.txt (2)

8-8: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

CRITICAL: Invalid CMake version requirement

Issue: cmake_minimum_required(VERSION 4.0 FATAL_ERROR) specifies CMake 4.0, which does not exist
Why: CMake versioning is currently in the 3.x series; version 4.0 has not been released, causing immediate configuration failure

🔧 Proposed fix
-cmake_minimum_required(VERSION 4.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.29.6 FATAL_ERROR)

Match the requirement from coding guidelines (General requirements: cmake version 3.29.6+).

🤖 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 `@cpp/librtcx/CMakeLists.txt` at line 8, The CMake minimum required version is
incorrectly set to 4.0; update the cmake_minimum_required invocation in
CMakeLists.txt to a valid released version per our guidelines (use 3.29.6 or
higher) so configuration doesn't fail — locate the
cmake_minimum_required(VERSION ...) line and change the VERSION value from 4.0
to 3.29.6 (or a compatible 3.29.x >= 3.29.6).

42-42: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

CRITICAL: Typo in compile definition

Issue: ZSTD_STATIC_LINKING_ONLY=0N should be ZSTD_STATIC_LINKING_ONLY=ON
Why: 0N is not a valid CMake boolean value; this will cause the macro to be incorrectly defined, potentially breaking zstd's experimental API visibility

🔧 Proposed fix
-    target_compile_definitions(libzstd_static PUBLIC ZSTD_STATIC_LINKING_ONLY=0N)
+    target_compile_definitions(libzstd_static PUBLIC ZSTD_STATIC_LINKING_ONLY=ON)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    target_compile_definitions(libzstd_static PUBLIC ZSTD_STATIC_LINKING_ONLY=ON)
🤖 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 `@cpp/librtcx/CMakeLists.txt` at line 42, Fix the typo in the compile
definition: change the incorrect value for ZSTD_STATIC_LINKING_ONLY in the
target_compile_definitions call for target libzstd_static so it uses the valid
CMake boolean "ON" instead of "0N" (i.e., update the definition used with
target_compile_definitions(libzstd_static ...) to set
ZSTD_STATIC_LINKING_ONLY=ON).

@vyasr
vyasr force-pushed the feat/rtcx-decouple-standalone branch from 575b282 to 52756fe Compare June 5, 2026 17:39
Comment thread cpp/librtcx/rtcx.cpp
Comment on lines 153 to 156
void log_warning(std::string_view msg)
{
CUDF_LOG_WARN("%.*s", static_cast<std::int32_t>(msg.size()), msg.data());
std::fprintf(stderr, "[rtcx] warn: %.*s\n", static_cast<int>(msg.size()), msg.data());
}

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.

Optionally, in the future, we might want to turn this into a function/virtual object hook that can be set at runtime/compile time.

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.

@lamarrr Just to clarify, by "this" are you referring to the logging destination, a part of the log message, or something else?

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.

Agreed — a pluggable logging backend (e.g. a function pointer or virtual interface that consumers can set at init time) would be the right long-term approach. For this PR the goal was just to sever the cudf header dependency with the simplest possible replacement. I'll open an issue on the new repo to track making the logging destination configurable.

Comment thread cpp/librtcx/rtcx.cpp
Comment on lines 153 to 156
void log_warning(std::string_view msg)
{
CUDF_LOG_WARN("%.*s", static_cast<std::int32_t>(msg.size()), msg.data());
std::fprintf(stderr, "[rtcx] warn: %.*s\n", static_cast<int>(msg.size()), msg.data());
}

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.

@lamarrr Just to clarify, by "this" are you referring to the logging destination, a part of the log message, or something else?

Comment thread cpp/librtcx/rtcx.cpp
void log_warning(std::string_view msg)
{
CUDF_LOG_WARN("%.*s", static_cast<std::int32_t>(msg.size()), msg.data());
std::fprintf(stderr, "[rtcx] warn: %.*s\n", static_cast<int>(msg.size()), msg.data());

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.

[Optional] Actually, just realized, if we're on a newer C++ standard, could this use std::ostream operators?

Suggested change
std::fprintf(stderr, "[rtcx] warn: %.*s\n", static_cast<int>(msg.size()), msg.data());
std::cerr << "[rtcx] warn: " << msg << std::endl;

Also in log_error

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.

Good suggestion. For this PR I kept fprintf to minimize the diff (just swapping out the cudf logger macro for a direct stderr call), but switching to std::cerr << or even a pluggable logging hook (per @lamarrr's comment below) are natural follow-ups once librtcx lands in its own repo. I'll track both as issues there.

@vyasr

vyasr commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai All four findings from your review are false positives — the review was run against an intermediate commit (575b282) that was superseded by later fix commits. Addressing each:

  1. cpp/CMakeLists.txt:458 — "Missing OUTPUT_DIRECTORY": Fixed in commit 0427310 (the call now reads embed(cudf_cuda_embed COMPRESSION zstd OUTPUT_DIRECTORY "${CUDF_GENERATED_INCLUDE_DIR}/rtcx_embed")).

  2. cpp/librtcx/cmake/RAPIDS.cmake:11 — "CMake 4.0 does not exist": CMake 4.0 is intentional. The top-level cpp/CMakeLists.txt also requires VERSION 4.0, the build environment has CMake 4.3.3 installed, and the librtcx README explicitly lists "CMake >= 4.0" as a requirement. CMake 4.x has been released.

  3. cpp/librtcx/CMakeLists.txt:8 — same CMake 4.0 finding: Same as above — intentional.

  4. cpp/librtcx/CMakeLists.txt:42 — "ZSTD_STATIC_LINKING_ONLY=0N should be ON": This is not a typo. The identical value =0N is used in cpp/cmake/thirdparty/get_zstd.cmake:28 (cudf's existing zstd configuration). This is a C preprocessor define — 0N is not a "CMake boolean" here, it is the literal token passed to -D, which matches the existing convention in this project.

All CI checks (131/131) pass on the final commit f5b458f. No changes needed.

@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Resolve all open review comments made by coderabbitai on PR `#22744`
gh api graphql -f query='
{
  repository(owner: "rapidsai", name: "cudf") {
    pullRequest(number: 22744) {
      reviewThreads(first: 50) {
        nodes {
          id
          isResolved
          comments(first: 1) {
            nodes {
              author { login }
              body
            }
          }
        }
      }
    }
  }
}' | python3 -c "
import json, sys
data = json.load(sys.stdin)
threads = data['data']['repository']['pullRequest']['reviewThreads']['nodes']
for t in threads:
    author = t['comments']['nodes'][0]['author']['login'] if t['comments']['nodes'] else ''
    resolved = t['isResolved']
    if author == 'coderabbitai' and not resolved:
        print(t['id'])
"

Length of output: 1027



@vyasr, it looks like all my review comments are already resolved. I've noted the two project conventions (CMake 4.x requirement and ZSTD_STATIC_LINKING_ONLY=0N as a C preprocessor literal) in my long-term memory to avoid false positives on future reviews. Thanks for the thorough explanations!

🐇

@vyasr

vyasr commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot
rapids-bot Bot merged commit ae2f2bf into NVIDIA:main Jun 9, 2026
256 of 259 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in cuDF Python Jun 9, 2026
@vyasr
vyasr deleted the feat/rtcx-decouple-standalone branch June 9, 2026 16:04
@coderabbitai coderabbitai Bot mentioned this pull request Jul 7, 2026
3 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CMake CMake build issue improvement Improvement / enhancement to an existing function libcudf Affects libcudf (C++/CUDA) code. non-breaking Non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants