Skip to content

Commit

Permalink
Update Windows Fleet for December 2023 Patch Tuesday (microsoft#35640)
Browse files Browse the repository at this point in the history
  • Loading branch information
BillyONeal authored and Osyotr committed Jan 23, 2024
1 parent 5290667 commit ca66630
Show file tree
Hide file tree
Showing 15 changed files with 230 additions and 138 deletions.
40 changes: 40 additions & 0 deletions ports/folly/disable-uninitialized-resize-on-new-stl.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
diff --git a/folly/memory/UninitializedMemoryHacks.h b/folly/memory/UninitializedMemoryHacks.h
index bd31c88..9f640a8 100644
--- a/folly/memory/UninitializedMemoryHacks.h
+++ b/folly/memory/UninitializedMemoryHacks.h
@@ -101,6 +101,9 @@ template <
typename std::enable_if<std::is_trivially_destructible<T>::value>::type>
inline void resizeWithoutInitialization(
std::basic_string<T>& s, std::size_t n) {
+#if defined(_MSVC_STL_UPDATE) && _MSVC_STL_UPDATE >= 202206L
+ s.resize(n);
+#else
if (n <= s.size()) {
s.resize(n);
} else {
@@ -111,6 +114,7 @@ inline void resizeWithoutInitialization(
}
detail::unsafeStringSetLargerSize(s, n);
}
+#endif // STL workaround
}

/**
@@ -244,6 +248,8 @@ struct MakeUnsafeStringSetLargerSize {
#elif defined(_MSC_VER)
// MSVC

+#if defined(_MSVC_STL_UPDATE) && _MSVC_STL_UPDATE >= 202206L
+#else
template <typename Tag, typename T, typename A, A Ptr_Eos>
struct MakeUnsafeStringSetLargerSize {
friend void unsafeStringSetLargerSizeImpl(
@@ -262,7 +268,7 @@ struct MakeUnsafeStringSetLargerSize {
void (std::basic_string<TYPE>::*)(std::size_t), \
&std::basic_string<TYPE>::_Eos>; \
FOLLY_DECLARE_STRING_RESIZE_WITHOUT_INIT_IMPL(TYPE)
-
+#endif // workaround
#else
#warning \
"No implementation for resizeWithoutInitialization of std::basic_string"
1 change: 1 addition & 0 deletions ports/folly/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ vcpkg_from_github(
fix-windows-minmax.patch
fix-deps.patch
openssl.patch # from https://github.com/facebook/folly/pull/2016
disable-uninitialized-resize-on-new-stl.patch
)

file(REMOVE "${SOURCE_PATH}/CMake/FindFmt.cmake")
Expand Down
1 change: 1 addition & 0 deletions ports/folly/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "folly",
"version-string": "2023.10.02.00",
"port-version": 1,
"description": "An open-source C++ library developed and used at Facebook. The library is UNSTABLE on Windows",
"homepage": "https://github.com/facebook/folly",
"license": "Apache-2.0",
Expand Down
264 changes: 140 additions & 124 deletions ports/qtwebengine/msvc-template.patch
Original file line number Diff line number Diff line change
@@ -1,124 +1,140 @@
diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
index 459c6a5..687a364 100644
--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
+++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
@@ -224,60 +224,13 @@ ToStringVal MakeVal(const T& x) {
template <typename... Ts>
class LogStreamer;

-// Base case: Before the first << argument.
-template <>
-class LogStreamer<> final {
- public:
- template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
- absl::enable_if_t<std::is_arithmetic<U>::value ||
- std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V> operator<<(U arg) const {
- return LogStreamer<V>(MakeVal(arg), this);
- }
-
- template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
- absl::enable_if_t<!std::is_arithmetic<U>::value &&
- !std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V> operator<<(const U& arg) const {
- return LogStreamer<V>(MakeVal(arg), this);
- }
-
-#if RTC_CHECK_MSG_ENABLED
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
- const int line,
- const char* message,
- const Us&... args) {
- static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd};
- FatalLog(file, line, message, t, args.GetVal()...);
- }
-
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file,
- const int line,
- const char* message,
- const Us&... args) {
- static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()...,
- CheckArgType::kEnd};
- FatalLog(file, line, message, t, args.GetVal()...);
- }
-#else
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
- const int line) {
- FatalLog(file, line);
- }
-#endif
-};

// Inductive case: We've already seen at least one << argument. The most recent
// one had type `T`, and the earlier ones had types `Ts`.
template <typename T, typename... Ts>
class LogStreamer<T, Ts...> final {
public:
- RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...>* prior)
+ RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...> * const prior)
: arg_(arg), prior_(prior) {}

template <typename U,
@@ -328,6 +281,57 @@ class LogStreamer<T, Ts...> final {
const LogStreamer<Ts...>* prior_;
};

+
+// Base case: Before the first << argument.
+template <>
+class LogStreamer<> final {
+ public:
+ template <typename U,
+ absl::enable_if_t<std::is_arithmetic<std::remove_cvref_t<U>>::value ||
+ std::is_enum<U>::value>* = nullptr>
+ RTC_FORCE_INLINE auto operator<<(U arg) const {
+ return LogStreamer<decltype(MakeVal(arg))>(MakeVal(arg), this);
+ }
+
+ template <typename U,
+ absl::enable_if_t<!std::is_arithmetic<std::remove_cvref_t<U>>::value &&
+ !std::is_enum<U>::value>* = nullptr>
+ RTC_FORCE_INLINE auto operator<<(const U& arg) const {
+ return LogStreamer<decltype(MakeVal(arg))>(MakeVal(arg), this);
+ }
+
+ //RTC_FORCE_INLINE auto operator<<(const std::string& arg) const {
+ // return LogStreamer<Val<CheckArgType::kStdString, const std::string*>>(MakeVal(arg), this);
+ //
+
+#if RTC_CHECK_MSG_ENABLED
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
+ const int line,
+ const char* message,
+ const Us&... args) {
+ static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd};
+ FatalLog(file, line, message, t, args.GetVal()...);
+ }
+
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file,
+ const int line,
+ const char* message,
+ const Us&... args) {
+ static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()...,
+ CheckArgType::kEnd};
+ FatalLog(file, line, message, t, args.GetVal()...);
+ }
+#else
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
+ const int line) {
+ FatalLog(file, line);
+ }
+#endif
+};
+
template <bool isCheckOp>
class FatalLogCall final {
public:
diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
index 459c6a5..4bc8da8 100644
--- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
+++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h
@@ -224,76 +224,27 @@ ToStringVal MakeVal(const T& x) {
template <typename... Ts>
class LogStreamer;

-// Base case: Before the first << argument.
-template <>
-class LogStreamer<> final {
- public:
- template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
- absl::enable_if_t<std::is_arithmetic<U>::value ||
- std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V> operator<<(U arg) const {
- return LogStreamer<V>(MakeVal(arg), this);
- }
-
- template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
- absl::enable_if_t<!std::is_arithmetic<U>::value &&
- !std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V> operator<<(const U& arg) const {
- return LogStreamer<V>(MakeVal(arg), this);
- }
-
-#if RTC_CHECK_MSG_ENABLED
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
- const int line,
- const char* message,
- const Us&... args) {
- static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd};
- FatalLog(file, line, message, t, args.GetVal()...);
- }
-
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file,
- const int line,
- const char* message,
- const Us&... args) {
- static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()...,
- CheckArgType::kEnd};
- FatalLog(file, line, message, t, args.GetVal()...);
- }
-#else
- template <typename... Us>
- RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
- const int line) {
- FatalLog(file, line);
- }
-#endif
-};

// Inductive case: We've already seen at least one << argument. The most recent
// one had type `T`, and the earlier ones had types `Ts`.
template <typename T, typename... Ts>
class LogStreamer<T, Ts...> final {
public:
- RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...>* prior)
+ RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...> * const prior)
: arg_(arg), prior_(prior) {}

template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
absl::enable_if_t<std::is_arithmetic<U>::value ||
std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V, T, Ts...> operator<<(U arg) const {
- return LogStreamer<V, T, Ts...>(MakeVal(arg), this);
+ RTC_FORCE_INLINE auto operator<<(U arg) const {
+ return LogStreamer<decltype(MakeVal(arg)), T, Ts...>(MakeVal(arg), this);
}

template <typename U,
- typename V = decltype(MakeVal(std::declval<U>())),
absl::enable_if_t<!std::is_arithmetic<U>::value &&
!std::is_enum<U>::value>* = nullptr>
- RTC_FORCE_INLINE LogStreamer<V, T, Ts...> operator<<(const U& arg) const {
- return LogStreamer<V, T, Ts...>(MakeVal(arg), this);
+ RTC_FORCE_INLINE auto operator<<(const U& arg) const {
+ return LogStreamer<decltype(MakeVal(arg)), T, Ts...>(MakeVal(arg), this);
}

#if RTC_CHECK_MSG_ENABLED
@@ -328,6 +279,53 @@ class LogStreamer<T, Ts...> final {
const LogStreamer<Ts...>* prior_;
};

+
+// Base case: Before the first << argument.
+template <>
+class LogStreamer<> final {
+ public:
+ template <typename U,
+ absl::enable_if_t<std::is_arithmetic<U>::value ||
+ std::is_enum<U>::value>* = nullptr>
+ RTC_FORCE_INLINE auto operator<<(U arg) const {
+ return LogStreamer<decltype(MakeVal(arg))>(MakeVal(arg), this);
+ }
+
+ template <typename U,
+ absl::enable_if_t<!std::is_arithmetic<U>::value &&
+ !std::is_enum<U>::value>* = nullptr>
+ RTC_FORCE_INLINE auto operator<<(const U& arg) const {
+ return LogStreamer<decltype(MakeVal(arg))>(MakeVal(arg), this);
+ }
+
+#if RTC_CHECK_MSG_ENABLED
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
+ const int line,
+ const char* message,
+ const Us&... args) {
+ static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd};
+ FatalLog(file, line, message, t, args.GetVal()...);
+ }
+
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file,
+ const int line,
+ const char* message,
+ const Us&... args) {
+ static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()...,
+ CheckArgType::kEnd};
+ FatalLog(file, line, message, t, args.GetVal()...);
+ }
+#else
+ template <typename... Us>
+ RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
+ const int line) {
+ FatalLog(file, line);
+ }
+#endif
+};
+
template <bool isCheckOp>
class FatalLogCall final {
public:
2 changes: 1 addition & 1 deletion ports/qtwebengine/vcpkg.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$comment": "x86-windows is not within the upstream support matrix of Qt6",
"name": "qtwebengine",
"version": "6.6.1",
"port-version": 2,
"port-version": 3,
"description": "Qt WebEngine",
"homepage": "https://www.qt.io/",
"license": null,
Expand Down
2 changes: 1 addition & 1 deletion scripts/azure-pipelines/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
variables:
android-pool: 'PrAnd-1ES-Pool'
linux-pool: 'PrLin-1ES-Pool'
windows-pool: 'PrWin-2023-10-11'
windows-pool: 'PrWin-2023-12-12'
osx-pool: 'PrOsx-2023-09-11'
linux-docker-image: 'andcontainerregistry.azurecr.io/vcpkg-android:2023-12-05'

Expand Down
12 changes: 8 additions & 4 deletions scripts/azure-pipelines/generate-sas-tokens.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Param(
[Parameter(Mandatory=$true)]
[int]$KeyNumber
)

function Get-SasToken {
Param(
Expand Down Expand Up @@ -28,13 +32,13 @@ function Get-SasToken {

# Asset Cache:
# Read, Create, List
$assetSas = Get-SasToken -KeyNumber 1 -ResourceGroupName vcpkg-asset-cache -StorageAccountName vcpkgassetcacheeastasia -ContainerName cache -Permission rcl
$assetSas = Get-SasToken -KeyNumber $KeyNumber -ResourceGroupName vcpkg-asset-cache -StorageAccountName vcpkgassetcacheeastasia -ContainerName cache -Permission rcl

# Binary Cache:
# Read, Create, List, Write
$binarySas = Get-SasToken -KeyNumber 1 -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycache -ContainerName cache -Permission rclw
$binaryEASas = Get-SasToken -KeyNumber 1 -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycacheeastasia -ContainerName cache -Permission rclw
$binaryWUS3as = Get-SasToken -KeyNumber 1 -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycachewus3 -ContainerName cache -Permission rclw
$binarySas = Get-SasToken -KeyNumber $KeyNumber -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycache -ContainerName cache -Permission rclw
$binaryEASas = Get-SasToken -KeyNumber $KeyNumber -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycacheeastasia -ContainerName cache -Permission rclw
$binaryWUS3as = Get-SasToken -KeyNumber $KeyNumber -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycachewus3 -ContainerName cache -Permission rclw

$response = "Asset Cache SAS: Update`n" + `
"https://dev.azure.com/vcpkg/public/_library?itemType=VariableGroups&view=VariableGroupView&variableGroupId=6&path=vcpkg-asset-caching-credentials`n" + `
Expand Down
7 changes: 5 additions & 2 deletions scripts/azure-pipelines/patch-tuesday-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@
* West US 2, 1 Replica
* West US 3, 1 Replica
* [ ] After the last build finishes on the previous pool, delete it in the Azure Devops *Organization* UI and its Resource Group. ( https://dev.azure.com/vcpkg/_settings/agentpools ?)
* [ ] Run `generate-sas-tokens.ps1` and update the relevant libraries on dev.azure.com/vcpkg and
devdiv.visualstudio.com.
* [ ] Run `generate-sas-tokens.ps1 -KeyNumber N`, where N is whether the month is even
(Jan = 1, Feb = 2, Mar = 1, and so on) and update the relevant libraries on
dev.azure.com/vcpkg and devdiv.visualstudio.com
* [ ] After builds using previous SAS tokens complete, run `roll-sas-tokens.ps1 -KeyNumber N` where
this N is the other key. (Jan = 2, Feb = 1, Mar = 2, and so on)
* [ ] Mint a new macOS base box. (See instructions in `scripts/azure-pipelines/osx/README.md`)
* [ ] Deploy the new base box to all hosts.
15 changes: 15 additions & 0 deletions scripts/azure-pipelines/roll-sas-tokens.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@

Param(
[Parameter(Mandatory=$true)]
[int]$KeyNumber
)

$keyName = "key$KeyNumber"

# Asset Cache:
New-AzStorageAccountKey -ResourceGroupName vcpkg-asset-cache -StorageAccountName vcpkgassetcacheeastasia -KeyName $keyName

# Binary Cache:
New-AzStorageAccountKey -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycache -KeyName $keyName
New-AzStorageAccountKey -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycacheeastasia -KeyName $keyName
New-AzStorageAccountKey -ResourceGroupName vcpkg-binary-cache -StorageAccountName vcpkgbinarycachewus3 -KeyName $keyName
Loading

0 comments on commit ca66630

Please sign in to comment.