From 06db5deb1e3f63a2fc2ed01d5eb0b15f3ae0f531 Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Wed, 11 Mar 2026 09:07:29 +0100 Subject: [PATCH 1/5] Fix build version for mp_off_py_off config Move OpenVINO and GenAI version resolution from macros in version.hpp to runtime functions in version.cpp. GenAI version is conditionally compiled using MEDIAPIPE_DISABLE define. Split libovms_version into header-only target (zero deps) and libovms_version_impl (openvino + conditional genai, alwayslink=1) to avoid blocking parallel builds and fix linker error when building with --config mp_off_py_off. --- src/BUILD | 17 ++++++++++++++++- src/capi_frontend/capi.cpp | 2 +- src/cli_parser.cpp | 7 +++++-- src/server.cpp | 2 +- src/version.cpp | 34 ++++++++++++++++++++++++++++++++++ src/version.hpp | 11 +++++------ 6 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 src/version.cpp diff --git a/src/BUILD b/src/BUILD index d3e5af3861..df50004d5b 100644 --- a/src/BUILD +++ b/src/BUILD @@ -255,8 +255,22 @@ ovms_cc_library( name = "libovms_version", hdrs = ["version.hpp"], srcs = [], - deps = ["//third_party:openvino",], + deps = [], + visibility = ["//visibility:public",], +) +ovms_cc_library( + name = "libovms_version_impl", + srcs = ["version.cpp"], + deps = [ + ":libovms_version", + "//third_party:openvino", + ] + select({ + "//:not_disable_mediapipe": ["//third_party:genai"], + "//conditions:default": [], + }), + additional_copts = COPTS_MEDIAPIPE, visibility = ["//visibility:public",], + alwayslink = 1, ) ovms_cc_library( name = "network_utils", @@ -641,6 +655,7 @@ ovms_cc_library( "libovmstimer", "tfs_utils", "libovms_version", + "libovms_version_impl", "serialization_common", "libovmsprofiler", "libovmsstatus", diff --git a/src/capi_frontend/capi.cpp b/src/capi_frontend/capi.cpp index 521c86ae17..74e5c0d1bf 100644 --- a/src/capi_frontend/capi.cpp +++ b/src/capi_frontend/capi.cpp @@ -335,7 +335,7 @@ DLL_PUBLIC OVMS_Status* OVMS_ServerMetadata(OVMS_Server* server, OVMS_Metadata** doc->AddMember("name", PROJECT_NAME, doc->GetAllocator()); doc->AddMember("version", PROJECT_VERSION, doc->GetAllocator()); rapidjson::Value ovVersion; - ovVersion.SetString(OPENVINO_NAME, doc->GetAllocator()); + ovVersion.SetString(ovms::getOpenvinoVersion(), doc->GetAllocator()); doc->AddMember("ov_version", std::move(ovVersion), doc->GetAllocator()); *metadata = reinterpret_cast(doc); return nullptr; diff --git a/src/cli_parser.cpp b/src/cli_parser.cpp index dd7141b1ce..8bc11bee97 100644 --- a/src/cli_parser.cpp +++ b/src/cli_parser.cpp @@ -443,8 +443,11 @@ std::variant> CLIParser::parse(int argc, char* std::string project_name(PROJECT_NAME); std::string project_version(PROJECT_VERSION); ss << project_name + " " + project_version << std::endl; - ss << "OpenVINO backend " << OPENVINO_NAME << std::endl; - ss << "OpenVINO GenAI backend " << GENAI_NAME << std::endl; + ss << "OpenVINO backend " << ovms::getOpenvinoVersion() << std::endl; + const char* genaiVersion = ovms::getGenaiVersion(); + if (genaiVersion[0] != '\0') { + ss << "OpenVINO GenAI backend " << genaiVersion << std::endl; + } ss << "Bazel build flags: " << BAZEL_BUILD_FLAGS << std::endl; #pragma warning(pop) return std::make_pair(OVMS_EX_OK, ss.str()); diff --git a/src/server.cpp b/src/server.cpp index 3e58d34ff7..a49aff2c42 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -86,7 +86,7 @@ static void logConfig(const Config& config) { std::string project_name(PROJECT_NAME); std::string project_version(PROJECT_VERSION); SPDLOG_INFO(project_name + " " + project_version); - SPDLOG_INFO("OpenVINO backend {}", OPENVINO_NAME); + SPDLOG_INFO("OpenVINO backend {}", ovms::getOpenvinoVersion()); SPDLOG_DEBUG("CLI parameters passed to ovms server"); if (config.getServerSettings().serverMode == HF_PULL_MODE) { SPDLOG_DEBUG("source_model: {}", config.getServerSettings().hfSettings.sourceModel); diff --git a/src/version.cpp b/src/version.cpp new file mode 100644 index 0000000000..4d92337f5f --- /dev/null +++ b/src/version.cpp @@ -0,0 +1,34 @@ +//***************************************************************************** +// Copyright 2026 Intel Corporation +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +//***************************************************************************** +#include "version.hpp" + +#include +#if (MEDIAPIPE_DISABLE == 0) +#include +#endif + +namespace ovms { +const char* getOpenvinoVersion() { + return ov::get_openvino_version().buildNumber; +} +const char* getGenaiVersion() { +#if (MEDIAPIPE_DISABLE == 0) + return ov::genai::get_version().buildNumber; +#else + return "Not available"; +#endif +} +} // namespace ovms diff --git a/src/version.hpp b/src/version.hpp index d45581aba2..db9e605e82 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -13,15 +13,14 @@ // See the License for the specific language governing permissions and // limitations under the License. //***************************************************************************** - -#include -#include - #ifndef SRC_VERSION_HPP_ #define SRC_VERSION_HPP_ #define PROJECT_NAME "OpenVINO Model Server" #define PROJECT_VERSION "REPLACE_PROJECT_VERSION" -#define OPENVINO_NAME ov::get_openvino_version().buildNumber -#define GENAI_NAME ov::genai::get_version().buildNumber #define BAZEL_BUILD_FLAGS "REPLACE_BAZEL_BUILD_FLAGS" + +namespace ovms { +const char* getOpenvinoVersion(); +const char* getGenaiVersion(); +} // namespace ovms #endif // SRC_VERSION_HPP_ From 5710dca5ea77f3a01eca313fe82ffa4320cb38ec Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Wed, 11 Mar 2026 10:15:49 +0100 Subject: [PATCH 2/5] Fix tests --- src/test/c_api_tests.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/c_api_tests.cpp b/src/test/c_api_tests.cpp index 469b5f1106..737d09f201 100644 --- a/src/test/c_api_tests.cpp +++ b/src/test/c_api_tests.cpp @@ -339,7 +339,7 @@ TEST(CAPIServerMetadata, Basic) { ASSERT_CAPI_STATUS_NOT_NULL_EXPECT_CODE(OVMS_SerializeMetadataToString(metadata, nullptr, &size), StatusCode::NONEXISTENT_PTR); ASSERT_CAPI_STATUS_NOT_NULL_EXPECT_CODE(OVMS_SerializeMetadataToString(metadata, &json, nullptr), StatusCode::NONEXISTENT_PTR); ASSERT_CAPI_STATUS_NULL(OVMS_SerializeMetadataToString(metadata, &json, &size)); - ASSERT_EQ(std::string(json), std::string("{\"name\":\"" + std::string(PROJECT_NAME) + "\",\"version\":\"" + std::string(PROJECT_VERSION) + "\",\"ov_version\":\"" + std::string(OPENVINO_NAME) + "\"}")); + ASSERT_EQ(std::string(json), std::string("{\"name\":\"" + std::string(PROJECT_NAME) + "\",\"version\":\"" + std::string(PROJECT_VERSION) + "\",\"ov_version\":\"" + std::string(ovms::getOpenvinoVersion()) + "\"}")); ASSERT_EQ(size, std::strlen(json)); OVMS_StringFree(json); const char* pointer = "/name"; @@ -362,7 +362,7 @@ TEST(CAPIServerMetadata, Basic) { pointer = "/ov_version"; ASSERT_CAPI_STATUS_NULL(OVMS_MetadataFieldByPointer(metadata, pointer, &value, &size)); - ASSERT_EQ(std::string(value), std::string(OPENVINO_NAME)); + ASSERT_EQ(std::string(value), std::string(ovms::getOpenvinoVersion())); ASSERT_EQ(size, std::strlen(value)); OVMS_StringFree(value); From 86e0bec671d0e72daeb92cd53cbe559c227d9190 Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Wed, 11 Mar 2026 11:29:04 +0100 Subject: [PATCH 3/5] Fix logs --- src/server.cpp | 5 +++++ src/version.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/server.cpp b/src/server.cpp index a49aff2c42..04fdc9cab0 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -87,6 +87,11 @@ static void logConfig(const Config& config) { std::string project_version(PROJECT_VERSION); SPDLOG_INFO(project_name + " " + project_version); SPDLOG_INFO("OpenVINO backend {}", ovms::getOpenvinoVersion()); + const char* genaiVersion = ovms::getGenaiVersion(); + if (genaiVersion[0] != '\0') { + SPDLOG_INFO("OpenVINO GenAI backend {}", genaiVersion); + } + SPDLOG_DEBUG("Bazel build flags: {}", BAZEL_BUILD_FLAGS); SPDLOG_DEBUG("CLI parameters passed to ovms server"); if (config.getServerSettings().serverMode == HF_PULL_MODE) { SPDLOG_DEBUG("source_model: {}", config.getServerSettings().hfSettings.sourceModel); diff --git a/src/version.cpp b/src/version.cpp index 4d92337f5f..2509e3da86 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -28,7 +28,7 @@ const char* getGenaiVersion() { #if (MEDIAPIPE_DISABLE == 0) return ov::genai::get_version().buildNumber; #else - return "Not available"; + return ""; #endif } } // namespace ovms From 2a51720ed35e388dbb054f302fb2f1a0a19fe15d Mon Sep 17 00:00:00 2001 From: Adrian Tobiszewski Date: Wed, 11 Mar 2026 13:10:53 +0100 Subject: [PATCH 4/5] Rename --- src/capi_frontend/capi.cpp | 2 +- src/cli_parser.cpp | 4 ++-- src/server.cpp | 4 ++-- src/test/c_api_tests.cpp | 4 ++-- src/version.cpp | 4 ++-- src/version.hpp | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/capi_frontend/capi.cpp b/src/capi_frontend/capi.cpp index 74e5c0d1bf..f6a4b2b159 100644 --- a/src/capi_frontend/capi.cpp +++ b/src/capi_frontend/capi.cpp @@ -335,7 +335,7 @@ DLL_PUBLIC OVMS_Status* OVMS_ServerMetadata(OVMS_Server* server, OVMS_Metadata** doc->AddMember("name", PROJECT_NAME, doc->GetAllocator()); doc->AddMember("version", PROJECT_VERSION, doc->GetAllocator()); rapidjson::Value ovVersion; - ovVersion.SetString(ovms::getOpenvinoVersion(), doc->GetAllocator()); + ovVersion.SetString(ovms::getOpenVINOVersion(), doc->GetAllocator()); doc->AddMember("ov_version", std::move(ovVersion), doc->GetAllocator()); *metadata = reinterpret_cast(doc); return nullptr; diff --git a/src/cli_parser.cpp b/src/cli_parser.cpp index 8bc11bee97..4f968c5294 100644 --- a/src/cli_parser.cpp +++ b/src/cli_parser.cpp @@ -443,8 +443,8 @@ std::variant> CLIParser::parse(int argc, char* std::string project_name(PROJECT_NAME); std::string project_version(PROJECT_VERSION); ss << project_name + " " + project_version << std::endl; - ss << "OpenVINO backend " << ovms::getOpenvinoVersion() << std::endl; - const char* genaiVersion = ovms::getGenaiVersion(); + ss << "OpenVINO backend " << ovms::getOpenVINOVersion() << std::endl; + const char* genaiVersion = ovms::getGenAIVersion(); if (genaiVersion[0] != '\0') { ss << "OpenVINO GenAI backend " << genaiVersion << std::endl; } diff --git a/src/server.cpp b/src/server.cpp index 04fdc9cab0..eb9c223a05 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -86,8 +86,8 @@ static void logConfig(const Config& config) { std::string project_name(PROJECT_NAME); std::string project_version(PROJECT_VERSION); SPDLOG_INFO(project_name + " " + project_version); - SPDLOG_INFO("OpenVINO backend {}", ovms::getOpenvinoVersion()); - const char* genaiVersion = ovms::getGenaiVersion(); + SPDLOG_INFO("OpenVINO backend {}", ovms::getOpenVINOVersion()); + const char* genaiVersion = ovms::getGenAIVersion(); if (genaiVersion[0] != '\0') { SPDLOG_INFO("OpenVINO GenAI backend {}", genaiVersion); } diff --git a/src/test/c_api_tests.cpp b/src/test/c_api_tests.cpp index 737d09f201..576bd33b6c 100644 --- a/src/test/c_api_tests.cpp +++ b/src/test/c_api_tests.cpp @@ -339,7 +339,7 @@ TEST(CAPIServerMetadata, Basic) { ASSERT_CAPI_STATUS_NOT_NULL_EXPECT_CODE(OVMS_SerializeMetadataToString(metadata, nullptr, &size), StatusCode::NONEXISTENT_PTR); ASSERT_CAPI_STATUS_NOT_NULL_EXPECT_CODE(OVMS_SerializeMetadataToString(metadata, &json, nullptr), StatusCode::NONEXISTENT_PTR); ASSERT_CAPI_STATUS_NULL(OVMS_SerializeMetadataToString(metadata, &json, &size)); - ASSERT_EQ(std::string(json), std::string("{\"name\":\"" + std::string(PROJECT_NAME) + "\",\"version\":\"" + std::string(PROJECT_VERSION) + "\",\"ov_version\":\"" + std::string(ovms::getOpenvinoVersion()) + "\"}")); + ASSERT_EQ(std::string(json), std::string("{\"name\":\"" + std::string(PROJECT_NAME) + "\",\"version\":\"" + std::string(PROJECT_VERSION) + "\",\"ov_version\":\"" + std::string(ovms::getOpenVINOVersion()) + "\"}")); ASSERT_EQ(size, std::strlen(json)); OVMS_StringFree(json); const char* pointer = "/name"; @@ -362,7 +362,7 @@ TEST(CAPIServerMetadata, Basic) { pointer = "/ov_version"; ASSERT_CAPI_STATUS_NULL(OVMS_MetadataFieldByPointer(metadata, pointer, &value, &size)); - ASSERT_EQ(std::string(value), std::string(ovms::getOpenvinoVersion())); + ASSERT_EQ(std::string(value), std::string(ovms::getOpenVINOVersion())); ASSERT_EQ(size, std::strlen(value)); OVMS_StringFree(value); diff --git a/src/version.cpp b/src/version.cpp index 2509e3da86..f9dd6db188 100644 --- a/src/version.cpp +++ b/src/version.cpp @@ -21,10 +21,10 @@ #endif namespace ovms { -const char* getOpenvinoVersion() { +const char* getOpenVINOVersion() { return ov::get_openvino_version().buildNumber; } -const char* getGenaiVersion() { +const char* getGenAIVersion() { #if (MEDIAPIPE_DISABLE == 0) return ov::genai::get_version().buildNumber; #else diff --git a/src/version.hpp b/src/version.hpp index db9e605e82..57925cabf6 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -20,7 +20,7 @@ #define BAZEL_BUILD_FLAGS "REPLACE_BAZEL_BUILD_FLAGS" namespace ovms { -const char* getOpenvinoVersion(); -const char* getGenaiVersion(); +const char* getOpenVINOVersion(); +const char* getGenAIVersion(); } // namespace ovms #endif // SRC_VERSION_HPP_ From d8e724ec4b7eafcc1511ff2157a66c8cee0e1f20 Mon Sep 17 00:00:00 2001 From: Rafal Sapala Date: Wed, 11 Mar 2026 13:10:42 +0100 Subject: [PATCH 5/5] Use VS cmake --- windows_test.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows_test.bat b/windows_test.bat index 2fd5dcbfa7..f1a5a27b05 100644 --- a/windows_test.bat +++ b/windows_test.bat @@ -47,7 +47,7 @@ set "runTest=%cd%\bazel-bin\src\ovms_test.exe --gtest_filter=!gtestFilter! > win :: Setting PATH environment variable based on default windows node settings: Added ovms_windows specific python settings and c:/opt and removed unused Nvidia and OCL specific tools. :: When changing the values here you can print the node default PATH value and base your changes on it. -set "setPath=C:\opt;C:\opt\Python312\;C:\opt\Python312\Scripts\;C:\opt\msys64\usr\bin\;C:\opt\curl-8.18.0_4-win64-mingw\bin;%PATH%;" +set "setPath=C:\opt;C:\opt\Python312\;C:\opt\Python312\Scripts\;C:\opt\msys64\usr\bin\;C:\opt\curl-8.18.0_4-win64-mingw\bin;c:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\;%PATH%;" set "setPythonPath=%cd%\bazel-out\x64_windows-opt\bin\src\python\binding" set "BAZEL_SH=C:\opt\msys64\usr\bin\bash.exe"