From 0f6174caa658b316ef9ba215d737b64f740942de Mon Sep 17 00:00:00 2001 From: "riseproject-dev[bot]" <330740410+riseproject-dev[bot]@users.noreply.github.com> Date: Sun, 27 Sep 2026 07:41:47 +0000 Subject: [PATCH 1/4] openviking: Add versions 0.4.17, 0.4.17.1, 0.4.18, 0.4.19, 0.4.20, 0.4.21 Signed-off-by: riseproject-dev[bot] <330740410+riseproject-dev[bot]@users.noreply.github.com> --- docs/packages/openviking.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/packages/openviking.yaml b/docs/packages/openviking.yaml index 0a3934de3a..87ff9fbbd7 100644 --- a/docs/packages/openviking.yaml +++ b/docs/packages/openviking.yaml @@ -10,3 +10,9 @@ 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 From fcd8665d51d37110fb4db64171c83083a4b2b789 Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sun, 27 Sep 2026 09:23:55 +0000 Subject: [PATCH 2/4] openviking: carry forward the FindPython3 patch to 0.4.17-0.4.21 The nightly-upgrade bot bumped docs/packages/openviking.yaml to 0.4.17, 0.4.17.1, 0.4.18, 0.4.19, 0.4.20 and 0.4.21 but did not add any patches/openviking// directory, so the "Apply patches" step's git apply failed with "No such file or directory" before the build could start. src/CMakeLists.txt still asks FindPython3 for the umbrella Development component on every one of those tags, and the 0.4.16 patch applies cleanly against each of them (verified with git apply --check), so it is copied unchanged to each new version directory. --- ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ ...re-Development.Module-from-FindPytho.patch | 36 +++++++++++++++++++ 6 files changed, 216 insertions(+) create mode 100644 patches/openviking/0.4.17.1/0001-build-only-require-Development.Module-from-FindPytho.patch create mode 100644 patches/openviking/0.4.17/0001-build-only-require-Development.Module-from-FindPytho.patch create mode 100644 patches/openviking/0.4.18/0001-build-only-require-Development.Module-from-FindPytho.patch create mode 100644 patches/openviking/0.4.19/0001-build-only-require-Development.Module-from-FindPytho.patch create mode 100644 patches/openviking/0.4.20/0001-build-only-require-Development.Module-from-FindPytho.patch create mode 100644 patches/openviking/0.4.21/0001-build-only-require-Development.Module-from-FindPytho.patch 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 0000000000..2f595cd2d2 --- /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 0000000000..2f595cd2d2 --- /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 0000000000..2f595cd2d2 --- /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 0000000000..2f595cd2d2 --- /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 0000000000..2f595cd2d2 --- /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 0000000000..2f595cd2d2 --- /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() From 6d1cecb1f86edca78077f73ee5620c07af6f260c Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sun, 27 Sep 2026 12:10:28 +0000 Subject: [PATCH 3/4] openviking: install full perl for openssl-src and ship OpenSSL's licence From 0.4.18 crates/ragfs enables fred's vendored-openssl feature (pulled in by the cache feature ragfs-python always builds), so openssl-src compiles OpenSSL from source and runs its Configure script. The riscv64 manylinux image carries only perl-interpreter, and Configure died with "Can't locate FindBin.pm in @INC" (gotcha 46), failing the 0.4.20 build. Install the whole perl distribution in CIBW_BEFORE_ALL_LINUX. That OpenSSL is linked statically into the ragfs extension, so the wheel redistributes it. When Cargo.lock pins openssl-src, fetch the Apache-2.0 LICENSE.txt of the OpenSSL release it bundles (the +3.x.y build metadata of the openssl-src version) as LICENSE.openssl, and have the test command's licence check require it for those versions only. --- .github/workflows/build-openviking.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-openviking.yml b/.github/workflows/build-openviking.yml index 2c76c77002..e3ae3092ab 100644 --- a/.github/workflows/build-openviking.yml +++ b/.github/workflows/build-openviking.yml @@ -116,6 +116,13 @@ 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 ragfs's cache feature pulls fred with vendored-openssl, so + # openssl-src 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,7 +193,10 @@ 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 perl modules the + # image's minimal perl-interpreter lacks (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 CIBW_ENVIRONMENT: >- PATH="$PATH:$HOME/.cargo/bin" @@ -201,7 +211,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 From 7c78c42c727ca9f008c9282289c2c680e7ef45ff Mon Sep 17 00:00:00 2001 From: Ludovic Henry Date: Sun, 27 Sep 2026 21:41:33 +0000 Subject: [PATCH 4/4] openviking: build ragfs-python with thin LTO The workspace release profile sets lto = true, so maturin links ragfs-python (tokio, aws-sdk-s3, gix, fred with a static OpenSSL, ...) as one fat-LTO module. On the riscv64 runners rustc 1.98.1 intermittently corrupted its own heap at that step: 0.4.21 aborted with "double free or corruption (!prev)" and 0.4.17.1 with "free(): corrupted unsorted chunks" (SIGABRT) right after compiling ragfs-python, while the other four versions built the same code clean. A re-run passed 0.4.17.1 but left 0.4.21 silent after the ov CLI build until the 360-minute job timeout cancelled it. Set CARGO_PROFILE_RELEASE_LTO=thin, as build-vegafusion.yml and build-lancedb.yml already do for their large riscv64 Rust builds, so no single rustc process has to optimise the whole crate graph at once. --- .github/workflows/build-openviking.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build-openviking.yml b/.github/workflows/build-openviking.yml index e3ae3092ab..acebfe6654 100644 --- a/.github/workflows/build-openviking.yml +++ b/.github/workflows/build-openviking.yml @@ -198,8 +198,13 @@ jobs: 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 of ragfs-python (workspace [profile.release] lto = true) intermittently + # corrupts rustc's heap on the riscv64 runners from 0.4.17.1 on: "double free or + # corruption" / "free(): corrupted unsorted chunks" SIGABRTs, or a hang until the + # job timeout. Thin LTO avoids the single huge LTO module. CIBW_ENVIRONMENT: >- PATH="$PATH:$HOME/.cargo/bin" + CARGO_PROFILE_RELEASE_LTO=thin PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ OV_REQUIRE_RAGFS_BUILD=1 SETUPTOOLS_SCM_PRETEND_VERSION_FOR_OPENVIKING=${{ env.OPENVIKING_VERSION }}