From dd2add6572e99704b165cb9fb52080d6f996a1f4 Mon Sep 17 00:00:00 2001 From: Lalit Bhasin Date: Sun, 8 Feb 2026 10:00:51 +0530 Subject: [PATCH 1/3] changes --- api/include/opentelemetry/logs/event_logger.h | 12 ---------- .../logs/event_logger_provider.h | 12 ---------- api/include/opentelemetry/logs/provider.h | 23 +++++-------------- 3 files changed, 6 insertions(+), 41 deletions(-) diff --git a/api/include/opentelemetry/logs/event_logger.h b/api/include/opentelemetry/logs/event_logger.h index dbeffd2042..81291fab2c 100644 --- a/api/include/opentelemetry/logs/event_logger.h +++ b/api/include/opentelemetry/logs/event_logger.h @@ -18,14 +18,7 @@ namespace logs # if defined(_MSC_VER) # pragma warning(push) # pragma warning(disable : 4996) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wdeprecated-declarations" # endif - /** * Handles event log record creation. **/ @@ -88,13 +81,8 @@ class OPENTELEMETRY_DEPRECATED EventLogger void IgnoreTraitResult(ValueType &&...) {} }; - # if defined(_MSC_VER) # pragma warning(pop) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic pop -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic pop # endif #endif } // namespace logs diff --git a/api/include/opentelemetry/logs/event_logger_provider.h b/api/include/opentelemetry/logs/event_logger_provider.h index cb3b05dc72..3998e5bf37 100644 --- a/api/include/opentelemetry/logs/event_logger_provider.h +++ b/api/include/opentelemetry/logs/event_logger_provider.h @@ -18,14 +18,7 @@ class Logger; # if defined(_MSC_VER) # pragma warning(push) # pragma warning(disable : 4996) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wdeprecated-declarations" # endif - /** * Creates new EventLogger instances. */ @@ -43,13 +36,8 @@ class OPENTELEMETRY_DEPRECATED EventLoggerProvider nostd::shared_ptr delegate_logger, nostd::string_view event_domain) noexcept = 0; }; - # if defined(_MSC_VER) # pragma warning(pop) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic pop -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic pop # endif #endif } // namespace logs diff --git a/api/include/opentelemetry/logs/provider.h b/api/include/opentelemetry/logs/provider.h index 83d2e765de..b85d852b71 100644 --- a/api/include/opentelemetry/logs/provider.h +++ b/api/include/opentelemetry/logs/provider.h @@ -48,16 +48,6 @@ class OPENTELEMETRY_EXPORT Provider } #if OPENTELEMETRY_ABI_VERSION_NO < 2 -# if defined(_MSC_VER) -# pragma warning(push) -# pragma warning(disable : 4996) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wdeprecated-declarations" -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wdeprecated-declarations" -# endif /** * Returns the singleton EventLoggerProvider. * @@ -68,6 +58,9 @@ class OPENTELEMETRY_EXPORT Provider GetEventLoggerProvider() noexcept { std::lock_guard guard(GetLock()); +# if defined(_MSC_VER) +# pragma warning(suppress : 4996) +# endif return nostd::shared_ptr(GetEventProvider()); } @@ -78,15 +71,11 @@ class OPENTELEMETRY_EXPORT Provider const nostd::shared_ptr &tp) noexcept { std::lock_guard guard(GetLock()); - GetEventProvider() = tp; - } # if defined(_MSC_VER) -# pragma warning(pop) -# elif defined(__GNUC__) && !defined(__clang__) && !defined(__apple_build_version__) -# pragma GCC diagnostic pop -# elif defined(__clang__) || defined(__apple_build_version__) -# pragma clang diagnostic pop +# pragma warning(suppress : 4996) # endif + GetEventProvider() = tp; + } #endif private: From 107f7d7412cdf7d8f7f5354750b7bb64ab51f9e9 Mon Sep 17 00:00:00 2001 From: Lalit Bhasin Date: Sun, 8 Feb 2026 10:10:41 +0530 Subject: [PATCH 2/3] fix --- .github/workflows/ci.yml | 6 ++ ci/check_windows_event_api_deprecation.ps1 | 82 ++++++++++++++++++++++ 2 files changed, 88 insertions(+) create mode 100644 ci/check_windows_event_api_deprecation.ps1 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7c31c5d2f3..f5ee5da93a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -341,6 +341,8 @@ jobs: - name: setup run: | ./ci/setup_windows_ci_environment.ps1 + - name: verify windows deprecation behavior + run: ./ci/check_windows_event_api_deprecation.ps1 - name: run tests run: ./ci/do_ci.ps1 cmake.maintainer.test @@ -359,6 +361,8 @@ jobs: - name: setup run: | ./ci/setup_windows_ci_environment.ps1 + - name: verify windows deprecation behavior + run: ./ci/check_windows_event_api_deprecation.ps1 - name: run tests env: CXX_STANDARD: '20' @@ -379,6 +383,8 @@ jobs: - name: setup run: | ./ci/setup_windows_ci_environment.ps1 + - name: verify windows deprecation behavior + run: ./ci/check_windows_event_api_deprecation.ps1 - name: run tests env: CXX_STANDARD: '20' diff --git a/ci/check_windows_event_api_deprecation.ps1 b/ci/check_windows_event_api_deprecation.ps1 new file mode 100644 index 0000000000..014fd5199a --- /dev/null +++ b/ci/check_windows_event_api_deprecation.ps1 @@ -0,0 +1,82 @@ +# Copyright The OpenTelemetry Authors +# SPDX-License-Identifier: Apache-2.0 + +$ErrorActionPreference = "Stop" +trap { $host.SetShouldExit(1) } + +$SRC_DIR = (Get-Item -Path ".\").FullName +$CHECK_DIR = Join-Path "$SRC_DIR" "build/windows-deprecation-check" + +if (Test-Path "$CHECK_DIR") { + Remove-Item -Path "$CHECK_DIR" -Recurse -Force +} +New-Item -Path "$CHECK_DIR" -ItemType Directory | Out-Null + +$CMAKE_LISTS = @" +cmake_minimum_required(VERSION 3.15) +project(windows_deprecation_check LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +add_library(logger_only OBJECT logger_only.cpp) +target_include_directories(logger_only PRIVATE "${SRC_DIR}/api/include") +if (MSVC) + target_compile_options(logger_only PRIVATE /W4 /WX /we4996) +endif() + +add_library(event_use OBJECT event_use.cpp) +target_include_directories(event_use PRIVATE "${SRC_DIR}/api/include") +if (MSVC) + target_compile_options(event_use PRIVATE /W4 /WX /we4996) +endif() +"@ + +$LOGGER_ONLY = @" +#include "opentelemetry/logs/provider.h" + +int main() +{ + auto lp = opentelemetry::logs::Provider::GetLoggerProvider(); + (void)lp; + return 0; +} +"@ + +$EVENT_USE = @" +#include "opentelemetry/logs/provider.h" + +int main() +{ + auto ep = opentelemetry::logs::Provider::GetEventLoggerProvider(); + (void)ep; + return 0; +} +"@ + +Set-Content -Path (Join-Path "$CHECK_DIR" "CMakeLists.txt") -Value $CMAKE_LISTS +Set-Content -Path (Join-Path "$CHECK_DIR" "logger_only.cpp") -Value $LOGGER_ONLY +Set-Content -Path (Join-Path "$CHECK_DIR" "event_use.cpp") -Value $EVENT_USE + +Push-Location -Path "$CHECK_DIR" + +cmake -S . -B . +$exit = $LASTEXITCODE +if ($exit -ne 0) { + exit $exit +} + +cmake --build . --target logger_only +$exit = $LASTEXITCODE +if ($exit -ne 0) { + throw "Expected logger_only target to compile without deprecation errors" +} + +cmake --build . --target event_use +$exit = $LASTEXITCODE +if ($exit -eq 0) { + throw "Expected event_use target to fail with C4996 (/we4996), but it compiled successfully" +} + +Write-Output "Windows deprecation behavior check passed: logger-only succeeds and Event API usage fails with /we4996." +Pop-Location From 0fffa2f4b76c9a6eabd5dd9c971eb56d07d9d6f6 Mon Sep 17 00:00:00 2001 From: Lalit Bhasin Date: Sun, 8 Feb 2026 11:39:32 +0530 Subject: [PATCH 3/3] fix --- ci/check_windows_event_api_deprecation.ps1 | 48 +++++++++++++--------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/ci/check_windows_event_api_deprecation.ps1 b/ci/check_windows_event_api_deprecation.ps1 index 014fd5199a..8fc9f1fa95 100644 --- a/ci/check_windows_event_api_deprecation.ps1 +++ b/ci/check_windows_event_api_deprecation.ps1 @@ -6,6 +6,7 @@ trap { $host.SetShouldExit(1) } $SRC_DIR = (Get-Item -Path ".\").FullName $CHECK_DIR = Join-Path "$SRC_DIR" "build/windows-deprecation-check" +$BUILD_DIR = Join-Path "$CHECK_DIR" "build" if (Test-Path "$CHECK_DIR") { Remove-Item -Path "$CHECK_DIR" -Recurse -Force @@ -59,24 +60,33 @@ Set-Content -Path (Join-Path "$CHECK_DIR" "logger_only.cpp") -Value $LOGGER_ONLY Set-Content -Path (Join-Path "$CHECK_DIR" "event_use.cpp") -Value $EVENT_USE Push-Location -Path "$CHECK_DIR" - -cmake -S . -B . -$exit = $LASTEXITCODE -if ($exit -ne 0) { - exit $exit +try { + cmake -S . -B build + $exit = $LASTEXITCODE + if ($exit -ne 0) { + exit $exit + } + + cmake --build "$BUILD_DIR" --target logger_only + $exit = $LASTEXITCODE + if ($exit -ne 0) { + throw "Expected logger_only target to compile without deprecation errors" + } + + $EVENT_LOG = Join-Path "$CHECK_DIR" "event_use_build.log" + cmake --build "$BUILD_DIR" --target event_use *> "$EVENT_LOG" + $exit = $LASTEXITCODE + if ($exit -eq 0) { + throw "Expected event_use target to fail with C4996 (/we4996), but it compiled successfully" + } + + $event_output = Get-Content -Path "$EVENT_LOG" -Raw + if ($event_output -notmatch "C4996") { + throw "event_use failed, but not due to C4996 deprecation warning. See $EVENT_LOG" + } + + Write-Output "Windows deprecation behavior check passed: logger-only succeeds and Event API usage fails with C4996 (/we4996)." } - -cmake --build . --target logger_only -$exit = $LASTEXITCODE -if ($exit -ne 0) { - throw "Expected logger_only target to compile without deprecation errors" +finally { + Pop-Location } - -cmake --build . --target event_use -$exit = $LASTEXITCODE -if ($exit -eq 0) { - throw "Expected event_use target to fail with C4996 (/we4996), but it compiled successfully" -} - -Write-Output "Windows deprecation behavior check passed: logger-only succeeds and Event API usage fails with /we4996." -Pop-Location