diff --git a/.github/workflows/build-openviking.yml b/.github/workflows/build-openviking.yml index 2c76c77002f..31a91ff8f37 100644 --- a/.github/workflows/build-openviking.yml +++ b/.github/workflows/build-openviking.yml @@ -116,6 +116,12 @@ jobs: cp third_party/spdlog-1.14.1/LICENSE LICENSE.spdlog cp third_party/croaring/LICENSE LICENSE.croaring cp third_party/rapidjson/LICENSE LICENSE.rapidjson + # From 0.4.18 fred's vendored-openssl links OpenSSL statically into the ragfs extension. + openssl=$(grep -A1 '^name = "openssl-src"$' Cargo.lock | sed -nE 's/^version = "[0-9.]+\+([0-9.]+)"$/\1/p' || true) + if [ -n "${openssl}" ]; then + curl -fsSL -o LICENSE.openssl "https://raw.githubusercontent.com/openssl/openssl/openssl-${openssl}/LICENSE.txt" + echo "OV_EXTRA_LICENCES=LICENSE.openssl" >> "${GITHUB_ENV}" + fi - name: Write smoke test run: | @@ -186,10 +192,15 @@ jobs: CIBW_ARCHS: riscv64 CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*" CIBW_SKIP: "*-musllinux_*" + # openssl-src (0.4.18+) runs OpenSSL's Configure, which needs FindBin (gotcha 46). CIBW_BEFORE_ALL_LINUX: >- + dnf -y --disablerepo=extras install perl && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal + # Fat LTO and parallel rustc of ragfs-python corrupt rustc's heap or hang on these runners (gotcha 228). CIBW_ENVIRONMENT: >- PATH="$PATH:$HOME/.cargo/bin" + CARGO_PROFILE_RELEASE_LTO=thin + CARGO_BUILD_JOBS=2 PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ OV_REQUIRE_RAGFS_BUILD=1 SETUPTOOLS_SCM_PRETEND_VERSION_FOR_OPENVIKING=${{ env.OPENVIKING_VERSION }} @@ -201,7 +212,7 @@ jobs: CIBW_TEST_SOURCES: tests pyproject.toml smoke_test.py CIBW_TEST_COMMAND: >- python smoke_test.py && - python -c "import importlib.metadata as m; l = set(p.name for p in m.files('openviking') if '.dist-info/licenses/' in str(p)); assert set(['LICENSE', 'LICENSE.leveldb', 'LICENSE.spdlog', 'LICENSE.croaring', 'LICENSE.rapidjson']) <= l, l" && + python -c "import importlib.metadata as m; l = set(p.name for p in m.files('openviking') if '.dist-info/licenses/' in str(p)); assert set(['LICENSE', 'LICENSE.leveldb', 'LICENSE.spdlog', 'LICENSE.croaring', 'LICENSE.rapidjson'] + '${{ env.OV_EXTRA_LICENCES }}'.split()) <= l, l" && python -m pytest -q -o addopts='' tests/vectordb/test_cuvs_config.py tests/vectordb/test_cuvs_index.py diff --git a/docs/packages/openviking.yaml b/docs/packages/openviking.yaml index 0a3934de3a9..087331c5e92 100644 --- a/docs/packages/openviking.yaml +++ b/docs/packages/openviking.yaml @@ -10,3 +10,11 @@ versions: - filename: openviking-0.4.16-cp310-abi3-manylinux_2_39_riscv64.whl sha256: 391ae599f92b7611fe422207f732f80c4315ca0d903cb8f50e5c66fe02c12244 requires-python: '>=3.10' +- version: 0.4.17 +- version: 0.4.17.1 +- version: 0.4.18 +- version: 0.4.19 +- version: 0.4.20 +- version: 0.4.21 +- version: 0.4.22 +- version: 0.4.23 diff --git a/patches/openviking/0.4.17.1/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.17.1/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.17.1/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.17/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.17/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.17/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.18/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.18/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.18/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.19/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.19/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.19/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.20/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.20/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.20/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.21/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.21/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.21/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.21/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch b/patches/openviking/0.4.21/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch new file mode 100644 index 00000000000..aa241947b85 --- /dev/null +++ b/patches/openviking/0.4.21/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 9 Oct 2026 00:00:00 +0000 +Subject: [PATCH] pyproject: relax tree-sitter pins that have no riscv64 wheel + +0.4.21 replaced the parsing stack's lower bounds with exact pins. Four of +those exact versions were never published as riscv64 wheels, so +installing the built wheel with binary-only resolution fails: + + tree-sitter==0.25.2 (riscv64 wheels start at 0.26.0) + tree-sitter-rust==0.24.0 (riscv64 wheels start at 0.24.2) + tree-sitter-c-sharp==0.23.1 (riscv64 wheels start at 0.23.5) + tree-sitter-language-pack==1.13.3 (riscv64 wheels start at 1.15.8) + +Turn those four back into lower bounds (language-pack keeps the <2.0 cap +it had before 0.4.21) so the resolver can pick the oldest riscv64 wheel. +The other exact pins already have riscv64 wheels and are left alone. + +Upstream-Status: Inappropriate [riscv64 wheel availability is specific to this port] + +Signed-off-by: Ludovic Henry +--- +diff --git a/pyproject.toml b/pyproject.toml +index 0000000..0000000 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -61,15 +61,15 @@ dependencies = [ + "litellm>=1.83.7,<1.91.2", + "python-multipart>=0.0.31", + # Pin the parsing stack to avoid unvalidated upstream API and grammar changes. +- "tree-sitter==0.25.2", ++ "tree-sitter>=0.25.2", + "tree-sitter-python==0.25.0", + "tree-sitter-javascript==0.25.0", + "tree-sitter-typescript==0.23.2", + "tree-sitter-java==0.23.5", + "tree-sitter-cpp==0.23.4", +- "tree-sitter-rust==0.24.0", ++ "tree-sitter-rust>=0.24.0", + "tree-sitter-go==0.25.0", +- "tree-sitter-c-sharp==0.23.1", ++ "tree-sitter-c-sharp>=0.23.1", + "tree-sitter-php==0.24.1", + "tree-sitter-lua==0.5.0", + # OpenTelemetry +@@ -85,7 +85,7 @@ dependencies = [ + "mcp>=1.27,<2", + "pathspec>=1.1.1", + "grep-ast==0.9.0", +- "tree-sitter-language-pack==1.13.3", ++ "tree-sitter-language-pack>=1.13.3,<2.0", + ] + + diff --git a/patches/openviking/0.4.22/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.22/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.22/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.22/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch b/patches/openviking/0.4.22/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch new file mode 100644 index 00000000000..aa241947b85 --- /dev/null +++ b/patches/openviking/0.4.22/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 9 Oct 2026 00:00:00 +0000 +Subject: [PATCH] pyproject: relax tree-sitter pins that have no riscv64 wheel + +0.4.21 replaced the parsing stack's lower bounds with exact pins. Four of +those exact versions were never published as riscv64 wheels, so +installing the built wheel with binary-only resolution fails: + + tree-sitter==0.25.2 (riscv64 wheels start at 0.26.0) + tree-sitter-rust==0.24.0 (riscv64 wheels start at 0.24.2) + tree-sitter-c-sharp==0.23.1 (riscv64 wheels start at 0.23.5) + tree-sitter-language-pack==1.13.3 (riscv64 wheels start at 1.15.8) + +Turn those four back into lower bounds (language-pack keeps the <2.0 cap +it had before 0.4.21) so the resolver can pick the oldest riscv64 wheel. +The other exact pins already have riscv64 wheels and are left alone. + +Upstream-Status: Inappropriate [riscv64 wheel availability is specific to this port] + +Signed-off-by: Ludovic Henry +--- +diff --git a/pyproject.toml b/pyproject.toml +index 0000000..0000000 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -61,15 +61,15 @@ dependencies = [ + "litellm>=1.83.7,<1.91.2", + "python-multipart>=0.0.31", + # Pin the parsing stack to avoid unvalidated upstream API and grammar changes. +- "tree-sitter==0.25.2", ++ "tree-sitter>=0.25.2", + "tree-sitter-python==0.25.0", + "tree-sitter-javascript==0.25.0", + "tree-sitter-typescript==0.23.2", + "tree-sitter-java==0.23.5", + "tree-sitter-cpp==0.23.4", +- "tree-sitter-rust==0.24.0", ++ "tree-sitter-rust>=0.24.0", + "tree-sitter-go==0.25.0", +- "tree-sitter-c-sharp==0.23.1", ++ "tree-sitter-c-sharp>=0.23.1", + "tree-sitter-php==0.24.1", + "tree-sitter-lua==0.5.0", + # OpenTelemetry +@@ -85,7 +85,7 @@ dependencies = [ + "mcp>=1.27,<2", + "pathspec>=1.1.1", + "grep-ast==0.9.0", +- "tree-sitter-language-pack==1.13.3", ++ "tree-sitter-language-pack>=1.13.3,<2.0", + ] + + diff --git a/patches/openviking/0.4.23/0001-build-only-require-Development.Module-from-FindPytho.patch b/patches/openviking/0.4.23/0001-build-only-require-Development.Module-from-FindPytho.patch new file mode 100644 index 00000000000..2f595cd2d20 --- /dev/null +++ b/patches/openviking/0.4.23/0001-build-only-require-Development.Module-from-FindPytho.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 25 Sep 2026 00:00:00 +0000 +Subject: [PATCH] build: only require Development.Module from FindPython3 + +The vector engine is a Python extension module, so it needs the Python +headers but never links libpython. Asking FindPython3 for the umbrella +`Development` component also pulls in `Development.Embed`, which requires +libpython to exist. The manylinux interpreters used to build wheels ship +no libpython at all, so configuring fails on every manylinux image before +anything is compiled: + + Could NOT find Python3 (missing: Python3_LIBRARIES Development + Development.Embed) + +Upstream's own Linux wheels build against a CPython compiled with +--enable-shared, which is why their CI does not hit it. Reproduces on +manylinux_2_28_x86_64 as well as manylinux_2_39_riscv64. + +Upstream-Status: To upstream [not yet submitted; still present on volcengine/OpenViking main] + +Signed-off-by: Ludovic Henry +--- +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 1a79b8a4..da2a9495 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -43,7 +43,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error -Wno-deprecated-declarations + set(CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread") + set(Python3_ARCH_INCLUDE_DIR "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") + +-find_package(Python3 COMPONENTS Interpreter Development REQUIRED) ++find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED) + if(WIN32 AND CMAKE_VERSION VERSION_GREATER_EQUAL "3.26") + find_package(Python3 COMPONENTS Development.SABIModule QUIET) + endif() diff --git a/patches/openviking/0.4.23/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch b/patches/openviking/0.4.23/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch new file mode 100644 index 00000000000..aa241947b85 --- /dev/null +++ b/patches/openviking/0.4.23/0002-pyproject-relax-tree-sitter-pins-that-have-no-riscv64-.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ludovic Henry +Date: Fri, 9 Oct 2026 00:00:00 +0000 +Subject: [PATCH] pyproject: relax tree-sitter pins that have no riscv64 wheel + +0.4.21 replaced the parsing stack's lower bounds with exact pins. Four of +those exact versions were never published as riscv64 wheels, so +installing the built wheel with binary-only resolution fails: + + tree-sitter==0.25.2 (riscv64 wheels start at 0.26.0) + tree-sitter-rust==0.24.0 (riscv64 wheels start at 0.24.2) + tree-sitter-c-sharp==0.23.1 (riscv64 wheels start at 0.23.5) + tree-sitter-language-pack==1.13.3 (riscv64 wheels start at 1.15.8) + +Turn those four back into lower bounds (language-pack keeps the <2.0 cap +it had before 0.4.21) so the resolver can pick the oldest riscv64 wheel. +The other exact pins already have riscv64 wheels and are left alone. + +Upstream-Status: Inappropriate [riscv64 wheel availability is specific to this port] + +Signed-off-by: Ludovic Henry +--- +diff --git a/pyproject.toml b/pyproject.toml +index 0000000..0000000 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -61,15 +61,15 @@ dependencies = [ + "litellm>=1.83.7,<1.91.2", + "python-multipart>=0.0.31", + # Pin the parsing stack to avoid unvalidated upstream API and grammar changes. +- "tree-sitter==0.25.2", ++ "tree-sitter>=0.25.2", + "tree-sitter-python==0.25.0", + "tree-sitter-javascript==0.25.0", + "tree-sitter-typescript==0.23.2", + "tree-sitter-java==0.23.5", + "tree-sitter-cpp==0.23.4", +- "tree-sitter-rust==0.24.0", ++ "tree-sitter-rust>=0.24.0", + "tree-sitter-go==0.25.0", +- "tree-sitter-c-sharp==0.23.1", ++ "tree-sitter-c-sharp>=0.23.1", + "tree-sitter-php==0.24.1", + "tree-sitter-lua==0.5.0", + # OpenTelemetry +@@ -85,7 +85,7 @@ dependencies = [ + "mcp>=1.27,<2", + "pathspec>=1.1.1", + "grep-ast==0.9.0", +- "tree-sitter-language-pack==1.13.3", ++ "tree-sitter-language-pack>=1.13.3,<2.0", + ] + + diff --git a/skills/python-project-porting/references/gotchas/dependencies-and-registry.md b/skills/python-project-porting/references/gotchas/dependencies-and-registry.md index 76c394b7ab0..9f815a64095 100644 --- a/skills/python-project-porting/references/gotchas/dependencies-and-registry.md +++ b/skills/python-project-porting/references/gotchas/dependencies-and-registry.md @@ -805,6 +805,13 @@ To pull up one entry: `grep -n '^N\. ' references/gotchas/dependencies-and-regis exact versions: a pip running on an older interpreter than `--python-version` backtracks past wheels whose `Requires-Python` excludes the *running* one (pip 24.0 on 3.11 walked numpy 2.5.3 → 2.4.3 with `--python-version 3.12`). + - **Pass the whole manylinux ladder, not just 2_39/2_38.** `--platform` is matched + literally and never expands to older glibc tags, and plenty of RISE wheels carry + only an older one: `tokenizers-0.22.2-cp39-abi3-manylinux_2_34_riscv64.whl`. With + two tags, the openviking rehearsal reported `tokenizers ... (from versions: none)` + and a litellm `ResolutionImpossible` that CI never hits. Generate one + `--platform manylinux_2_${m}_riscv64` for every `m` from 39 down to 17, plus + `linux_riscv64`. 482. **`pypi.riseproject.dev/simple//` is case-sensitive, so gotcha 30/353's check — and `ci_scripts/queue_triage.py --deps`, which passes `requires_dist` names raw —