Skip to content

Conversation

@Bill-hbrhbr
Copy link
Contributor

@Bill-hbrhbr Bill-hbrhbr commented Aug 18, 2025

Description

Velox integration, which will depend on ystdlib, requires us to lower our minimum compiler requirements to align with Velox's build constraints.

Velox currently requires compiler versions of GNU11, Clang 15 and AppleClang15, so we must relax ystdlib constraints from LLVM/Apple Clang 16 down to 15 as well.

We also remove the LLVM 16 toolchain upgrade and reintroduce macos-14 to the GitHub Actions workflows to ensure compatibility with AppleClang 15. In addition, since the same constraint adjustment was required and fixed in ystdlib-cpp, we update this dependency to its latest version.


On the other hand, since ystdlib-cpp is bumped to the current latest version, it now supports installation as a standard CMake library. Hence we update the installation task to utils:install-remote-cmake-lib to simplify and standardize its installation process.

Checklist

  • The PR satisfies the contribution guidelines.
  • This is a breaking change and that has been indicated in the PR title, OR this isn't a
    breaking change.
  • Necessary docs have been updated, OR no docs need to be updated.

Validation performed

  • Existing workflows pass, even with appleclang-15

Summary by CodeRabbit

  • Chores

    • Added macOS 14 to CI build matrix.
    • Updated a third‑party dependency revision and checksum; switched ystdlib to a CMake-based install with updated tarball and install args.
  • Refactor

    • Replaced pre-project toolchain injection with post-project centralized compiler validation; removed automatic Homebrew-based macOS toolchain detection and adjusted minimum compiler versions.
  • Documentation

    • Removed an obsolete compile-time requirement and updated source dependency reference.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Aug 18, 2025

Walkthrough

Adds macos-14 to the CI macOS matrix. Moves toolchain setup to a post-project validation flow using validate_compiler_versions() and removes Homebrew-based LLVM-16 auto-detection. Changes ystdlib acquisition to a CMake-lib install with updated commit and checksum, updates related taskfile wiring, and removes std::source_location from docs.

Changes

Cohort / File(s) Summary
CI: macOS matrix update
.github/workflows/clp-core-build-macos.yaml
Adds macos-14 to strategy.matrix.os alongside macos-15. No other workflow step changes.
CMake entrypoint & dependency handling
components/core/CMakeLists.txt
Removes pre-project toolchain initialization; after project() includes Toolchains/utils.cmake, calls validate_compiler_versions(), then runs dependency-flag setup and converts dependency properties to variables. Replaces add_subdirectory(ystdlib) with find_package(ystdlib REQUIRED) and prints the found version.
Toolchain utilities refactor
components/core/cmake/Toolchains/utils.cmake, components/core/cmake/Toolchains/llvm-clang-16-toolchain.cmake
Removes Homebrew-based LLVM-16 detection/config and deletes setup_toolchains(). Adds validate_compiler_versions() and updates minimum compiler versions (AppleClang/Clang min -> 15, GNU -> 11); validation emits fatal errors for unsupported/too-old compilers.
Dependencies: ystdlib taskfile changes
taskfiles/deps/main.yaml
Switches ystdlib installation to utils:install-remote-cmake-lib with new TARBALL_URL and TARBALL_SHA256 (commit 9ed78cd), changes dependency to boost, removes previous YSTDLIB_OUTPUT_DIR usage, and adds CMAKE_GEN_ARGS and LIB_NAME to the install invocation.
Docs alignment
docs/src/dev-docs/components-core/index.md
Updates ystdlib-cpp commit to 9ed78cd and removes std::source_location from compile-time requirements.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev as Developer
  participant CI as CI
  participant CMake as CMake (configure)
  participant Utils as Toolchains/utils.cmake
  participant Deps as taskfiles/deps

  Dev->>CI: push / workflow run
  CI->>CI: macOS matrix includes macos-14 & macos-15

  Dev->>CMake: invoke configure
  CMake->>CMake: project()
  CMake->>Utils: include(utils.cmake)
  Utils-->>CMake: provide validate_compiler_versions()
  CMake->>Utils: validate_compiler_versions()
  Utils-->>CMake: ok / fatal (unsupported or too-old)
  CMake->>CMake: setup dependency flags & convert properties
  CMake->>Deps: require ystdlib (find_package / taskfile-installed)
  Deps-->>CMake: ystdlib available (installed via utils:install-remote-cmake-lib)
  CMake-->>Dev: configure complete
  Note over Utils,CMake: Validation replaces prior macOS Homebrew LLVM auto-setup
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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.

Pre-merge checks

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
Title Check ✅ Passed The title concisely and accurately summarizes the PR’s primary changes: bumping ystdlib to commit 9ed78cd, switching ystdlib installation to a CMake-based path, and lowering the minimum Clang/AppleClang requirement for Velox compatibility. It directly maps to the changed files (taskfiles, CMake toolchain/validation, and workflows) and is specific rather than generic. The phrasing is readable and informative for a teammate scanning the history.

@Bill-hbrhbr Bill-hbrhbr marked this pull request as ready for review August 19, 2025 04:34
@Bill-hbrhbr Bill-hbrhbr requested a review from a team as a code owner August 19, 2025 04:34
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.

Actionable comments posted: 1

🔭 Outside diff range comments (1)
components/core/cmake/Toolchains/utils.cmake (1)

19-25: Fix multiline error message formatting (stray backslash will appear in output)

The backslash in the quoted string is literal in CMake and will show up in the error. Simplify the string or split into adjacent literals.

Apply:

-        message(
-            FATAL_ERROR
-            "${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION} is too low. Must be at \
-			least ${CXX_COMPILER_MIN_VERSION}."
-        )
+        message(
+            FATAL_ERROR
+            "${CMAKE_CXX_COMPILER_ID} version ${CMAKE_CXX_COMPILER_VERSION} is too low. "
+            "Must be at least ${CXX_COMPILER_MIN_VERSION}."
+        )
♻️ Duplicate comments (1)
.github/workflows/clp-core-build-macos.yaml (1)

48-50: Matrix expansion to macos-13 and macos-14 adopted — good call

This aligns with prior feedback and broadens coverage without disrupting the job flow.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between a4f4dd9 and 9bffe7a.

📒 Files selected for processing (6)
  • .github/workflows/clp-core-build-macos.yaml (1 hunks)
  • components/core/CMakeLists.txt (1 hunks)
  • components/core/cmake/Toolchains/llvm-clang-16-toolchain.cmake (0 hunks)
  • components/core/cmake/Toolchains/utils.cmake (1 hunks)
  • docs/src/dev-guide/components-core/index.md (1 hunks)
  • taskfiles/deps/main.yaml (1 hunks)
💤 Files with no reviewable changes (1)
  • components/core/cmake/Toolchains/llvm-clang-16-toolchain.cmake
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-06-02T18:22:24.060Z
Learnt from: gibber9809
PR: y-scope/clp#955
File: components/core/src/clp_s/search/sql/CMakeLists.txt:8-26
Timestamp: 2025-06-02T18:22:24.060Z
Learning: In the clp project, ANTLR code generation at build time is being removed by another PR. When reviewing CMake files, be aware that some temporary suboptimal configurations may exist to reduce merge conflicts between concurrent PRs, especially around ANTLR_TARGET calls.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-06-27T01:49:15.724Z
Learnt from: sitaowang1998
PR: y-scope/clp#1044
File: .github/workflows/clp-core-build-macos.yaml:0-0
Timestamp: 2025-06-27T01:49:15.724Z
Learning: In the clp project, manually setting LDFLAGS for library paths can cause runtime errors because it interferes with CMake's built-in library discovery and linking mechanisms. CMake can identify and correctly link to libraries on its own without requiring manual LDFLAGS configuration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-18T05:43:07.840Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: components/core/cmake/Modules/FindLibLZMA.cmake:21-24
Timestamp: 2025-08-18T05:43:07.840Z
Learning: In the CLP project, all supplied `<lib>_ROOT` variables will live within the `CLP_CORE_DEPS_DIR` as part of their architectural design. This means that using CLP_CORE_DEPS_DIR for library discovery in custom Find modules is the intended approach, and prioritizing individual `<lib>_ROOT` variables over CLP_CORE_DEPS_DIR is not necessary.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2024-11-26T19:12:43.982Z
Learnt from: LinZhihao-723
PR: y-scope/clp#486
File: components/core/tests/test-error_handling.cpp:37-38
Timestamp: 2024-11-26T19:12:43.982Z
Learning: In the CLP project, C++20 is used, allowing the utilization of C++20 features such as class template argument deduction (CTAD) with `std::array`.

Applied to files:

  • components/core/CMakeLists.txt
🔇 Additional comments (4)
docs/src/dev-guide/components-core/index.md (1)

53-53: Docs synced with dependency bump — looks good

ystdlib-cpp commit updated to 9ed78cd, matching the Taskfile change. No further action needed.

.github/workflows/clp-core-build-macos.yaml (1)

48-50: Confirm AppleClang versions on macos-13/14 to satisfy the new >=15 minimum

Given validate_compiler_versions() now requires AppleClang/Clang >= 15, please verify the runner images provide that (particularly macos-13, which can be Xcode 14 on some images).

To make this visible in CI, consider inserting a small diagnostic step after checkout:

       - uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683"
         with:
           # Fetch history so that the `clang-tidy-diff` task can compare against the main branch.
           fetch-depth: 0
           submodules: "recursive"

+      - name: "Print compiler info"
+        shell: "bash"
+        run: |
+          echo "C++ compiler:"
+          c++ --version || true
+          echo "Clang:"
+          clang --version || true
+          echo "CC/CXX env:"
+          echo "CC=${CC:-unset}"; echo "CXX=${CXX:-unset}"
taskfiles/deps/main.yaml (1)

476-479: Checksum verified — ready to merge
The computed SHA256 matches the expected value for the tarball at commit 9ed78cd. No further action required.

components/core/CMakeLists.txt (1)

6-10: Toolchain validation inclusion and call are correctly positioned

Including Toolchains/utils.cmake post-project() and invoking validate_compiler_versions() early in the configuration phase is appropriate and keeps concerns separated from toolchain setup logic that was removed.

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.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 9bffe7a and 5ce0f24.

📒 Files selected for processing (3)
  • components/core/CMakeLists.txt (1 hunks)
  • docs/src/dev-guide/components-core/index.md (1 hunks)
  • taskfiles/deps/main.yaml (1 hunks)
🧰 Additional context used
🧠 Learnings (5)
📚 Learning: 2025-06-02T18:22:24.060Z
Learnt from: gibber9809
PR: y-scope/clp#955
File: components/core/src/clp_s/search/sql/CMakeLists.txt:8-26
Timestamp: 2025-06-02T18:22:24.060Z
Learning: In the clp project, ANTLR code generation at build time is being removed by another PR. When reviewing CMake files, be aware that some temporary suboptimal configurations may exist to reduce merge conflicts between concurrent PRs, especially around ANTLR_TARGET calls.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-06-27T01:49:15.724Z
Learnt from: sitaowang1998
PR: y-scope/clp#1044
File: .github/workflows/clp-core-build-macos.yaml:0-0
Timestamp: 2025-06-27T01:49:15.724Z
Learning: In the clp project, manually setting LDFLAGS for library paths can cause runtime errors because it interferes with CMake's built-in library discovery and linking mechanisms. CMake can identify and correctly link to libraries on its own without requiring manual LDFLAGS configuration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-18T05:43:07.840Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: components/core/cmake/Modules/FindLibLZMA.cmake:21-24
Timestamp: 2025-08-18T05:43:07.840Z
Learning: In the CLP project, all supplied `<lib>_ROOT` variables will live within the `CLP_CORE_DEPS_DIR` as part of their architectural design. This means that using CLP_CORE_DEPS_DIR for library discovery in custom Find modules is the intended approach, and prioritizing individual `<lib>_ROOT` variables over CLP_CORE_DEPS_DIR is not necessary.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2024-11-26T19:12:43.982Z
Learnt from: LinZhihao-723
PR: y-scope/clp#486
File: components/core/tests/test-error_handling.cpp:37-38
Timestamp: 2024-11-26T19:12:43.982Z
Learning: In the CLP project, C++20 is used, allowing the utilization of C++20 features such as class template argument deduction (CTAD) with `std::array`.

Applied to files:

  • components/core/CMakeLists.txt
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (7)
  • GitHub Check: centos-stream-9-static-linked-bins
  • GitHub Check: centos-stream-9-dynamic-linked-bins
  • GitHub Check: ubuntu-jammy-dynamic-linked-bins
  • GitHub Check: ubuntu-jammy-static-linked-bins
  • GitHub Check: ubuntu-jammy-lint
  • GitHub Check: lint-check (ubuntu-24.04)
  • GitHub Check: lint-check (macos-15)
🔇 Additional comments (3)
components/core/CMakeLists.txt (1)

8-10: Validate lowered Clang/AppleClang minimums in utils.cmake and CI matrix

We’ve confirmed that validate_compiler_versions() (now in components/core/cmake/Toolchains/utils.cmake) sets CXX_COMPILER_MIN_VERSION to “15” for both AppleClang and Clang, and errors out on anything older. Please manually verify that your CI workflows in .github/workflows/*.yml include matrix entries for Clang and AppleClang with version 15 or higher to match these new thresholds.

  • components/core/cmake/Toolchains/utils.cmake: validate_compiler_versions() → Clang/AppleClang ≥ 15
  • .github/workflows/*.yml: matrix.platform/version entries for Clang/AppleClang ≥ 15
docs/src/dev-guide/components-core/index.md (1)

53-53: ystdlib-cpp commit pin updated — looks consistent with deps config

The doc now references 9ed78cd, which matches the updated tarball in Taskfile. Good alignment.

taskfiles/deps/main.yaml (1)

478-481: Action Required: Verify ystdlib-cpp checksum and docs commit locally

The SSL certificate verification failed when downloading the tarball in this sandbox environment. Please run the verification on your local machine (with a valid CA store) or adjust the script to bypass SSL checks. Then ensure:

You can modify the Python snippet to disable SSL verification, for example:

import ssl, urllib.request
ctx = ssl._create_unverified_context()
with urllib.request.urlopen(url, context=ctx) as resp:
    # …

Or use a local curl -L … | sha256sum to compute the hash.

@Bill-hbrhbr Bill-hbrhbr changed the title build(deps): Bump ystdlib-cpp to the newest version; Lower minimum Clang version for Velox compatibility. build(deps): Bump ystdlib to the newest version; Lower minimum Clang version for Velox compatibility. Aug 20, 2025
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.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 5ce0f24 and 7d194d1.

📒 Files selected for processing (1)
  • .github/workflows/clp-lint.yaml (1 hunks)

Comment on lines 34 to 38
- if: "matrix.os == 'ubuntu24.04'"
name: "Install pipx"
shell: "bash"
run: "DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y pipx"

Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

⚠️ Potential issue

Broken OS condition prevents pipx install on Ubuntu runners

The matrix uses "ubuntu-24.04", but the condition checks for "ubuntu24.04" (missing dash), so this step never runs. Also, installing with apt on GitHub-hosted runners typically requires sudo and an apt-get update first.

Apply this patch to fix the condition and ensure a reliable install:

-      - if: "matrix.os == 'ubuntu24.04'"
-        name: "Install pipx"
-        shell: "bash"
-        run: "DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y pipx"
+      - if: startsWith(matrix.os, 'ubuntu-')
+        name: "Install pipx (Ubuntu)"
+        shell: bash
+        run: |
+          sudo apt-get update
+          DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends -y pipx
📝 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.

Suggested change
- if: "matrix.os == 'ubuntu24.04'"
name: "Install pipx"
shell: "bash"
run: "DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y pipx"
- if: startsWith(matrix.os, 'ubuntu-')
name: "Install pipx (Ubuntu)"
shell: bash
run: |
sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo apt-get install --no-install-recommends -y pipx
🤖 Prompt for AI Agents
.github/workflows/clp-lint.yaml around lines 34 to 38: the job condition
incorrectly matches "ubuntu24.04" (missing dash) so the pipx install step never
runs; update the if expression to check matrix.os == 'ubuntu-24.04' and make the
install robust by running apt-get update and using sudo for apt-get install
(e.g., run: sudo apt-get update && sudo DEBIAN_FRONTEND=noninteractive apt-get
install --no-install-recommends -y pipx), ensuring the step executes on the
intended Ubuntu runner and succeeds on GitHub-hosted images.

Comment on lines 39 to 42
- name: "Install cmake"
shell: "bash"
run: "pipx install cmake~=3.31"

Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

⚠️ Potential issue

Unconditional cmake install via pipx will fail on macOS (pipx not present)

This step assumes pipx exists on all runners. Given the previous step is Ubuntu-only, macOS lacks pipx and the cmake install will fail.

Option A (OS-specific installs; minimal diff with current approach):

-      - name: "Install cmake"
-        shell: "bash"
-        run: "pipx install cmake~=3.31"
+      - if: startsWith(matrix.os, 'macos-')
+        name: "Install pipx (macOS)"
+        shell: bash
+        run: brew install pipx
+
+      - name: "Install CMake via pipx"
+        shell: bash
+        run: pipx install "cmake~=3.31"

Option B (preferred; cross-platform and simpler): use the maintained setup action for pipx, then install cmake. Replace both the pipx installation and cmake steps with:

-      - if: "matrix.os == 'ubuntu24.04'"
-        name: "Install pipx"
-        shell: "bash"
-        run: "DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y pipx"
-
-      - name: "Install cmake"
-        shell: "bash"
-        run: "pipx install cmake~=3.31"
+      - name: "Set up pipx"
+        uses: pipx/actions/setup-pipx@<pin-a-specific-SHA>
+      - name: "Install CMake via pipx"
+        shell: bash
+        run: pipx install "cmake~=3.31"

Note: align with your policy of pinning actions by commit SHA (replace accordingly). This keeps behaviour consistent across Ubuntu and macOS and avoids OS-conditional maintenance.

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

Suggested change
- name: "Install cmake"
shell: "bash"
run: "pipx install cmake~=3.31"
- if: startsWith(matrix.os, 'macos-')
name: "Install pipx (macOS)"
shell: bash
run: brew install pipx
- name: "Install CMake via pipx"
shell: bash
run: pipx install "cmake~=3.31"
🤖 Prompt for AI Agents
In .github/workflows/clp-lint.yaml around lines 39-42, the workflow
unconditionally runs "pipx install cmake~=3.31" which fails on macOS because
pipx isn't installed; replace the current pipx+cmeake steps with a
cross-platform approach: add the maintained pipx setup action (pinned to a
specific commit SHA) before any pipx commands, then run pipx install cmake after
that, or alternately use OS-specific install steps (install pipx on
macOS/Ubuntu) — ensure the action is pinned by commit SHA and remove the
unconditional pipx install so the job succeeds on macOS and Ubuntu.

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.

Actionable comments posted: 2

Caution

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

⚠️ Outside diff range comments (1)
taskfiles/deps/main.yaml (1)

468-486: Making the ystdlib task public: check discoverability and docs

Exposing this task is useful for debugging and partial dependency builds. Ensure it’s discoverable in developer docs (e.g., mention “task deps:ystdlib”) and won’t be confused with higher-level “deps:core”.

I can draft a short paragraph for docs “Source Dependencies” explaining the new public task and when to use it.

Optionally, reduce maintenance churn by factoring the commit into a scoped variable, then interpolating it into the URL:

# Example refactor (illustrative)
vars:
  YSTDLIB_COMMIT: "9ed78cd"

tasks:
  ystdlib:
    cmds:
      - task: "yscope-dev-utils:remote:download-and-extract-tar"
        vars:
          FILE_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
          URL: "https://github.com/y-scope/ystdlib-cpp/archive/{{.YSTDLIB_COMMIT}}.tar.gz"
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 7d194d1 and d719bba.

📒 Files selected for processing (2)
  • docs/src/dev-guide/components-core/index.md (1 hunks)
  • taskfiles/deps/main.yaml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: ubuntu-jammy-lint
  • GitHub Check: centos-stream-9-dynamic-linked-bins
  • GitHub Check: centos-stream-9-static-linked-bins
  • GitHub Check: lint-check (ubuntu-24.04)
🔇 Additional comments (2)
docs/src/dev-guide/components-core/index.md (1)

54-54: ystdlib-cpp bump verified; adjust verification script

The docs and Taskfile both reference commit 9ed78cd for ystdlib-cpp, so the revision bump itself is correct. The apparent “mismatch” in your script is due to rg -nPo prepending the line number (e.g. 54:9ed78cd), not an actual commit discrepancy.

To fix, update the extraction commands to omit -n, for example:

--- task/check-ystd-sync.sh
+++ task/check-ystd-sync.sh
@@ -3,7 +3,7 @@
 docs_file='docs/src/dev-guide/components-core/index.md'
 task_file='taskfiles/deps/main.yaml'

-# Extract commits (includes line numbers)
-docs_ystd_commit=$(rg -nPo '\[ystdlib-cpp.*\|\s*\K[0-9a-f]{7,40}' "$docs_file")
+# Extract commits (omit line numbers)
+docs_ystd_commit=$(rg -Po '\[ystdlib-cpp.*\|\s*\K[0-9a-f]{7,40}' "$docs_file")
 task_ystd_commit=$(rg -nPo 'ystdlib-cpp/archive/\K[0-9a-f]{7,40}' "$task_file" | tail -n1)

 echo "Docs ystdlib commit: $docs_ystd_commit"

With this change, both variables will be 9ed78cd, and the test will pass:

Docs ystdlib commit: 9ed78cd
Taskfile ystdlib commit: 9ed78cd
Docs and Taskfile are in sync.

Revision bump approved.

taskfiles/deps/main.yaml (1)

479-482: Manual verification required — checksum tool unavailable
The sandbox lacked a SHA-256 utility, so the actual hash couldn’t be computed. Please manually verify that the FILE_SHA256 matches the downloaded tarball, and consider pinning to the full 40-character commit for immutability.

• File: taskfiles/deps/main.yaml (lines 479–482)
• Current URL:
https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz
• Expected SHA256 (in file):
f9baaae0886439862204e8062c69dd49354cb14ad4e59f7c35779d544384955e
• Resolved full commit SHA:
9ed78cd04fad63884b94b8ce55c465dd4009de77

Action items:

  1. Download the tarball locally and run sha256sum (or equivalent) to confirm the checksum matches.
  2. Replace the URL’s short SHA (9ed78cd) with the full commit SHA (9ed78cd04fad63884b94b8ce55c465dd4009de77) to prevent future ambiguity.

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.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between d719bba and b96e4d1.

📒 Files selected for processing (2)
  • components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh (2 hunks)
  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: centos-stream-9-deps-image
  • GitHub Check: lint-check (ubuntu-24.04)
  • GitHub Check: build-macos (macos-15, false)
  • GitHub Check: build-macos (macos-15, true)
  • GitHub Check: build-macos (macos-14, true)

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.

Actionable comments posted: 2

♻️ Duplicate comments (4)
components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh (2)

24-24: pipx is installed, but shims may not land on a global PATH — direct CMake/Task installs could be undiscoverable later

Installing via pipx without setting PIPX_BIN_DIR typically places shims under ~/.local/bin, which is not guaranteed to be on PATH in CI or root shells. Set PIPX_HOME and PIPX_BIN_DIR before pipx installs so cmake and task land in /usr/local/bin.

Apply the environment initialisation once before the pipx installs (shown here adjacent to the CMake block below for locality):

 # See also: https://github.com/y-scope/clp/issues/795
 if command -v cmake ; then
     apt-get purge -y cmake
 fi
-pipx install "cmake~=3.31"
+export PIPX_HOME=/opt/pipx
+export PIPX_BIN_DIR=/usr/local/bin
+mkdir -p "$PIPX_HOME" "$PIPX_BIN_DIR"
+pipx install --force "cmake~=3.31"

32-38: Align comment with constraint; make CMake install deterministic; verify version on PATH

  • Comment says v3.31.6 while the constraint is ~=3.31. Prefer “v3.31.x” or pin exactly.
  • Harden pipx placement (PIPX_HOME/BIN_DIR), force-reinstall for idempotency, and verify cmake is usable and within the expected minor.
  • Consider not installing system cmake at all to avoid install-then-purge churn (see extra diff below).

Apply:

-# Install CMake v3.31.6 as ANTLR and yaml-cpp do not yet support CMake v4+.
+# Install CMake v3.31.x as ANTLR and yaml-cpp do not yet support CMake v4+.
 # See also: https://github.com/y-scope/clp/issues/795
 if command -v cmake ; then
     apt-get purge -y cmake
 fi
-pipx install "cmake~=3.31"
+export PIPX_HOME=/opt/pipx
+export PIPX_BIN_DIR=/usr/local/bin
+mkdir -p "$PIPX_HOME" "$PIPX_BIN_DIR"
+pipx install --force "cmake~=3.31"
+# Sanity checks
+if ! command -v cmake >/dev/null ; then
+  echo "cmake shim not found on PATH (${PIPX_BIN_DIR})." >&2
+  exit 1
+fi
+cmake --version
+cmake --version | grep -E '^cmake version 3\.31\.' >/dev/null

Outside this hunk: to avoid the install-then-purge cycle, drop cmake from the apt-get list:

 DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
   ca-certificates \
   checkinstall \
-  cmake \
   curl \
   build-essential \
   git \

If you prefer an exact pin, update both the comment and installer to ==3.31.6 and adjust the grep accordingly. To validate across the repo, I can provide a script to scan CI logs for the reported CMake version.

components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh (2)

26-26: Bootstrap pipx safely: avoid PATH pitfalls and place shims in a global bin

Installing pipx with --user puts the entry point under ~/.local/bin and a bare “pipx …” will likely fail. Use the module form and direct pipx shims to /usr/local/bin; create /opt/pipx for isolation.

-python3 -m pip install --user pipx
+python3 -m pip install --user pipx
+# Ensure pipx installs shims to a global bin dir on PATH and avoid PATH dependence for pipx
+export PIPX_HOME=/opt/pipx
+export PIPX_BIN_DIR=/usr/local/bin
+mkdir -p "$PIPX_HOME" "$PIPX_BIN_DIR"

28-34: Align comment with constraint; make CMake install deterministic; avoid install-then-remove churn; verify version

  • Comment claims v3.31.6 but installer uses ~=3.31 — align wording or pin exactly.
  • Prefer python3 -m pipx to avoid PATH reliance; set PIPX_* as above; force install for idempotency; add version check.
  • Consider dropping cmake from the initial dnf package list to avoid installing only to remove it.

Apply:

-# Install CMake v3.31.6 as ANTLR and yaml-cpp do not yet support CMake v4+.
+# Install CMake v3.31.x as ANTLR and yaml-cpp do not yet support CMake v4+.
 # See also: https://github.com/y-scope/clp/issues/795
 if command -v cmake ; then
     dnf remove -y cmake
 fi
-pipx install "cmake~=3.31"
+python3 -m pipx install --force "cmake~=3.31"
+# Sanity checks
+if ! command -v cmake >/dev/null ; then
+  echo "cmake shim not found on PATH (${PIPX_BIN_DIR})." >&2
+  exit 1
+fi
+cmake --version
+cmake --version | grep -E '^cmake version 3\.31\.' >/dev/null

Outside this hunk: remove cmake from the dnf install list to avoid the remove step:

 dnf install -y \
-    cmake \
     diffutils \
     gcc-c++ \
     git \
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between b96e4d1 and 2d0e114.

📒 Files selected for processing (2)
  • components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh (1 hunks)
  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (6)
📚 Learning: 2025-07-07T17:41:15.655Z
Learnt from: jackluo923
PR: y-scope/clp#1054
File: components/core/tools/scripts/lib_install/musllinux_1_2/install-prebuilt-packages.sh:27-32
Timestamp: 2025-07-07T17:41:15.655Z
Learning: In CLP installation scripts, consistency across platform scripts is prioritized over defensive programming improvements. For example, when extracting Task binaries with tar in `install-prebuilt-packages.sh`, the extraction pattern should remain consistent with other platform scripts rather than adding defensive flags like `--strip-components=1` to handle potential tarball layout changes.

Applied to files:

  • components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh
  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
📚 Learning: 2025-05-06T09:48:55.408Z
Learnt from: kirkrodrigues
PR: y-scope/clp#881
File: components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh:35-41
Timestamp: 2025-05-06T09:48:55.408Z
Learning: For installation scripts in the CLP project, prefer explicit error handling over automatic dependency resolution (like `apt-get install -f`) when installing packages to give users more control over their system.

Applied to files:

  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
📚 Learning: 2025-07-01T14:52:15.217Z
Learnt from: jackluo923
PR: y-scope/clp#1054
File: components/core/tools/scripts/lib_install/musllinux_1_2/install-prebuilt-packages.sh:6-15
Timestamp: 2025-07-01T14:52:15.217Z
Learning: For installation scripts in the CLP project, maintain consistency in command patterns across platforms rather than applying platform-specific optimizations. When a platform follows a pattern of separate update and install commands (like `apt-get update && apt-get install` or `apk update && apk add`), preserve this pattern for uniform script structure.

Applied to files:

  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
📚 Learning: 2025-07-01T14:51:19.172Z
Learnt from: jackluo923
PR: y-scope/clp#1054
File: components/core/tools/scripts/lib_install/musllinux_1_2/install-packages-from-source.sh:6-8
Timestamp: 2025-07-01T14:51:19.172Z
Learning: In CLP installation scripts within `components/core/tools/scripts/lib_install/`, maintain consistency with existing variable declaration patterns across platforms rather than adding individual improvements like `readonly` declarations.

Applied to files:

  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
📚 Learning: 2025-07-01T14:52:15.217Z
Learnt from: jackluo923
PR: y-scope/clp#1054
File: components/core/tools/scripts/lib_install/musllinux_1_2/install-prebuilt-packages.sh:6-15
Timestamp: 2025-07-01T14:52:15.217Z
Learning: For installation scripts in the CLP project, maintain consistency in command patterns across different platforms (e.g., using separate update and install commands like `apk update && apk add`, `apt update && apt install`, `yum update && yum install`) rather than platform-specific optimizations, to ensure uniform script structure and readability.

Applied to files:

  • components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh

Comment on lines 35 to 40
# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
if command -v task ; then
echo "placeholder"
exit 1
fi
pipx install "go-task-bin>=3.40,<3.43"
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

🛠️ Refactor suggestion

Replace placeholder/exit with skip; install Task via python3 -m pipx with global shim path; verify version < 3.43

Mirror the Ubuntu flow for consistency across platform scripts, per team learnings.

-# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
-if command -v task ; then
-    echo "placeholder"
-    exit 1
-fi
-pipx install "go-task-bin>=3.40,<3.43"
+# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
+if command -v task ; then
+  echo "task already present; skipping install."
+else
+  python3 -m pipx install --force "go-task-bin>=3.40,<3.43"
+fi
+# Sanity check: ensure task is on PATH and within allowed range
+if ! command -v task >/dev/null ; then
+  echo "task not found on PATH (${PIPX_BIN_DIR})." >&2
+  exit 1
+fi
+task --version
+task --version | grep -E '[Vv]?3\.4[0-2]\.' >/dev/null

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In
components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh
around lines 35-40, replace the placeholder/exit flow with a skip-if-present
behavior and install Task using python3 -m pipx so the shim ends up on the
global pipx path (mirroring the Ubuntu script); specifically, if task is found
print a message and exit 0 (skip), otherwise run python3 -m pipx install
"go-task-bin>=3.40,<3.43" using the same pipx home/apps settings used in the
Ubuntu flow so the global shim is available, then run task --version and fail if
the installed version is >= 3.43 (exit non-zero) to enforce the <3.43
constraint.

Comment on lines 39 to 44
# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
if command -v task ; then
echo "placeholder"
exit 1
fi
pipx install "go-task-bin>=3.40,<3.43"
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Remove placeholder/early-exit; install Task via pipx with the same path hardening; verify version < 3.43

Exiting when task exists is disruptive; just skip re-install. Also ensure the shim path is global and add a quick version guard to prevent regressions from yanked versions.

-# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
-if command -v task ; then
-    echo "placeholder"
-    exit 1
-fi
-pipx install "go-task-bin>=3.40,<3.43"
+# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
+if command -v task ; then
+  echo "task already present; skipping install."
+else
+  # Reuse the same PIPX_* dirs set above
+  : "${PIPX_BIN_DIR:=/usr/local/bin}"
+  : "${PIPX_HOME:=/opt/pipx}"
+  mkdir -p "$PIPX_HOME" "$PIPX_BIN_DIR"
+  pipx install --force "go-task-bin>=3.40,<3.43"
+fi
+# Sanity check: ensure task is on PATH and within allowed range
+if ! command -v task >/dev/null ; then
+  echo "task not found on PATH (${PIPX_BIN_DIR})." >&2
+  exit 1
+fi
+task --version
+task --version | grep -E '[Vv]?3\.4[0-2]\.' >/dev/null
📝 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.

Suggested change
# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
if command -v task ; then
echo "placeholder"
exit 1
fi
pipx install "go-task-bin>=3.40,<3.43"
# Install a version of `task` < 3.43 to avoid https://github.com/y-scope/clp/issues/872
if command -v task ; then
echo "task already present; skipping install."
else
: "${PIPX_BIN_DIR:=/usr/local/bin}"
: "${PIPX_HOME:=/opt/pipx}"
mkdir -p "$PIPX_HOME" "$PIPX_BIN_DIR"
pipx install --force "go-task-bin>=3.40,<3.43"
fi
# Sanity check: ensure task is on PATH and within allowed range
if ! command -v task >/dev/null ; then
echo "task not found on PATH (${PIPX_BIN_DIR})." >&2
exit 1
fi
task --version
task --version | grep -E '[Vv]?3\.4[0-2]\.' >/dev/null
🤖 Prompt for AI Agents
In
components/core/tools/scripts/lib_install/ubuntu-jammy/install-prebuilt-packages.sh
around lines 39-44, remove the placeholder echo + exit and instead skip
reinstall when a suitable task binary already exists: check if command -v task
returns true and that task --version reports <3.43, and only proceed when
missing or out-of-range. When installing, invoke pipx with a hardened/shim path
(set PIPX_BIN_DIR to a global location like /usr/local/bin or the project
standard pipx bin dir) and use pipx install "go-task-bin>=3.40,<3.43" (use
--force if you need to upgrade), then add a post-install version guard that runs
task --version and exits nonzero if the installed version is >=3.43 to prevent
regressions from yanked versions.

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.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 34753ba and 57c51c9.

📒 Files selected for processing (2)
  • components/core/CMakeLists.txt (1 hunks)
  • docs/src/dev-docs/components-core/index.md (1 hunks)
🧰 Additional context used
🧠 Learnings (12)
📚 Learning: 2025-08-29T07:26:53.532Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1271
File: components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh:27-33
Timestamp: 2025-08-29T07:26:53.532Z
Learning: In CLP's build tool installation scripts, CMake version constraints should accommodate platform differences rather than using exact version pinning. Range constraints like "cmake>=3.23,<3.24" are preferred over exact pinning (cmake==3.23.5) to allow for platform-specific package availability while maintaining required version bounds.

Applied to files:

  • docs/src/dev-docs/components-core/index.md
  • components/core/CMakeLists.txt
📚 Learning: 2025-06-02T18:22:24.060Z
Learnt from: gibber9809
PR: y-scope/clp#955
File: components/core/src/clp_s/search/sql/CMakeLists.txt:8-26
Timestamp: 2025-06-02T18:22:24.060Z
Learning: In the clp project, ANTLR code generation at build time is being removed by another PR. When reviewing CMake files, be aware that some temporary suboptimal configurations may exist to reduce merge conflicts between concurrent PRs, especially around ANTLR_TARGET calls.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-05-02T22:11:55.711Z
Learnt from: LinZhihao-723
PR: y-scope/clp#873
File: components/core/src/clp/ffi/ir_stream/search/test/utils.hpp:15-18
Timestamp: 2025-05-02T22:11:55.711Z
Learning: The team plans to systematically improve include paths by adding `${PROJECT_SOURCE_DIR}/src` to CMake targets and using direct include paths instead of deep relative ones in a future PR.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-04T17:23:14.646Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/CMakeLists.txt:171-172
Timestamp: 2025-08-04T17:23:14.646Z
Learning: Bill-hbrhbr prefers concise, straightforward code over verbose defensive programming in CMake files. When find_package uses REQUIRED flag, additional existence checks are redundant and should be avoided.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-20T23:25:15.863Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1226
File: components/core/CMakeLists.txt:6-6
Timestamp: 2025-08-20T23:25:15.863Z
Learning: In CMakeLists.txt files, CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_LIST_DIR have the same value since the CMakeLists.txt file is both the listfile being processed and defines the source directory. The distinction between these variables is more relevant for separate .cmake module files.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-18T05:43:07.868Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: components/core/cmake/Modules/FindLibLZMA.cmake:21-24
Timestamp: 2025-08-18T05:43:07.868Z
Learning: In the CLP project, all supplied `<lib>_ROOT` variables will live within the `CLP_CORE_DEPS_DIR` as part of their architectural design. This means that using CLP_CORE_DEPS_DIR for library discovery in custom Find modules is the intended approach, and prioritizing individual `<lib>_ROOT` variables over CLP_CORE_DEPS_DIR is not necessary.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-07-23T09:54:45.185Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1122
File: components/core/src/clp/clp/CMakeLists.txt:175-195
Timestamp: 2025-07-23T09:54:45.185Z
Learning: In the CLP project, when reviewing CMakeLists.txt changes that introduce new compression library dependencies (BZip2, LibLZMA, LZ4, ZLIB), the team prefers to address conditional linking improvements in separate PRs rather than expanding the scope of focused migration PRs like the LibArchive task-based installation migration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-06-27T01:49:15.724Z
Learnt from: sitaowang1998
PR: y-scope/clp#1044
File: .github/workflows/clp-core-build-macos.yaml:0-0
Timestamp: 2025-06-27T01:49:15.724Z
Learning: In the clp project, manually setting LDFLAGS for library paths can cause runtime errors because it interferes with CMake's built-in library discovery and linking mechanisms. CMake can identify and correctly link to libraries on its own without requiring manual LDFLAGS configuration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2024-11-26T19:12:43.982Z
Learnt from: LinZhihao-723
PR: y-scope/clp#486
File: components/core/tests/test-error_handling.cpp:37-38
Timestamp: 2024-11-26T19:12:43.982Z
Learning: In the CLP project, C++20 is used, allowing the utilization of C++20 features such as class template argument deduction (CTAD) with `std::array`.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-13T19:58:26.058Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: taskfiles/deps/main.yaml:0-0
Timestamp: 2025-08-13T19:58:26.058Z
Learning: In the CLP project, custom CMake find modules (like FindLibLZMA.cmake) are designed to flexibly link against either shared or static libraries based on availability, rather than requiring both variants to be built. The find modules use flags like LibLZMA_USE_STATIC_LIBS and temporarily modify CMAKE_FIND_LIBRARY_SUFFIXES to prefer the desired library type while gracefully falling back if needed.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-09-03T07:29:35.223Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1107
File: components/core/src/clp_s/CMakeLists.txt:106-116
Timestamp: 2025-09-03T07:29:35.223Z
Learning: In the CLP project, do not suggest adding CONFIG or MODULE specifications to find_package calls. The maintainers prefer using find_package without these mode specifications.

Applied to files:

  • components/core/CMakeLists.txt
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: build-macos (macos-14, false)
  • GitHub Check: build-macos (macos-15, false)
  • GitHub Check: build-macos (macos-15, true)
  • GitHub Check: ubuntu-jammy-dynamic-linked-bins
  • GitHub Check: manylinux_2_28-x86_64-dynamic-linked-bins
  • GitHub Check: package-image
  • GitHub Check: ubuntu-jammy-static-linked-bins
  • GitHub Check: ubuntu-jammy-lint
  • GitHub Check: musllinux_1_2-x86_64-dynamic-linked-bins
  • GitHub Check: centos-stream-9-static-linked-bins
  • GitHub Check: centos-stream-9-dynamic-linked-bins
  • GitHub Check: musllinux_1_2-x86_64-static-linked-bins
  • GitHub Check: manylinux_2_28-x86_64-static-linked-bins
🔇 Additional comments (4)
docs/src/dev-docs/components-core/index.md (2)

59-59: ystdlib-cpp bump and URL formatting look correct

Commit 9ed78cd matches the referenced dependency bump; URL format is consistent with other rows. LGTM.


59-59: Quick consistency check — ystdlib-cpp commit 9ed78cd confirmed

Docs and taskfile reference the same commit:

  • docs/src/dev-docs/components-core/index.md:59 — 9ed78cd
  • taskfiles/deps/main.yaml:527 — URL contains 9ed78cd (FILE_SHA256 present)

No other differing commit hashes found.

components/core/CMakeLists.txt (2)

6-8: Post-project toolchain validation placement is correct

Including Toolchains/utils.cmake and calling validate_compiler_versions() after project() avoids pre-project toolchain side-effects and aligns with the simplified approach in this PR. LGTM.


6-8: Confirmed: validate_compiler_versions enforces AppleClang ≥ 15, Clang ≥ 15, and GNU ≥ 11

In components/core/cmake/Toolchains/utils.cmake the function sets CXX_COMPILER_MIN_VERSION to 15 for AppleClang/Clang and 11 for GNU, and issues a FATAL_ERROR when CMAKE_CXX_COMPILER_VERSION is VERSION_LESS the threshold; the error message includes the required version.

Copy link
Contributor

@sitaowang1998 sitaowang1998 left a comment

Choose a reason for hiding this comment

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

Since latest ystdlib-cpp supports being installed as a cmake package, we should use this feature instead of importing the source files.

Apart from the suggestions in taskfile, please update the core's CMakeLists.txt to use find_package for ystdlib-cpp.

@Bill-hbrhbr Bill-hbrhbr changed the title build(deps): Bump ystdlib to the newest version; Lower minimum Clang version for Velox compatibility. build(deps): Bump and switch ystdlib to cmake library installation; Lower minimum Clang version for Velox compatibility. Sep 15, 2025
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.

Actionable comments posted: 1

♻️ Duplicate comments (1)
taskfiles/deps/main.yaml (1)

521-529: Use full commit SHA and a commit var; add LAZY install message; remove Catch2 settings.

  • Short SHAs can collide; use the 40‑char SHA and store it in a var.
  • Add -DCMAKE_INSTALL_MESSAGE=LAZY for quieter, consistent logs.
  • If tests are off, don’t inject Catch2 settings.
 ystdlib:
   internal: true
   run: "once"
-  deps:
-      - task: "boost"
-      - task: "catch2"
+  deps:
+      - task: "boost"
   cmds:
-    - task: "utils:install-remote-cmake-lib"
+    - task: "utils:install-remote-cmake-lib"
       vars:
-        CMAKE_GEN_ARGS:
-          - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
-          - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_CATCH2_LIB_NAME}}.cmake"
-          - "-Dystdlib_BUILD_TESTING=OFF"
-        LIB_NAME: "ystdlib"
-        TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
-        TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz"
+        CMAKE_GEN_ARGS:
+          - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
+          - "-DCMAKE_INSTALL_MESSAGE=LAZY"
+          - "-Dystdlib_BUILD_TESTING=OFF"
+        LIB_NAME: "ystdlib"
+        # TODO: replace with the full 40-char commit SHA and matching checksum
+        YSTDLIB_COMMIT: "9ed78cdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+        TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
+        TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/{{.YSTDLIB_COMMIT}}.tar.gz"
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9d66322 and df085d1.

📒 Files selected for processing (2)
  • components/core/CMakeLists.txt (2 hunks)
  • taskfiles/deps/main.yaml (3 hunks)
🧰 Additional context used
🧠 Learnings (15)
📓 Common learnings
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1122
File: components/core/src/clp/clp/CMakeLists.txt:175-195
Timestamp: 2025-07-23T09:54:45.185Z
Learning: In the CLP project, when reviewing CMakeLists.txt changes that introduce new compression library dependencies (BZip2, LibLZMA, LZ4, ZLIB), the team prefers to address conditional linking improvements in separate PRs rather than expanding the scope of focused migration PRs like the LibArchive task-based installation migration.
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • components/core/CMakeLists.txt
  • taskfiles/deps/main.yaml
📚 Learning: 2025-06-02T18:22:24.060Z
Learnt from: gibber9809
PR: y-scope/clp#955
File: components/core/src/clp_s/search/sql/CMakeLists.txt:8-26
Timestamp: 2025-06-02T18:22:24.060Z
Learning: In the clp project, ANTLR code generation at build time is being removed by another PR. When reviewing CMake files, be aware that some temporary suboptimal configurations may exist to reduce merge conflicts between concurrent PRs, especially around ANTLR_TARGET calls.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-07-23T09:54:45.185Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1122
File: components/core/src/clp/clp/CMakeLists.txt:175-195
Timestamp: 2025-07-23T09:54:45.185Z
Learning: In the CLP project, when reviewing CMakeLists.txt changes that introduce new compression library dependencies (BZip2, LibLZMA, LZ4, ZLIB), the team prefers to address conditional linking improvements in separate PRs rather than expanding the scope of focused migration PRs like the LibArchive task-based installation migration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-05-02T22:11:55.711Z
Learnt from: LinZhihao-723
PR: y-scope/clp#873
File: components/core/src/clp/ffi/ir_stream/search/test/utils.hpp:15-18
Timestamp: 2025-05-02T22:11:55.711Z
Learning: The team plans to systematically improve include paths by adding `${PROJECT_SOURCE_DIR}/src` to CMake targets and using direct include paths instead of deep relative ones in a future PR.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-04T17:23:14.646Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/CMakeLists.txt:171-172
Timestamp: 2025-08-04T17:23:14.646Z
Learning: Bill-hbrhbr prefers concise, straightforward code over verbose defensive programming in CMake files. When find_package uses REQUIRED flag, additional existence checks are redundant and should be avoided.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-20T23:25:15.863Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1226
File: components/core/CMakeLists.txt:6-6
Timestamp: 2025-08-20T23:25:15.863Z
Learning: In CMakeLists.txt files, CMAKE_CURRENT_SOURCE_DIR and CMAKE_CURRENT_LIST_DIR have the same value since the CMakeLists.txt file is both the listfile being processed and defines the source directory. The distinction between these variables is more relevant for separate .cmake module files.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-18T05:43:07.868Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: components/core/cmake/Modules/FindLibLZMA.cmake:21-24
Timestamp: 2025-08-18T05:43:07.868Z
Learning: In the CLP project, all supplied `<lib>_ROOT` variables will live within the `CLP_CORE_DEPS_DIR` as part of their architectural design. This means that using CLP_CORE_DEPS_DIR for library discovery in custom Find modules is the intended approach, and prioritizing individual `<lib>_ROOT` variables over CLP_CORE_DEPS_DIR is not necessary.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-06-27T01:49:15.724Z
Learnt from: sitaowang1998
PR: y-scope/clp#1044
File: .github/workflows/clp-core-build-macos.yaml:0-0
Timestamp: 2025-06-27T01:49:15.724Z
Learning: In the clp project, manually setting LDFLAGS for library paths can cause runtime errors because it interferes with CMake's built-in library discovery and linking mechanisms. CMake can identify and correctly link to libraries on its own without requiring manual LDFLAGS configuration.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-29T07:26:53.532Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1271
File: components/core/tools/scripts/lib_install/centos-stream-9/install-prebuilt-packages.sh:27-33
Timestamp: 2025-08-29T07:26:53.532Z
Learning: In CLP's build tool installation scripts, CMake version constraints should accommodate platform differences rather than using exact version pinning. Range constraints like "cmake>=3.23,<3.24" are preferred over exact pinning (cmake==3.23.5) to allow for platform-specific package availability while maintaining required version bounds.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2024-11-26T19:12:43.982Z
Learnt from: LinZhihao-723
PR: y-scope/clp#486
File: components/core/tests/test-error_handling.cpp:37-38
Timestamp: 2024-11-26T19:12:43.982Z
Learning: In the CLP project, C++20 is used, allowing the utilization of C++20 features such as class template argument deduction (CTAD) with `std::array`.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-13T19:58:26.058Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1184
File: taskfiles/deps/main.yaml:0-0
Timestamp: 2025-08-13T19:58:26.058Z
Learning: In the CLP project, custom CMake find modules (like FindLibLZMA.cmake) are designed to flexibly link against either shared or static libraries based on availability, rather than requiring both variants to be built. The find modules use flags like LibLZMA_USE_STATIC_LIBS and temporarily modify CMAKE_FIND_LIBRARY_SUFFIXES to prefer the desired library type while gracefully falling back if needed.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-09-03T07:29:35.223Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1107
File: components/core/src/clp_s/CMakeLists.txt:106-116
Timestamp: 2025-09-03T07:29:35.223Z
Learning: In the CLP project, do not suggest adding CONFIG or MODULE specifications to find_package calls. The maintainers prefer using find_package without these mode specifications.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-08-03T18:56:07.366Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/cmake/Modules/FindBZip2.cmake:49-65
Timestamp: 2025-08-03T18:56:07.366Z
Learning: In CLP's custom CMake Find modules, `FindStaticLibraryDependencies` populates the `*_DYNAMIC_LIBS` variable even when building with static libraries. When the main library is static, all dependencies must also use static libraries - there's no fallback to shared libraries for dependencies.

Applied to files:

  • components/core/CMakeLists.txt
📚 Learning: 2025-07-24T21:56:05.806Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/cmake/Modules/FindBZip2.cmake:60-60
Timestamp: 2025-07-24T21:56:05.806Z
Learning: In CLP's custom CMake Find modules (like FindBZip2.cmake), when building with dynamic libraries, the code intentionally uses `bzip2_PKGCONF_STATIC_LIBRARIES` as input to `FindDynamicLibraryDependencies`. This is a deliberate fallback mechanism to ensure all library dependencies are resolved even in dynamic builds, using the static library list from pkg-config as a source of dependency information.

Applied to files:

  • components/core/CMakeLists.txt
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build-macos (macos-14, true)
  • GitHub Check: lint-check (ubuntu-24.04)
🔇 Additional comments (4)
components/core/CMakeLists.txt (2)

6-8: Post-project toolchain validation is in the right place.

Including utils and validating after project() avoids pre-project toolchain side-effects. Looks good.


296-298: Confirm ystdlib exported targets and add a minimum version

  • Update components/core/CMakeLists.txt (around line 296) to require a minimum ystdlib version that contains the exported targets used by the repo (taskfiles/deps/main.yaml pins ystdlib-cpp at commit 9ed78cd). Example replacement:
-if(CLP_NEED_YSTDLIB)
-    find_package(ystdlib REQUIRED)
+if(CLP_NEED_YSTDLIB)
+    # TODO: set the minimum version that contains the required targets/exports
+    find_package(ystdlib <MIN_VERSION> REQUIRED)
     message(STATUS "Found ystdlib-cpp ${ystdlib_VERSION}")
 endif()
  • Confirm the upstream ystdlib package actually exports ystdlib::containers and ystdlib::error_handling (these targets are referenced throughout the repo — e.g. components/core/CMakeLists.txt lines ~762–763). If upstream uses different target names, either update the links to the correct targets or add alias targets.
taskfiles/deps/main.yaml (2)

22-22: Good: centralising Catch2 name.

Promoting Catch2’s name to a global var improves consistency across tasks.


225-225: Good: use the shared Catch2 var in the task.

Keeps task config DRY and aligned with other deps.

sitaowang1998
sitaowang1998 previously approved these changes Sep 15, 2025
Copy link
Contributor

@sitaowang1998 sitaowang1998 left a comment

Choose a reason for hiding this comment

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

LGTM. For the title, how about:

build(deps): Bump and switch `ystdlib` to package installation; Lower minimum Clang version for Velox compatibility.

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.

Actionable comments posted: 2

♻️ Duplicate comments (1)
taskfiles/deps/main.yaml (1)

528-529: Pin ystdlib to a 40‑char commit and factor commit/SHA into vars.

Short SHAs can collide; factoring also simplifies future bumps. Replace the inline URL and SHA with local vars.

   ystdlib:
     internal: true
+    vars:
+      # Full 40-char commit to avoid ambiguity (replace with the actual full SHA for 9ed78cd…)
+      YSTDLIB_COMMIT: "9ed78cdXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
+      YSTDLIB_TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
     run: "once"
     deps:
       - task: "boost"
     cmds:
       - task: "utils:install-remote-cmake-lib"
         vars:
           CMAKE_GEN_ARGS:
             - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
             - "-DCMAKE_BUILD_TYPE=Release"
             - "-DCMAKE_INSTALL_MESSAGE=LAZY"
             - "-Dystdlib_BUILD_TESTING=OFF"
           LIB_NAME: "ystdlib"
-          TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
-          TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz"
+          TARBALL_SHA256: "{{.YSTDLIB_TARBALL_SHA256}}"
+          TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/{{.YSTDLIB_COMMIT}}.tar.gz"
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df085d1 and 6d2dc5d.

📒 Files selected for processing (1)
  • taskfiles/deps/main.yaml (3 hunks)
🧰 Additional context used
🧠 Learnings (5)
📓 Common learnings
Learnt from: sitaowang1998
PR: y-scope/clp#1226
File: taskfiles/deps/main.yaml:518-520
Timestamp: 2025-09-15T17:27:39.113Z
Learning: The ystdlib dependency in taskfiles/deps/main.yaml requires Catch2 as a dependency even when built with -Dystdlib_BUILD_TESTING=OFF because ystdlib's cmake configuration references Catch2 internally.
📚 Learning: 2025-09-15T17:27:39.113Z
Learnt from: sitaowang1998
PR: y-scope/clp#1226
File: taskfiles/deps/main.yaml:518-520
Timestamp: 2025-09-15T17:27:39.113Z
Learning: The ystdlib dependency in taskfiles/deps/main.yaml requires Catch2 as a dependency even when built with -Dystdlib_BUILD_TESTING=OFF because ystdlib's cmake configuration references Catch2 internally.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-08-04T17:23:14.646Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/CMakeLists.txt:171-172
Timestamp: 2025-08-04T17:23:14.646Z
Learning: Bill-hbrhbr prefers concise, straightforward code over verbose defensive programming in CMake files. When find_package uses REQUIRED flag, additional existence checks are redundant and should be avoided.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-07-23T09:54:45.185Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1122
File: components/core/src/clp/clp/CMakeLists.txt:175-195
Timestamp: 2025-07-23T09:54:45.185Z
Learning: In the CLP project, when reviewing CMakeLists.txt changes that introduce new compression library dependencies (BZip2, LibLZMA, LZ4, ZLIB), the team prefers to address conditional linking improvements in separate PRs rather than expanding the scope of focused migration PRs like the LibArchive task-based installation migration.

Applied to files:

  • taskfiles/deps/main.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (6)
  • GitHub Check: manylinux_2_28-x86_64-static-linked-bins
  • GitHub Check: centos-stream-9-static-linked-bins
  • GitHub Check: ubuntu-jammy-lint
  • GitHub Check: centos-stream-9-dynamic-linked-bins
  • GitHub Check: manylinux_2_28-x86_64-dynamic-linked-bins
  • GitHub Check: lint-check (ubuntu-24.04)
🔇 Additional comments (2)
taskfiles/deps/main.yaml (2)

22-22: Parameterize Catch2 lib name — LGTM.

Good move making Catch2’s lib name a public var for consistency with other deps.


225-225: Use of G_CATCH2_LIB_NAME here — LGTM.

Keeps naming uniform and simplifies future renames.

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.

Actionable comments posted: 1

♻️ Duplicate comments (1)
taskfiles/deps/main.yaml (1)

521-528: Pin to full commit SHA and factor commit/checksum into vars for safer bumps.

Short SHAs can collide and are less auditable. Introduce ystdlib-local vars and reference them below.

Apply this diff:

   ystdlib:
     internal: true
+    vars:
+      # Full 40-char commit for reproducibility
+      YSTDLIB_COMMIT: "REPLACE_WITH_FULL_40_CHAR_SHA"
+      YSTDLIB_TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
     run: "once"
     deps:
       - task: "boost"
     cmds:
       - task: "utils:install-remote-cmake-lib"
         vars:
           CMAKE_GEN_ARGS:
             - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
             - "-DCMAKE_BUILD_TYPE=Release"
             - "-DCMAKE_INSTALL_MESSAGE=LAZY"
             - "-Dystdlib_BUILD_TESTING=OFF"
           LIB_NAME: "ystdlib"
-          TARBALL_SHA256: "65990dc2bcc4a355c2181bfe31a7800f492309d1bcd340f52a34e85047e61bc8"
-          TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/9ed78cd.tar.gz"
+          TARBALL_SHA256: "{{.YSTDLIB_TARBALL_SHA256}}"
+          TARBALL_URL: "https://github.com/y-scope/ystdlib-cpp/archive/{{.YSTDLIB_COMMIT}}.tar.gz"

After updating YSTDLIB_COMMIT, recompute and replace YSTDLIB_TARBALL_SHA256 with the checksum for the full-commit tarball.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6d2dc5d and 0f4530f.

📒 Files selected for processing (1)
  • taskfiles/deps/main.yaml (1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-09-15T18:53:15.820Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1226
File: taskfiles/deps/main.yaml:522-527
Timestamp: 2025-09-15T18:53:15.820Z
Learning: When ystdlib is built with -Dystdlib_BUILD_TESTING=OFF in taskfiles/deps/main.yaml, it does not require Catch2 settings to be injected via CMAKE_GEN_ARGS since testing is disabled and Catch2 is not needed during the build process.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-07-23T09:54:45.185Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1122
File: components/core/src/clp/clp/CMakeLists.txt:175-195
Timestamp: 2025-07-23T09:54:45.185Z
Learning: In the CLP project, when reviewing CMakeLists.txt changes that introduce new compression library dependencies (BZip2, LibLZMA, LZ4, ZLIB), the team prefers to address conditional linking improvements in separate PRs rather than expanding the scope of focused migration PRs like the LibArchive task-based installation migration.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-08-09T04:07:27.083Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1156
File: components/core/CMakeLists.txt:772-772
Timestamp: 2025-08-09T04:07:27.083Z
Learning: In the CLP project's CMakeLists.txt, when reviewing changes related to the ${zstd_TARGET} variable usage in test linking, the team is planning a refactoring PR to improve this mechanism. Guards for undefined target variables should be deferred to that separate PR rather than being added in focused dependency migration PRs.

Applied to files:

  • taskfiles/deps/main.yaml
📚 Learning: 2025-08-04T17:23:14.646Z
Learnt from: Bill-hbrhbr
PR: y-scope/clp#1124
File: components/core/CMakeLists.txt:171-172
Timestamp: 2025-08-04T17:23:14.646Z
Learning: Bill-hbrhbr prefers concise, straightforward code over verbose defensive programming in CMake files. When find_package uses REQUIRED flag, additional existence checks are redundant and should be avoided.

Applied to files:

  • taskfiles/deps/main.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (12)
  • GitHub Check: package-image
  • GitHub Check: musllinux_1_2-x86_64-static-linked-bins
  • GitHub Check: musllinux_1_2-x86_64-dynamic-linked-bins
  • GitHub Check: manylinux_2_28-x86_64-dynamic-linked-bins
  • GitHub Check: ubuntu-jammy-lint
  • GitHub Check: ubuntu-jammy-static-linked-bins
  • GitHub Check: ubuntu-jammy-dynamic-linked-bins
  • GitHub Check: manylinux_2_28-x86_64-static-linked-bins
  • GitHub Check: centos-stream-9-dynamic-linked-bins
  • GitHub Check: centos-stream-9-static-linked-bins
  • GitHub Check: build-macos (macos-14, false)
  • GitHub Check: lint-check (ubuntu-24.04)
🔇 Additional comments (1)
taskfiles/deps/main.yaml (1)

517-528: Switch to utils:install-remote-cmake-lib for ystdlib looks good.

Args are sane, Boost setting injection is correct, and disabling tests aligns with dropping Catch2 wiring here.

Please confirm CI covered AppleClang 15 and Clang 15 with this ystdlib commit (9ed78cd) and that no latent Catch2 references surface when BUILD_TESTING=OFF.

Comment on lines +521 to +525
CMAKE_GEN_ARGS:
- "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
- "-DCMAKE_BUILD_TYPE=Release"
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
- "-Dystdlib_BUILD_TESTING=OFF"
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick (assertive)

Add CMP0074=NEW to make Boost discovery deterministic across older CMake.

You’re injecting Boost settings via -C; if ystdlib relies on _ROOT semantics under CMake < 3.27, set CMP0074 to NEW like other deps (e.g., msgpack-cxx, spdlog).

Apply this diff:

           CMAKE_GEN_ARGS:
             - "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
+            - "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW"
             - "-DCMAKE_BUILD_TYPE=Release"
             - "-DCMAKE_INSTALL_MESSAGE=LAZY"
             - "-Dystdlib_BUILD_TESTING=OFF"

Confirm ystdlib’s minimum required CMake version; if it’s >= 3.27, this is optional.

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

Suggested change
CMAKE_GEN_ARGS:
- "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
- "-DCMAKE_BUILD_TYPE=Release"
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
- "-Dystdlib_BUILD_TESTING=OFF"
CMAKE_GEN_ARGS:
- "-C {{.G_DEPS_CORE_CMAKE_SETTINGS_DIR}}/{{.G_BOOST_LIB_NAME}}.cmake"
- "-DCMAKE_POLICY_DEFAULT_CMP0074=NEW"
- "-DCMAKE_BUILD_TYPE=Release"
- "-DCMAKE_INSTALL_MESSAGE=LAZY"
- "-Dystdlib_BUILD_TESTING=OFF"
🤖 Prompt for AI Agents
In taskfiles/deps/main.yaml around lines 521 to 525, the CMake generator args
inject Boost settings via -C which can be non-deterministic on CMake < 3.27; add
the policy override CMP0074=NEW to the CMAKE_GEN_ARGS alongside the existing
flags so Boost_ROOT semantics are honored (matching how other deps set it), and
verify ystdlib's minimum required CMake version—if ystdlib requires >= 3.27 this
change is optional; otherwise add the policy to ensure deterministic Boost
discovery.

Copy link
Member

@kirkrodrigues kirkrodrigues left a comment

Choose a reason for hiding this comment

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

Deferring to @sitaowang1998's review.

For the PR title, how about:

build(deps): Bump `ystdlib` to y-scope/ystdlib-cpp@9ed78cd and install `ystdlib` via CMake; Lower minimum Clang version for Velox compatibility.

@Bill-hbrhbr Bill-hbrhbr changed the title build(deps): Bump and switch ystdlib to cmake library installation; Lower minimum Clang version for Velox compatibility. build(deps): Bump ystdlib to y-scope/ystdlib-cpp@9ed78cd and install ystdlib via CMake; Lower minimum Clang version for Velox compatibility. Sep 16, 2025
@Bill-hbrhbr Bill-hbrhbr merged commit 9888c11 into y-scope:main Sep 16, 2025
28 of 36 checks passed
@Bill-hbrhbr Bill-hbrhbr deleted the bump-ystdlib-cpp branch September 16, 2025 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants