Skip to content

Add toolchains to infinity#3369

Open
euvre wants to merge 10 commits into
infiniflow:mainfrom
euvre:toolchain
Open

Add toolchains to infinity#3369
euvre wants to merge 10 commits into
infiniflow:mainfrom
euvre:toolchain

Conversation

@euvre
Copy link
Copy Markdown
Contributor

@euvre euvre commented May 19, 2026

What problem does this PR solve?

Add x84-64 and aarch64 toolchain to infinity.

Type of change

  • New Feature (non-breaking change which adds functionality)

Signed-off-by: noob <[email protected]>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

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 PR updates CMake build configuration and toolchains (adds arch-specific toolchains and libstdc++ module manifests), extends jemalloc/vcpkg discovery, pins python3 in vcpkg, converts RocksDB handles to std::unique_ptr in admin handlers, and adds a Flex lexer header plus diagnostic guards around Python.h.

Changes

CMake Build System & Toolchain Infrastructure

Layer / File(s) Summary
CMake core configuration
CMakeLists.txt, cmake/Findjemalloc.cmake
Bump supported CMake to 4.2.5, make -fuse-ld=mold conditional on non-cross builds, remove hardcoded static lib flags and GCC search-root workaround, correct Release/RelWithDebInfo C++ flag composition, replace CPU-feature probing with -DSIMDE_ENABLE_NATIVE_ALIASES and CI-selectable vcpkg toolchain, and require Python3 Development only; extend Findjemalloc to include vcpkg hint paths and jemalloc_s candidate.
Architecture-specific toolchains & modules
cmake/aarch64.cmake, cmake/aarch64-libstdc++.modules.json, cmake/x86_64-libstdc++.module.json, cmake/x86_64-v{1,2,3,4}.cmake
Add aarch64 and x86_64 (v1–v4) toolchain files that set target/system, init target compiler flags (-march/--target), constrain CMake find-root behavior, select lld linker, and point to toolchain-local libstdc++ modules JSON files. CI selects these toolchains; non-CI builds default to -march=native with -DSIMDE_ENABLE_NATIVE_ALIASES.
vcpkg overrides & link directories
vcpkg.json, src/CMakeLists.txt
Pin python3 in vcpkg.json overrides (3.12.13, port-version: 1). src/CMakeLists.txt appends ${CMAKE_BINARY_DIR}/vcpkg_installed/${VCPKG_TARGET_TRIPLET}/lib to infinity's public link directories when cross-compiling.

Source Code Infrastructure Updates

Layer / File(s) Summary
Admin API RocksDB ownership
src/admin/admin_executor_impl.cpp
AdminExecutor catalog display handlers convert RocksDB handle from raw rocksdb::DB* to owning std::unique_ptr<rocksdb::DB> across list/show handlers; ShowDatabase filters results to the requested schema_name.
Parser infrastructure & diagnostics
src/parser/FlexLexer.h, src/common/third_party.cppm
Add FlexLexer.h defining FlexLexer and yyFlexLexer C++ interfaces for flex-generated lexers. Wrap #include "Python.h" in third_party.cppm with clang diagnostic push/pop to ignore -Wmacro-redefined.

Estimated code review effort:

🎯 4 (Complex) | ⏱️ ~60 minutes

Suggested labels:
ci

🐰 Hop into toolchains bright,
Where aarch64 meets x86 light,
RocksDB pointers tamed with care,
Flex and Python all laid fair—
Build scripts dance in newfound grace! 🏗️

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 5.26% 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 'Add toolchains to infinity' is partially related to the changeset. While it refers to adding toolchains, it is overly broad and lacks specificity about the x86-64 and aarch64 architectures that are the primary focus of the changes.
Description check ✅ Passed The PR description addresses the required template sections with a problem statement and type of change selection, though the problem description contains a typo ('x84-64' instead of 'x86-64') and lacks detail about the broader scope of CMake and build configuration 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.


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

❤️ Share

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

Copy link
Copy Markdown

@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: 6

Caution

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

⚠️ Outside diff range comments (1)
src/admin/admin_executor_impl.cpp (1)

647-654: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add status validation after OpenForReadOnly to prevent null-pointer dereference.

All 14 updated handlers call rocksdb::TransactionDB::OpenForReadOnly(...) without capturing or checking the returned status, then immediately dereference db via db->NewIterator(...) within 13–17 lines. If OpenForReadOnly fails, db remains uninitialized, causing a crash.

Suggested fix pattern
-    rocksdb::TransactionDB::OpenForReadOnly(options, catalog_dir, &db);
+    auto s = rocksdb::TransactionDB::OpenForReadOnly(options, catalog_dir, &db);
+    if (!s.ok() || db == nullptr) {
+        query_result.result_table_ = nullptr;
+        query_result.status_ = Status::InternalError(fmt::format("Failed to open catalog db: {}", s.ToString()));
+        return query_result;
+    }

Also applies to: 801–816, 954–969, 1112–1127, 1262–1277, 1416–1432, 1563–1579, 1715–1732, 1861–1876, 2026–2042, 2203–2218, 2371–2387, 2538–2554, 2708–2725

🤖 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 `@src/admin/admin_executor_impl.cpp` around lines 647 - 654, The call to
rocksdb::TransactionDB::OpenForReadOnly(options, catalog_dir, &db) is not
checking the returned rocksdb::Status, so db may be null and subsequent
db->NewIterator(...) dereferences a nullptr; update each handler (the blocks
that call OpenForReadOnly and then db->NewIterator) to capture the returned
rocksdb::Status, check status.ok(), and on failure log the error (include
status.ToString()), clean up/return an error status from the handler instead of
continuing, only calling db->NewIterator(...) when status.ok(); use the same
pattern for OpenForReadOnly, db, and NewIterator in functions referenced by
these blocks to avoid crashes.
🤖 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 `@cmake/aarch64-libstdc`++.modules.json:
- Around line 7-15: The JSON hardcodes toolchain include roots under the
"local-arguments" -> "system-include-directories" array (entries referencing
"c++/15" and "clang/20") which reduces cross-compilation portability; annotate
that block with an inline comment explaining the exact GCC/Clang versions
required for this module file and add guidance for developers on how to generate
or override these paths (e.g., use CMake variables or environment-provided
include roots and regenerate this JSON), or replace the hardcoded entries with
placeholders that your build scripts substitute at generation time, updating the
"source-path" and directory entries accordingly.

In `@cmake/aarch64.cmake`:
- Line 3: The find_program call for AARCH64_GCC should be removed or made
conditional because AARCH64_GCC (from find_program) is never used and the
project uses clang-style cross-compilation via --target rather than setting
CMAKE_C_COMPILER/CMAKE_CXX_COMPILER; replace or change the line using
find_program(AARCH64_GCC ...) to either delete it entirely or change it to an
optional probe (no REQUIRED) and only run it when
CMAKE_C_COMPILER/CMAKE_CXX_COMPILER are unset and you intend to use a gcc
toolchain; reference symbols: AARCH64_GCC, find_program, CMAKE_C_COMPILER,
CMAKE_CXX_COMPILER, and the --target cross-compilation flag.

In `@cmake/x86_64-v4.cmake`:
- Line 3: The toolchain wrongly relies on passing --target= to GCC found by
find_program(x86_64_GCC x86_64-linux-gnu-gcc REQUIRED); instead set
CMAKE_C_COMPILER and CMAKE_CXX_COMPILER to the appropriate cross-compiler
executables (e.g., the x86_64-linux-gnu gcc/ g++ binaries found) and remove any
--target= flags from compiler flags, using only target-appropriate options like
-march= when needed; apply the same change to the aarch64 toolchain file that
follows the same pattern.

In `@CMakeLists.txt`:
- Around line 261-266: Move the CI cross-compilation toolchain selection so
CMAKE_TOOLCHAIN_FILE is set before the project() call: detect
IS_CI_TEST_PIPELINE and the X86_64/ARM64 flags earlier and set
CMAKE_TOOLCHAIN_FILE to "${CMAKE_CURRENT_SOURCE_DIR}/cmake/x86_64-v2.cmake" or
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/aarch64.cmake" accordingly (do not rely on
VCPKG_CHAINLOAD_TOOLCHAIN_FILE for this); keep the conditional logic but
relocate it above the project() invocation and remove/replace the current
VCPKG_CHAINLOAD_TOOLCHAIN_FILE assignments.
- Around line 161-164: The jemalloc Debug-mode check currently evaluates
CMAKE_BUILD_TYPE before CMAKE_BUILD_TYPE is initialized, so move the block that
checks if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") ... set(ENABLE_JEMALLOC OFF)
to appear after the CMAKE_BUILD_TYPE initialization logic; ensure the check
references the same CMAKE_BUILD_TYPE variable and sets ENABLE_JEMALLOC OFF when
Debug is detected so the Debug behavior is applied whether CMAKE_BUILD_TYPE
comes from the cache or was previously set.
- Line 295: The find_package call for Python3 should be made explicit and
required: update the find_package invocation for the Python3 component
(currently "find_package(Python3 COMPONENTS Development)") to include the
REQUIRED keyword so CMake fails fast if Python3 (and its Development component)
is missing; ensure any downstream consumption of Python3_INCLUDE_DIRS in
src/CMakeLists.txt remains valid after this change (refer to the find_package
and Python3 symbols).

---

Outside diff comments:
In `@src/admin/admin_executor_impl.cpp`:
- Around line 647-654: The call to
rocksdb::TransactionDB::OpenForReadOnly(options, catalog_dir, &db) is not
checking the returned rocksdb::Status, so db may be null and subsequent
db->NewIterator(...) dereferences a nullptr; update each handler (the blocks
that call OpenForReadOnly and then db->NewIterator) to capture the returned
rocksdb::Status, check status.ok(), and on failure log the error (include
status.ToString()), clean up/return an error status from the handler instead of
continuing, only calling db->NewIterator(...) when status.ok(); use the same
pattern for OpenForReadOnly, db, and NewIterator in functions referenced by
these blocks to avoid crashes.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0405e0d5-22a2-4820-9b6a-562535cad19a

📥 Commits

Reviewing files that changed from the base of the PR and between 544d5b8 and 0d1e6dc.

📒 Files selected for processing (13)
  • CMakeLists.txt
  • cmake/Findjemalloc.cmake
  • cmake/aarch64-libstdc++.modules.json
  • cmake/aarch64.cmake
  • cmake/x86_64-v1.cmake
  • cmake/x86_64-v2.cmake
  • cmake/x86_64-v3.cmake
  • cmake/x86_64-v4.cmake
  • src/CMakeLists.txt
  • src/admin/admin_executor_impl.cpp
  • src/common/third_party.cppm
  • src/parser/FlexLexer.h
  • vcpkg.json

Comment thread cmake/aarch64-libstdc++.modules.json Outdated
Comment thread cmake/aarch64.cmake
Comment thread cmake/x86_64-v4.cmake Outdated
Comment thread CMakeLists.txt Outdated
Comment thread CMakeLists.txt
Comment thread CMakeLists.txt
Signed-off-by: noob <[email protected]>
Copy link
Copy Markdown

@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

🤖 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 `@CMakeLists.txt`:
- Line 285: Replace the incorrect use of add_definitions for a compiler flag:
find the add_definitions(-march=native) entry and change it to use
add_compile_options(-march=native) so the -march flag is passed as a compiler
option rather than a preprocessor definition.
- Around line 250-257: The sanitizer-related flags are being applied
unconditionally when jemalloc is disabled; update the CMake logic so the
message("Enable Sanitizer in target: infinity") plus the set(CMAKE_CXX_FLAGS
"... -fno-stack-protector -fno-var-tracking "),
add_compile_options(-fsanitize-recover=all),
add_link_options(-fsanitize-recover=all),
add_compile_options("-fno-omit-frame-pointer"), and
add_link_options("-fno-omit-frame-pointer") are only executed when a sanitizer
is actually enabled (e.g., inside the existing sanitizer check or behind a
boolean like ENABLE_ASAN/ENABLE_TSAN/ENABLE_UBSAN or a combined ANY_SANITIZER
variable); move these lines into that conditional or add a guard that tests for
any sanitizer flag before modifying CMAKE_CXX_FLAGS or calling
add_compile_options/add_link_options and ensure the misleading message is
emitted only when the sanitizer condition is true.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3503ec08-47f3-4f28-ae7e-a45d1ae770bc

📥 Commits

Reviewing files that changed from the base of the PR and between 0d1e6dc and 5000030.

📒 Files selected for processing (4)
  • CMakeLists.txt
  • cmake/x86_64-v1.cmake
  • cmake/x86_64-v2.cmake
  • cmake/x86_64-v3.cmake
🚧 Files skipped from review as they are similar to previous changes (3)
  • cmake/x86_64-v1.cmake
  • cmake/x86_64-v3.cmake
  • cmake/x86_64-v2.cmake

Comment thread CMakeLists.txt Outdated
Comment thread CMakeLists.txt Outdated
euvre added 2 commits May 19, 2026 19:13
Signed-off-by: noob <[email protected]>
Copy link
Copy Markdown

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

♻️ Duplicate comments (1)
cmake/aarch64-libstdc++.modules.json (1)

7-13: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Make source-path version/path derivation configurable instead of hardcoding GCC 15 paths.

Lines 7 and 12 hardcode /usr/aarch64-linux-gnu/include/c++/15/...; this can fail on toolchains/sysroots that ship a different libstdc++ major. Please derive this from toolchain/CMake variables (or generate this JSON during configure) so module paths track the active compiler/sysroot.

#!/bin/bash
# Read-only verification: check whether module JSON GCC major is synchronized
# with toolchain/compiler configuration in repo files.
set -euo pipefail

echo "== module map paths =="
rg -n '"source-path":\s*".*include/c\+\+/[0-9]+/bits/std(\.compat)?\.cc"' cmake

echo
echo "== toolchain/compiler version hints =="
rg -n 'aarch64|gcc|g\+\+|clang|CMAKE_(C|CXX)_COMPILER|CMAKE_SYSROOT|include/c\+\+' cmake

echo
echo "== other module map files for consistency =="
fd --glob '*.module*.json' cmake -x sh -c 'echo "--- {} ---"; cat "{}"'
🤖 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 `@cmake/aarch64-libstdc`++.modules.json around lines 7 - 13, The JSON currently
hardcodes libstdc++ major version in the "source-path" entries (e.g., lines
referencing "/usr/aarch64-linux-gnu/include/c++/15/..."), which breaks when
toolchains ship a different GCC major; update the build so the path is derived
from CMake toolchain/compiler variables or generated at configure time: change
generation of cmake/aarch64-libstdc++.modules.json to substitute the
include/c++/<major> segment using a CMake variable computed from
CMAKE_CXX_COMPILER_VERSION or CMAKE_SYSROOT (or generate the JSON in a CMake
configure_file step) so logical-name "std.compat" and the other "source-path"
entries point at the active compiler/sysroot rather than a hardcoded "15".
🤖 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.

Duplicate comments:
In `@cmake/aarch64-libstdc`++.modules.json:
- Around line 7-13: The JSON currently hardcodes libstdc++ major version in the
"source-path" entries (e.g., lines referencing
"/usr/aarch64-linux-gnu/include/c++/15/..."), which breaks when toolchains ship
a different GCC major; update the build so the path is derived from CMake
toolchain/compiler variables or generated at configure time: change generation
of cmake/aarch64-libstdc++.modules.json to substitute the include/c++/<major>
segment using a CMake variable computed from CMAKE_CXX_COMPILER_VERSION or
CMAKE_SYSROOT (or generate the JSON in a CMake configure_file step) so
logical-name "std.compat" and the other "source-path" entries point at the
active compiler/sysroot rather than a hardcoded "15".

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 24578f70-10a0-4ead-b9e9-493be1bd3369

📥 Commits

Reviewing files that changed from the base of the PR and between 5000030 and f543aa0.

📒 Files selected for processing (6)
  • cmake/aarch64-libstdc++.modules.json
  • cmake/x86_64-libstdc++.module.json
  • cmake/x86_64-v1.cmake
  • cmake/x86_64-v2.cmake
  • cmake/x86_64-v3.cmake
  • cmake/x86_64-v4.cmake
✅ Files skipped from review due to trivial changes (1)
  • cmake/x86_64-libstdc++.module.json
🚧 Files skipped from review as they are similar to previous changes (4)
  • cmake/x86_64-v2.cmake
  • cmake/x86_64-v3.cmake
  • cmake/x86_64-v4.cmake
  • cmake/x86_64-v1.cmake

euvre added 3 commits May 19, 2026 19:36
Signed-off-by: noob <[email protected]>
Signed-off-by: noob <[email protected]>
Signed-off-by: noob <[email protected]>
Copy link
Copy Markdown

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

♻️ Duplicate comments (2)
CMakeLists.txt (2)

276-283: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

CI toolchain selection is configured too late to affect the current configure pass.

At Line 278-280, VCPKG_CHAINLOAD_TOOLCHAIN_FILE is set after project() (Line 26), so it won’t reliably drive toolchain selection for this configure run. This can silently bypass intended x86_64/aarch64 CI cross-build behavior.

Suggested fix
+option(IS_CI_TEST_PIPELINE "is ci test pipeline: " OFF)
+if (IS_CI_TEST_PIPELINE)
+    if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64)$")
+        set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/x86_64-v2.cmake" CACHE FILEPATH "" FORCE)
+    elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64).*$")
+        set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/aarch64.cmake" CACHE FILEPATH "" FORCE)
+    else ()
+        message(FATAL_ERROR "Not support your arch yet.")
+    endif ()
+endif ()
 project(infinity VERSION 0.7.0)
@@
-option(IS_CI_TEST_PIPELINE "is ci test pipeline: " OFF)
 if (IS_CI_TEST_PIPELINE)
-    if (X86_64)
-        set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/x86_64-v2.cmake")
-    elseif (ARM64)
-        set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/aarch64.cmake")
-    else ()
-        message(FATAL_ERROR "Not support your arch yet.")
-    endif ()
-else ()
+    # toolchain is selected before project()
+else ()
     add_definitions(-march=native)
 endif ()
#!/bin/bash
set -euo pipefail

echo "Verify ordering of project/toolchain assignments:"
rg -nP '^\s*project\s*\(|^\s*set\s*\(\s*CMAKE_TOOLCHAIN_FILE|^\s*set\s*\(\s*VCPKG_CHAINLOAD_TOOLCHAIN_FILE' CMakeLists.txt

echo
echo "CI toolchain block context:"
sed -n '268,290p' CMakeLists.txt
🤖 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 `@CMakeLists.txt` around lines 276 - 283, The VCPKG_CHAINLOAD_TOOLCHAIN_FILE
assignment happens after project(), so it cannot influence the current CMake
configure pass; move the conditional block that sets
VCPKG_CHAINLOAD_TOOLCHAIN_FILE (the IS_CI_TEST_PIPELINE / X86_64 / ARM64 branch)
to a location before the project() invocation (or otherwise set
CMAKE_TOOLCHAIN_FILE early) so the toolchain selection takes effect during
configure; update references to VCPKG_CHAINLOAD_TOOLCHAIN_FILE (and/or
CMAKE_TOOLCHAIN_FILE) accordingly and ensure the fallback message(FATAL_ERROR)
remains if neither X86_64 nor ARM64 is detected.

310-310: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Make Python3 discovery fail fast for required build inputs.

Line 310 omits REQUIRED. If Python3 Development is missing, configuration may proceed and fail later where includes/libs are consumed.

Suggested fix
-find_package(Python3 COMPONENTS Development)
+find_package(Python3 REQUIRED COMPONENTS Development)
#!/bin/bash
set -euo pipefail

echo "Inspect Python3 discovery and downstream usage:"
rg -nP 'find_package\s*\(\s*Python3|Python3_(FOUND|INCLUDE_DIRS|LIBRARIES)|Python3::' CMakeLists.txt src/CMakeLists.txt
🤖 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 `@CMakeLists.txt` at line 310, The CMakeLists currently calls
find_package(Python3 COMPONENTS Development) without REQUIRED, so missing Python
dev files won't fail early; update the call to find_package(Python3 COMPONENTS
Development REQUIRED) (locate the find_package(Python3 COMPONENTS Development)
invocation) so configuration stops immediately if Python3 Development is absent
and downstream uses of Python3::.../Python3_INCLUDE_DIRS/Python3_LIBRARIES won't
proceed silently.
🤖 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.

Duplicate comments:
In `@CMakeLists.txt`:
- Around line 276-283: The VCPKG_CHAINLOAD_TOOLCHAIN_FILE assignment happens
after project(), so it cannot influence the current CMake configure pass; move
the conditional block that sets VCPKG_CHAINLOAD_TOOLCHAIN_FILE (the
IS_CI_TEST_PIPELINE / X86_64 / ARM64 branch) to a location before the project()
invocation (or otherwise set CMAKE_TOOLCHAIN_FILE early) so the toolchain
selection takes effect during configure; update references to
VCPKG_CHAINLOAD_TOOLCHAIN_FILE (and/or CMAKE_TOOLCHAIN_FILE) accordingly and
ensure the fallback message(FATAL_ERROR) remains if neither X86_64 nor ARM64 is
detected.
- Line 310: The CMakeLists currently calls find_package(Python3 COMPONENTS
Development) without REQUIRED, so missing Python dev files won't fail early;
update the call to find_package(Python3 COMPONENTS Development REQUIRED) (locate
the find_package(Python3 COMPONENTS Development) invocation) so configuration
stops immediately if Python3 Development is absent and downstream uses of
Python3::.../Python3_INCLUDE_DIRS/Python3_LIBRARIES won't proceed silently.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0e87c268-3cdd-4fce-a48f-9bef067a351c

📥 Commits

Reviewing files that changed from the base of the PR and between 6722467 and 4886533.

📒 Files selected for processing (1)
  • CMakeLists.txt

euvre added 2 commits May 19, 2026 20:32
Signed-off-by: noob <[email protected]>
Signed-off-by: noob <[email protected]>
@euvre euvre added the ci PR can be test label May 19, 2026
@euvre euvre marked this pull request as draft May 19, 2026 12:34
@euvre euvre marked this pull request as ready for review May 19, 2026 12:34
Signed-off-by: noob <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci PR can be test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant