From 03911ff1bbb341b62b2334bc2e8ce954bf3f749d Mon Sep 17 00:00:00 2001 From: alon Date: Sun, 31 Aug 2025 19:44:39 +0300 Subject: [PATCH 1/2] use SVS_BASE_URL env var --- .github/workflows/event-pull_request.yml | 2 ++ .github/workflows/task-unit-test.yml | 5 +++++ Makefile | 5 +++++ cmake/svs.cmake | 17 +++++++++++++---- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/.github/workflows/event-pull_request.yml b/.github/workflows/event-pull_request.yml index e229cbf88..7ce7bbd47 100644 --- a/.github/workflows/event-pull_request.yml +++ b/.github/workflows/event-pull_request.yml @@ -41,6 +41,8 @@ jobs: - name: check format run: make check-format - name: unit tests + env: + SVS_BASE_URL: ${{ vars.SVS_BASE_URL }} run: make unit_test - name: flow tests run: make flow_test VERBOSE=1 diff --git a/.github/workflows/task-unit-test.yml b/.github/workflows/task-unit-test.yml index e7066b0c7..c370250ba 100644 --- a/.github/workflows/task-unit-test.yml +++ b/.github/workflows/task-unit-test.yml @@ -17,6 +17,9 @@ on: description: 'Run valgrind tests' type: boolean default: true + svs-base-url: + description: 'Base URL for SVS pre-built library' + type: string jobs: test: @@ -66,6 +69,8 @@ jobs: echo "name=$NAME" >> $GITHUB_OUTPUT - name: unit tests + env: + SVS_BASE_URL: ${{ inputs.svs-base-url || '' }} run: make unit_test - name: valgrind if: ${{ inputs.run-valgrind }} diff --git a/Makefile b/Makefile index 7aab4a92b..6a22cc87c 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,10 @@ endif export SAN endif # SAN +ifneq ($(SVS_BASE_URL),) +CMAKE_SVS += -DSVS_BASE_URL=$(SVS_BASE_URL) +endif + ROOT=. export ROOT #---------------------------------------------------------------------------------------------- @@ -138,6 +142,7 @@ CMAKE_FLAGS += \ --no-warn-unused-cli \ $(CMAKE_SAN) \ $(CMAKE_COV) \ + $(CMAKE_SVS) \ $(CMAKE_TESTS) build: diff --git a/cmake/svs.cmake b/cmake/svs.cmake index fe10970db..43b1ea5fb 100644 --- a/cmake/svs.cmake +++ b/cmake/svs.cmake @@ -53,19 +53,27 @@ if(USE_SVS) GLIBC_2_26_FOUND) endif() - cmake_dependent_option(SVS_SHARED_LIB "Use SVS pre-compiled shared library" ON "USE_SVS AND GLIBC_FOUND AND SVS_LVQ_SUPPORTED" OFF) + # If SVS_BASE_URL is not set (empty string), set SVS_SHARED_LIB to OFF + if(NOT SVS_BASE_URL) + message(STATUS "SVS_BASE_URL is not set - disabling SVS_SHARED_LIB") + set(SVS_SHARED_LIB OFF) + endif() + + cmake_dependent_option(SVS_SHARED_LIB "Use SVS pre-compiled shared library" ON "USE_SVS AND GLIBC_FOUND AND SVS_LVQ_SUPPORTED AND SVS_BASE_URL" OFF) + message(STATUS "SVS_SHARED_LIB is set to ${SVS_SHARED_LIB}") if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if (GLIBC_2_28_FOUND) - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced-clang.tar.gz" CACHE STRING "SVS URL") + # Append the path to SVS_BASE_URL + set(SVS_URL "${SVS_BASE_URL}/svs-shared-library-0.0.9-reduced-clang.tar.gz" CACHE STRING "SVS URL") else() message(STATUS "GLIBC>=2.28 is required for Clang build - disabling SVS_SHARED_LIB") set(SVS_SHARED_LIB OFF) endif() else() if (GLIBC_2_28_FOUND) - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced.tar.gz" CACHE STRING "SVS URL") + set(SVS_URL "${SVS_BASE_URL}/svs-shared-library-0.0.9-reduced.tar.gz" CACHE STRING "SVS URL") elseif(GLIBC_2_26_FOUND) - set(SVS_URL "https://github.com/intel/ScalableVectorSearch/releases/download/v0.0.9/svs-shared-library-0.0.9-reduced-glibc2_26.tar.gz" CACHE STRING "SVS URL") + set(SVS_URL "${SVS_BASE_URL}/svs-shared-library-0.0.9-reduced-glibc2_26.tar.gz" CACHE STRING "SVS URL") else() message(STATUS "GLIBC>=2.26 is required for SVS shared library - disabling SVS_SHARED_LIB") set(SVS_SHARED_LIB OFF) @@ -73,6 +81,7 @@ if(USE_SVS) endif() if(SVS_SHARED_LIB) + message(STATUS "SVS pre-built library enabled and will be downloaded from ${SVS_URL}") include(FetchContent) FetchContent_Declare( svs From bef60efb1d1ea421c5e1d39f8814cf9f6e9343aa Mon Sep 17 00:00:00 2001 From: alon Date: Sun, 31 Aug 2025 20:12:52 +0300 Subject: [PATCH 2/2] use directly env var instead of input --- .github/workflows/task-unit-test.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/task-unit-test.yml b/.github/workflows/task-unit-test.yml index c370250ba..d05e3f74a 100644 --- a/.github/workflows/task-unit-test.yml +++ b/.github/workflows/task-unit-test.yml @@ -17,9 +17,6 @@ on: description: 'Run valgrind tests' type: boolean default: true - svs-base-url: - description: 'Base URL for SVS pre-built library' - type: string jobs: test: @@ -70,7 +67,7 @@ jobs: - name: unit tests env: - SVS_BASE_URL: ${{ inputs.svs-base-url || '' }} + SVS_BASE_URL: ${{ vars.SVS_BASE_URL }} run: make unit_test - name: valgrind if: ${{ inputs.run-valgrind }}