diff --git a/cmake-modules/AzureVcpkg.cmake b/cmake-modules/AzureVcpkg.cmake index e1db45d18..e4bd114b6 100644 --- a/cmake-modules/AzureVcpkg.cmake +++ b/cmake-modules/AzureVcpkg.cmake @@ -18,7 +18,7 @@ macro(az_vcpkg_integrate) message("AZURE_SDK_DISABLE_AUTO_VCPKG is not defined. Fetch a local copy of vcpkg.") # GET VCPKG FROM SOURCE # User can set env var AZURE_SDK_VCPKG_COMMIT to pick the VCPKG commit to fetch - set(VCPKG_COMMIT_STRING 2c7705e70dcfb70e5f726459c3e399bd780bc1fc) # default SDK tested commit + set(VCPKG_COMMIT_STRING ef7dbf94b9198bc58f45951adcf1f041fcbc5ea0) # default SDK tested commit if(DEFINED ENV{AZURE_SDK_VCPKG_COMMIT}) message("AZURE_SDK_VCPKG_COMMIT is defined. Using that instead of the default.") set(VCPKG_COMMIT_STRING "$ENV{AZURE_SDK_VCPKG_COMMIT}") # default SDK tested commit diff --git a/eng/pipelines/templates/stages/platform-matrix.json b/eng/pipelines/templates/stages/platform-matrix.json index 0c14454e2..f4452390c 100644 --- a/eng/pipelines/templates/stages/platform-matrix.json +++ b/eng/pipelines/templates/stages/platform-matrix.json @@ -7,7 +7,7 @@ "OSConfiguration": { "macos-latest": { "OSVmImage": "env:MACVMIMAGE", - "XCODE_VERSION": "15.4" + "XCODE_VERSION": "16.4" } }, "StaticConfigs": { diff --git a/sdk/core/azure-core/src/datetime.cpp b/sdk/core/azure-core/src/datetime.cpp index be54dbacd..288705b3d 100644 --- a/sdk/core/azure-core/src/datetime.cpp +++ b/sdk/core/azure-core/src/datetime.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -43,16 +44,65 @@ DateTime GetSystemClockEpoch() DateTime GetMaxDateTime() { - auto const systemClockMax = std::chrono::duration_cast( - (std::chrono::system_clock::time_point::max)().time_since_epoch()) - .count(); +#ifdef _MSC_VER +#pragma warning(push) +// warning C6326: Potential comparison of a constant with another constant. +#pragma warning(disable : 6326) +#endif + static_assert( + std::is_same::value, + "DateTime::clock::duration::rep must be the same as " + "std::chrono::system_clock::duration::rep"); - auto const systemClockEpoch = GetSystemClockEpoch().time_since_epoch().count(); + using Rep = DateTime::clock::duration::rep; - constexpr auto repMax = (std::numeric_limits::max)(); + using CommonDuration = std::chrono::duration< + Rep, + std::conditional< + std::ratio_greater< + DateTime::clock::duration::period, + std::chrono::system_clock::duration::period>::value, + DateTime::clock::duration::period, + std::chrono::system_clock::duration::period>::type>; + + std::chrono::system_clock::time_point const scEpochTimePoint + = std::chrono::system_clock::time_point(); + + std::chrono::system_clock::duration const scSystemClockMaxDuration + = (scEpochTimePoint + ((std::chrono::system_clock::time_point::max)() - scEpochTimePoint)) + .time_since_epoch(); + + Rep const commonSystemClockMax + = std::chrono::duration_cast(scSystemClockMaxDuration).count(); + + Rep const commonDtClockMax + = std::chrono::duration_cast((DateTime::clock::duration::max)()).count(); + + Rep const dtSystemClockMax = (commonSystemClockMax < commonDtClockMax) + ? std::chrono::duration_cast(scSystemClockMaxDuration).count() + : ((DateTime::clock::duration::max)()).count(); + + Azure::DateTime::duration const dtSystemClockEpochDuration + = GetSystemClockEpoch().time_since_epoch(); + + Rep const commonSystemClockEpoch + = std::chrono::duration_cast(dtSystemClockEpochDuration).count(); + + Rep const dtSystemClockEpoch + = std::chrono::duration_cast(dtSystemClockEpochDuration).count(); + + constexpr Rep commonRepMax = std::chrono::duration_cast( + DateTime::duration((std::numeric_limits::max)())) + .count(); return DateTime(DateTime::time_point(DateTime::duration( - systemClockMax + (std::min)(systemClockEpoch, (repMax - systemClockMax))))); + (commonSystemClockMax < commonRepMax + && commonSystemClockEpoch < (commonRepMax - commonSystemClockMax)) + ? (dtSystemClockEpoch + dtSystemClockMax) + : dtSystemClockMax))); +#ifdef _MSC_VER +#pragma warning(pop) +#endif } template @@ -422,8 +472,8 @@ DateTime::DateTime( DateTime::operator std::chrono::system_clock::time_point() const { - static DateTime SystemClockMin((std::chrono::system_clock::time_point::min)()); - static DateTime SystemClockMax(GetMaxDateTime()); + static DateTime const SystemClockMin((std::chrono::system_clock::time_point::min)()); + static DateTime const SystemClockMax(GetMaxDateTime()); auto outOfRange = 0; if (*this < SystemClockMin) diff --git a/vcpkg.json b/vcpkg.json index 23e6f7cf6..50a112a9e 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,7 +1,7 @@ { "name": "azure-sdk-for-cpp", "version": "1.5.0", - "builtin-baseline": "2c7705e70dcfb70e5f726459c3e399bd780bc1fc", + "builtin-baseline": "ef7dbf94b9198bc58f45951adcf1f041fcbc5ea0", "dependencies": [ { "name": "curl" @@ -16,7 +16,9 @@ }, { "name": "opentelemetry-cpp", - "features": ["otlp-http"], + "features": [ + "otlp-http" + ], "platform": "!(windows & !static)", "version>=": "1.3.0" }, @@ -37,6 +39,5 @@ "platform": "!uwp" } ], - "overrides": [ - ] + "overrides": [] }