Patch Tuesday for July 2026 (#52938)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Billy O'Neal 2026-07-23 10:46:37 -07:00 committed by GitHub
parent 1542813f40
commit bd93b56711
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
55 changed files with 987 additions and 1920 deletions

View File

@ -1,111 +1,22 @@
diff --git a/Code/BuildSystem/CMake/ezUtilsCppFlags.cmake b/Code/BuildSystem/CMake/ezUtilsCppFlags.cmake
index 07ae85f..760d300 100644
--- a/Code/BuildSystem/CMake/ezUtilsCppFlags.cmake
+++ b/Code/BuildSystem/CMake/ezUtilsCppFlags.cmake
@@ -46,7 +46,6 @@ function(ez_set_build_flags_msvc TARGET_NAME)
# /WX: treat warnings as errors
if (NOT ${ARG_NO_WARNINGS_AS_ERRORS} AND NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- target_compile_options(${TARGET_NAME} PRIVATE "/WX")
endif()
if ((CMAKE_SIZEOF_VOID_P EQUAL 4) AND EZ_CMAKE_ARCHITECTURE_X86)
@@ -168,7 +167,6 @@ function(ez_set_build_flags_clang TARGET_NAME)
endif()
if(NOT (CMAKE_CURRENT_SOURCE_DIR MATCHES "Code/ThirdParty"))
- target_compile_options(${TARGET_NAME} PRIVATE -Werror=inconsistent-missing-override -Werror=switch -Werror=uninitialized)
else()
# Ignore all warnings in third party code.
target_compile_options(${TARGET_NAME} PRIVATE -Wno-everything)
diff --git a/Code/Engine/Core/CMakeLists.txt b/Code/Engine/Core/CMakeLists.txt
index 291d494..54eb04d 100644
--- a/Code/Engine/Core/CMakeLists.txt
+++ b/Code/Engine/Core/CMakeLists.txt
@@ -8,7 +8,7 @@ get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
ez_create_target(LIBRARY ${PROJECT_NAME})
if(MSVC)
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
target_link_libraries(${PROJECT_NAME}
diff --git a/Code/Engine/Foundation/CMakeLists.txt b/Code/Engine/Foundation/CMakeLists.txt diff --git a/Code/Engine/Foundation/CMakeLists.txt b/Code/Engine/Foundation/CMakeLists.txt
index 2cb3ece..695f510 100644 index 63db77f..7e87e0d 100644
--- a/Code/Engine/Foundation/CMakeLists.txt --- a/Code/Engine/Foundation/CMakeLists.txt
+++ b/Code/Engine/Foundation/CMakeLists.txt +++ b/Code/Engine/Foundation/CMakeLists.txt
@@ -14,7 +14,7 @@ if(EZ_CMAKE_PLATFORM_WINDOWS) @@ -3,7 +3,7 @@ ez_cmake_init()
endif() # Get the name of this folder as the project name
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
if (MSVC) -ez_create_target(LIBRARY ${PROJECT_NAME})
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX) +ez_create_target(LIBRARY ${PROJECT_NAME} NO_WARNINGS_AS_ERRORS)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
if (EZ_CMAKE_PLATFORM_LINUX)
diff --git a/Code/Engine/RendererDX11/CMakeLists.txt b/Code/Engine/RendererDX11/CMakeLists.txt
index adcfc2e..d53d3c1 100644
--- a/Code/Engine/RendererDX11/CMakeLists.txt
+++ b/Code/Engine/RendererDX11/CMakeLists.txt
@@ -11,7 +11,7 @@ ez_create_target(LIBRARY ${PROJECT_NAME})
ez_link_target_dx11(${PROJECT_NAME})
if(MSVC)
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
target_link_libraries(${PROJECT_NAME} if(EZ_CMAKE_PLATFORM_WINDOWS)
diff --git a/Code/Engine/RendererFoundation/CMakeLists.txt b/Code/Engine/RendererFoundation/CMakeLists.txt target_link_libraries(${PROJECT_NAME}
index 5e6376f..073e97e 100644 @@ -13,8 +13,6 @@ if(EZ_CMAKE_PLATFORM_WINDOWS)
--- a/Code/Engine/RendererFoundation/CMakeLists.txt )
+++ b/Code/Engine/RendererFoundation/CMakeLists.txt endif()
@@ -8,7 +8,7 @@ get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
ez_create_target(LIBRARY ${PROJECT_NAME})
if(MSVC)
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
target_link_libraries(${PROJECT_NAME} -ez_enable_strict_warnings(${PROJECT_NAME})
diff --git a/Code/Engine/Texture/CMakeLists.txt b/Code/Engine/Texture/CMakeLists.txt -
index a26558c..9bd433c 100644 if(EZ_CMAKE_COMPILER_CLANG)
--- a/Code/Engine/Texture/CMakeLists.txt set_source_files_properties(ThirdParty/xxHash/xxHash.c PROPERTIES COMPILE_FLAGS "-Wno-unused-function")
+++ b/Code/Engine/Texture/CMakeLists.txt endif()
@@ -6,7 +6,7 @@ get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
ez_create_target(LIBRARY ${PROJECT_NAME} EXCLUDE_FOLDER_FOR_UNITY DirectXTex)
if(MSVC)
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
target_link_libraries(${PROJECT_NAME}
diff --git a/Code/Engine/Texture/DirectXTex/Shaders/CompileShaders.cmd b/Code/Engine/Texture/DirectXTex/Shaders/CompileShaders.cmd
index d1d977c..a8bad33 100644
--- a/Code/Engine/Texture/DirectXTex/Shaders/CompileShaders.cmd
+++ b/Code/Engine/Texture/DirectXTex/Shaders/CompileShaders.cmd
@@ -5,7 +5,7 @@ rem Licensed under the MIT License.
setlocal
set error=0
-set FXCOPTS=/nologo /WX /Ges /Zi /Zpc /Qstrip_reflect /Qstrip_debug
+set FXCOPTS=/nologo /Ges /Zi /Zpc /Qstrip_reflect /Qstrip_debug
set PCFXC="%WindowsSdkVerBinPath%x86\fxc.exe"
if exist %PCFXC% goto continue
diff --git a/Code/Engine/Utilities/CMakeLists.txt b/Code/Engine/Utilities/CMakeLists.txt
index 4109c31..43cd139 100644
--- a/Code/Engine/Utilities/CMakeLists.txt
+++ b/Code/Engine/Utilities/CMakeLists.txt
@@ -8,7 +8,7 @@ get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
ez_create_target(LIBRARY ${PROJECT_NAME})
if(MSVC)
- target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
+ target_compile_options(${PROJECT_NAME} PRIVATE /W4)
endif()
target_link_libraries(${PROJECT_NAME}

View File

@ -0,0 +1,75 @@
diff --git a/Code/EditorPlugins/Fmod/EditorPluginFmod/CMakeLists.txt b/Code/EditorPlugins/Fmod/EditorPluginFmod/CMakeLists.txt
index 9618c03a2ddce3c566107c32be9b645801812578..456be1610672832e1866e559ee0792a130acb285 100644
--- a/Code/EditorPlugins/Fmod/EditorPluginFmod/CMakeLists.txt
+++ b/Code/EditorPlugins/Fmod/EditorPluginFmod/CMakeLists.txt
@@ -1,12 +1,14 @@
ez_cmake_init()
+# Get the name of this folder as the project name
+get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
+# FMOD is in a sub-module, when it isn't checked out ez_requires_fmod() doesn't exist, so early out here when it's not needed anyway
+ez_apply_build_filter(${PROJECT_NAME})
+
ez_requires_editor()
ez_requires_fmod()
-# Get the name of this folder as the project name
-get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
-
ez_create_target(LIBRARY ${PROJECT_NAME})
ez_link_target_qt(TARGET ${PROJECT_NAME} COMPONENTS Core Gui Widgets)
diff --git a/Code/Engine/Foundation/Platform/Win/Features_Platform.h b/Code/Engine/Foundation/Platform/Win/Features_Platform.h
index 8465fe3465b7d148dec0354913e9c0ad195e4e0a..deecaafc0cc0418f546b90967ecc342ef660996d 100644
--- a/Code/Engine/Foundation/Platform/Win/Features_Platform.h
+++ b/Code/Engine/Foundation/Platform/Win/Features_Platform.h
@@ -87,7 +87,11 @@
# define EZ_SSE_LEVEL EZ_SSE_20
# endif
#elif EZ_ENABLED(EZ_PLATFORM_ARCH_ARM)
-# define EZ_SIMD_IMPLEMENTATION EZ_SIMD_IMPLEMENTATION_NEON
+# if EZ_ENABLED(EZ_COMPILER_MSVC_CLANG)
+# define EZ_SIMD_IMPLEMENTATION EZ_SIMD_IMPLEMENTATION_NEON
+# else
+# define EZ_SIMD_IMPLEMENTATION EZ_SIMD_IMPLEMENTATION_FPU
+# endif
#else
# error "Unknown architecture."
#endif
diff --git a/Code/EnginePlugins/FmodPlugin/CMakeLists.txt b/Code/EnginePlugins/FmodPlugin/CMakeLists.txt
index 18368a56c2b8efa06187068c94fd68195fc940a0..45c9ecddc212b918d9b81031f9acb417c20f2e5a 100644
--- a/Code/EnginePlugins/FmodPlugin/CMakeLists.txt
+++ b/Code/EnginePlugins/FmodPlugin/CMakeLists.txt
@@ -1,9 +1,11 @@
ez_cmake_init()
-ez_requires_fmod()
-
# Get the name of this folder as the project name
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
+# FMOD is in a sub-module, when it isn't checked out ez_requires_fmod() doesn't exist, so early out here when it's not needed anyway
+ez_apply_build_filter(${PROJECT_NAME})
+
+ez_requires_fmod()
ez_create_target(LIBRARY ${PROJECT_NAME})
diff --git a/Code/Tools/Libs/ModelImporter2/CMakeLists.txt b/Code/Tools/Libs/ModelImporter2/CMakeLists.txt
index 82798c06fda044247684d53cc654697db2b18418..fdd6074980f79ffc3cce00a69a894898f609362c 100644
--- a/Code/Tools/Libs/ModelImporter2/CMakeLists.txt
+++ b/Code/Tools/Libs/ModelImporter2/CMakeLists.txt
@@ -1,9 +1,11 @@
ez_cmake_init()
-ez_requires_assimp()
-
# Get the name of this folder as the project name
get_filename_component(PROJECT_NAME ${CMAKE_CURRENT_SOURCE_DIR} NAME_WE)
+# AssImp is in a sub-module, when it isn't checked out ez_requires_assimp() doesn't exist, so early out here when it's not needed anyway
+ez_apply_build_filter(${PROJECT_NAME})
+
+ez_requires_assimp()
ez_create_target(LIBRARY ${PROJECT_NAME})

View File

@ -1,184 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a04be90..f853a0c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,9 @@
cmake_minimum_required(VERSION 3.19)
+if(CMAKE_BUILD_TYPE STREQUAL Release)
+ set(CMAKE_BUILD_TYPE "Shipping" CACHE STRING "Release overridden with Shipping" FORCE)
+endif()
+
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "In-source builds are not supported. Please choose a different binary directory.")
return()
diff --git a/Code/Engine/CMakeLists.txt b/Code/Engine/CMakeLists.txt
index fb4bef4..ccda93d 100644
--- a/Code/Engine/CMakeLists.txt
+++ b/Code/Engine/CMakeLists.txt
@@ -20,5 +20,3 @@ execute_process(
OUTPUT_VARIABLE EZ_GIT_BRANCH_NAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
-
-configure_file("${CMAKE_CURRENT_LIST_DIR}/ezBuildInfo.h.in" "${CMAKE_CURRENT_LIST_DIR}/ezBuildInfo.h" NEWLINE_STYLE LF)
\ No newline at end of file
diff --git a/Code/Engine/Foundation/Basics/Assert.cpp b/Code/Engine/Foundation/Basics/Assert.cpp
index 7a55afc..778fadd 100644
--- a/Code/Engine/Foundation/Basics/Assert.cpp
+++ b/Code/Engine/Foundation/Basics/Assert.cpp
@@ -66,16 +66,6 @@ bool ezDefaultAssertHandler(const char* szSourceFile, ezUInt32 uiLine, const cha
#if EZ_ENABLED(EZ_PLATFORM_WINDOWS)
- // make sure the cursor is definitely shown, since the user must be able to click buttons
-# if EZ_ENABLED(EZ_PLATFORM_WINDOWS_UWP)
- // Todo: Use modern Windows API to show cursor in current window.
- // http://stackoverflow.com/questions/37956628/change-mouse-pointer-in-uwp-app
-# else
- ezInt32 iHideCursor = 1;
- while (ShowCursor(true) < 0)
- ++iHideCursor;
-# endif
-
# if EZ_ENABLED(EZ_COMPILE_FOR_DEBUG)
ezInt32 iRes = _CrtDbgReport(_CRT_ASSERT, szSourceFile, uiLine, nullptr, "'%s'\nFunction: %s\nMessage: %s", szExpression, szFunction, szAssertMsg);
@@ -83,24 +73,9 @@ bool ezDefaultAssertHandler(const char* szSourceFile, ezUInt32 uiLine, const cha
// currently we will ALWAYS trigger the breakpoint / crash (except for when the user presses 'ignore')
if (iRes == 0)
{
- // when the user ignores the assert, restore the cursor show/hide state to the previous count
-# if EZ_ENABLED(EZ_PLATFORM_WINDOWS_UWP)
- // Todo: Use modern Windows API to restore cursor.
-# else
- for (ezInt32 i = 0; i < iHideCursor; ++i)
- ShowCursor(false);
-# endif
-
return false;
}
-# else
-
-
-# if EZ_ENABLED(EZ_PLATFORM_WINDOWS_DESKTOP)
- MessageBoxA(nullptr, szTemp, "Assertion", MB_ICONERROR);
-# endif
-
# endif
#endif
diff --git a/Code/Engine/Foundation/Logging/Implementation/Log.cpp b/Code/Engine/Foundation/Logging/Implementation/Log.cpp
index 1a0d2ed..afcde54 100644
--- a/Code/Engine/Foundation/Logging/Implementation/Log.cpp
+++ b/Code/Engine/Foundation/Logging/Implementation/Log.cpp
@@ -260,12 +260,7 @@ void ezLog::OsMessageBox(const ezFormatString& text)
title = ezApplication::GetApplicationInstance()->GetApplicationName();
}
-#if EZ_ENABLED(EZ_PLATFORM_WINDOWS_DESKTOP)
- MessageBoxW(nullptr, ezStringWChar(display).GetData(), ezStringWChar(title), MB_OK);
-#else
ezLog::Print(display);
- EZ_ASSERT_NOT_IMPLEMENTED;
-#endif
}
void ezLog::GenerateFormattedTimestamp(TimestampMode mode, ezStringBuilder& sTimestampOut)
diff --git a/Code/Engine/Foundation/Math/Implementation/Math_inl.h b/Code/Engine/Foundation/Math/Implementation/Math_inl.h
index 1a2962e..9b31f01 100644
--- a/Code/Engine/Foundation/Math/Implementation/Math_inl.h
+++ b/Code/Engine/Foundation/Math/Implementation/Math_inl.h
@@ -80,6 +80,7 @@ namespace ezMath
#endif
}
+#if EZ_ENABLED(EZ_PLATFORM_64BIT)
EZ_ALWAYS_INLINE ezUInt32 FirstBitLow(ezUInt64 value)
{
EZ_ASSERT_DEBUG(value != 0, "FirstBitLow is undefined for 0");
@@ -95,6 +96,7 @@ namespace ezMath
return 0;
#endif
}
+#endif
EZ_ALWAYS_INLINE ezUInt32 FirstBitHigh(ezUInt32 value)
{
@@ -112,6 +114,7 @@ namespace ezMath
#endif
}
+#if EZ_ENABLED(EZ_PLATFORM_64BIT)
EZ_ALWAYS_INLINE ezUInt32 FirstBitHigh(ezUInt64 value)
{
EZ_ASSERT_DEBUG(value != 0, "FirstBitHigh is undefined for 0");
@@ -127,6 +130,7 @@ namespace ezMath
return 0;
#endif
}
+#endif
EZ_ALWAYS_INLINE ezUInt32 CountTrailingZeros(ezUInt32 bitmask) { return (bitmask == 0) ? 32 : FirstBitLow(bitmask); }
diff --git a/Code/Engine/Foundation/Memory/Implementation/AllocatorBase_inl.h b/Code/Engine/Foundation/Memory/Implementation/AllocatorBase_inl.h
index fb839b3..21e2ec1 100644
--- a/Code/Engine/Foundation/Memory/Implementation/AllocatorBase_inl.h
+++ b/Code/Engine/Foundation/Memory/Implementation/AllocatorBase_inl.h
@@ -60,7 +60,11 @@ namespace ezInternal
template <typename T>
EZ_FORCE_INLINE T* CreateRawBuffer(ezAllocatorBase* pAllocator, size_t uiCount)
{
+#if EZ_ENABLED(EZ_PLATFORM_64BIT)
ezUInt64 safeAllocationSize = ezMath::SafeMultiply64(uiCount, sizeof(T));
+#else
+ ezUInt32 safeAllocationSize = ezMath::SafeMultiply32(uiCount, sizeof(T));
+#endif
return static_cast<T*>(pAllocator->Allocate(safeAllocationSize, EZ_ALIGNMENT_OF(T)));
}
diff --git a/Code/Engine/Foundation/System/Implementation/Win/StackTracer_win.h b/Code/Engine/Foundation/System/Implementation/Win/StackTracer_win.h
index 54939fb..15f928a 100644
--- a/Code/Engine/Foundation/System/Implementation/Win/StackTracer_win.h
+++ b/Code/Engine/Foundation/System/Implementation/Win/StackTracer_win.h
@@ -229,11 +229,23 @@ ezUInt32 ezStackTracer::GetStackTrace(ezArrayPtr<void*>& trace, void* pContext)
frame.AddrFrame.Offset = context.Rbp;
frame.AddrStack.Offset = context.Rsp;
machine_type = IMAGE_FILE_MACHINE_AMD64;
-#else
+#elif defined(_M_IX86)
frame.AddrPC.Offset = context.Eip;
frame.AddrFrame.Offset = context.Ebp;
frame.AddrStack.Offset = context.Esp;
machine_type = IMAGE_FILE_MACHINE_I386;
+#elif defined(_M_ARM64)
+ frame.AddrPC.Offset = context.Pc;
+ frame.AddrFrame.Offset = context.Fp;
+ frame.AddrStack.Offset = context.Sp;
+ machine_type = IMAGE_FILE_MACHINE_ARM64;
+#elif defined(_M_ARM)
+ frame.AddrPC.Offset = context.Pc;
+ frame.AddrFrame.Offset = context.R11;
+ frame.AddrStack.Offset = context.Sp;
+ machine_type = IMAGE_FILE_MACHINE_ARM;
+#else
+ #error Unknown architecture
#endif
for (ezInt32 i = 0; i < (ezInt32)trace.GetCount(); i++)
{
diff --git a/Code/Engine/ezBuildInfo.h b/Code/Engine/ezBuildInfo.h
new file mode 100644
index 0000000..9ba9484
--- /dev/null
+++ b/Code/Engine/ezBuildInfo.h
@@ -0,0 +1,9 @@
+//
+// This file is auto-generated by CMake.
+//
+
+#pragma once
+
+#define EZ_GIT_COMMIT_HASH_SHORT
+#define EZ_GIT_COMMIT_HASH_LONG
+#define EZ_GIT_BRANCH_NAME ""

View File

@ -3,13 +3,11 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github( vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH OUT_SOURCE_PATH SOURCE_PATH
REPO ezEngine/ezEngine REPO ezEngine/ezEngine
REF 1448308ab99bae0d8d2a292ad345ff3a757f3124 #21.10 REF "release-${VERSION}"
SHA512 20da87772366d1612795f534b31600123c0d04beba252d27d895c3c3cff7dae65952bd890629d79a7a691c2f3444601552c4b4eca99e8f8a99dc935ce2ebd284 SHA512 c27f8241969c5c257123b789a964e102331a98f1803e038fa0521794ebdc7500f733bd987e1c53111a6220bd403f4ceffdbc2eb183aec7a178a2ffaf9a129afe
HEAD_REF dev
PATCHES PATCHES
ezfoundation-vcpkg.diff ezengine-da345.patch # Backport of https://github.com/ezEngine/ezEngine/commit/da345c931aa000c80ee5904a19416fb4eed7b00d.diff?full_index=1
# when making changes to this patch, use vim rather than VS Code or other editors that will
# normalize line endings because upstream's line endings are inconsistent which makes the
# patch get much larger than necessary
disable-warnings-as-errors.diff disable-warnings-as-errors.diff
) )
@ -21,6 +19,8 @@ vcpkg_cmake_configure(
-DEZ_3RDPARTY_ZLIB_SUPPORT=OFF -DEZ_3RDPARTY_ZLIB_SUPPORT=OFF
-DEZ_BUILD_FILTER=FoundationOnly -DEZ_BUILD_FILTER=FoundationOnly
-DEZ_BUILD_UNITTESTS=OFF -DEZ_BUILD_UNITTESTS=OFF
-DEZ_CMAKE_NO_BUILD_INFO=ON
-DEZ_COMPILE_ENGINE_AS_DLL=OFF
-DEZ_ENABLE_FOLDER_UNITY_FILES=OFF -DEZ_ENABLE_FOLDER_UNITY_FILES=OFF
-DEZ_ENABLE_QT_SUPPORT=OFF -DEZ_ENABLE_QT_SUPPORT=OFF
-DEZ_USE_PCH=OFF -DEZ_USE_PCH=OFF
@ -28,6 +28,7 @@ vcpkg_cmake_configure(
-DEZ_OUTPUT_DIRECTORY_LIB=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Output/Lib -DEZ_OUTPUT_DIRECTORY_LIB=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Output/Lib
-DEZ_OUTPUT_DIRECTORY_DLL=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Output/Bin -DEZ_OUTPUT_DIRECTORY_DLL=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Output/Bin
OPTIONS_RELEASE OPTIONS_RELEASE
-DCMAKE_BUILD_TYPE=Shipping
-DEZ_OUTPUT_DIRECTORY_LIB=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Output/Lib -DEZ_OUTPUT_DIRECTORY_LIB=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Output/Lib
-DEZ_OUTPUT_DIRECTORY_DLL=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Output/Bin -DEZ_OUTPUT_DIRECTORY_DLL=${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Output/Bin
) )

View File

@ -1,11 +1,10 @@
{ {
"name": "ezfoundation", "name": "ezfoundation",
"version": "21.10", "version": "26.3",
"port-version": 1,
"description": "Foundation library out of ezEngine", "description": "Foundation library out of ezEngine",
"homepage": "https://ezengine.net/", "homepage": "https://ezengine.net/",
"license": "MIT", "license": "MIT",
"supports": "windows | uwp", "supports": "windows & !uwp",
"dependencies": [ "dependencies": [
{ {
"name": "vcpkg-cmake", "name": "vcpkg-cmake",

View File

@ -0,0 +1,20 @@
diff --git a/src/libmongoc/CMakeLists.txt b/src/libmongoc/CMakeLists.txt
index cd4c95b..5cefa2c 100644
--- a/src/libmongoc/CMakeLists.txt
+++ b/src/libmongoc/CMakeLists.txt
@@ -422,9 +422,12 @@ function (mongoc_get_accept_args ARG2 ARG3)
}
")
- TRY_COMPILE (RES ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/accept_test${VAR}.c CMAKE_FLAGS
- "-Werror -DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'" OUTPUT_VARIABLE LOG2)
+ TRY_COMPILE (RES
+ "${CMAKE_CURRENT_BINARY_DIR}"
+ SOURCES "${CMAKE_CURRENT_BINARY_DIR}/accept_test${VAR}.c"
+ CMAKE_FLAGS "-DCOMPILE_DEFINITIONS=-Werror" "-DCMAKE_CXX_LINK_EXECUTABLE='echo not linking now...'"
+ OUTPUT_VARIABLE LOG2
+ )
if (RES)
message (

View File

@ -11,6 +11,7 @@ vcpkg_from_github(
fix-include-directory.patch fix-include-directory.patch
fix-mingw.patch fix-mingw.patch
remove_abs_patch.cmake remove_abs_patch.cmake
cmake-4.4.patch # https://github.com/mongodb/mongo-c-driver/commit/ea1b54791ec2f1aafb665f98af6cc9dd21116782
) )
file(WRITE "${SOURCE_PATH}/VERSION_CURRENT" "${VERSION}") file(WRITE "${SOURCE_PATH}/VERSION_CURRENT" "${VERSION}")
file(TOUCH "${SOURCE_PATH}/src/utf8proc-editable") file(TOUCH "${SOURCE_PATH}/src/utf8proc-editable")

View File

@ -1,6 +1,7 @@
{ {
"name": "mongo-c-driver", "name": "mongo-c-driver",
"version": "2.3.1", "version": "2.3.1",
"port-version": 1,
"description": "Client library written in C for MongoDB.", "description": "Client library written in C for MongoDB.",
"homepage": "https://github.com/mongodb/mongo-c-driver", "homepage": "https://github.com/mongodb/mongo-c-driver",
"license": "Apache-2.0", "license": "Apache-2.0",

View File

@ -0,0 +1,12 @@
diff --git a/modules/videostab/src/cuda/global_motion.cu b/modules/videostab/src/cuda/global_motion.cu
index 7eca6ff..dbd3419 100644
--- a/modules/videostab/src/cuda/global_motion.cu
+++ b/modules/videostab/src/cuda/global_motion.cu
@@ -44,6 +44,7 @@
#include <thrust/device_ptr.h>
#include <thrust/remove.h>
#include <thrust/functional.h>
+#include <thrust/tuple.h>
#include "opencv2/core/cuda/common.hpp"
namespace cv { namespace cuda { namespace device { namespace globmotion {

View File

@ -236,6 +236,7 @@ if("contrib" IN_LIST FEATURES)
0013-contrib-fix-ogre.patch 0013-contrib-fix-ogre.patch
0016-contrib-fix-freetype.patch 0016-contrib-fix-freetype.patch
0018-contrib-fix-tesseract.patch 0018-contrib-fix-tesseract.patch
0027-contrib-cuda-tuple.patch # https://github.com/opencv/opencv_contrib/commit/054007b78c8288ef2fd040e77dc0cf2e45f70c15
"${CONTRIB_CUDA_NAMESPACE_FIX}" "${CONTRIB_CUDA_NAMESPACE_FIX}"
"${CONTRIB_CUDA_NOT1_FIX}" "${CONTRIB_CUDA_NOT1_FIX}"
) )

View File

@ -1,7 +1,7 @@
{ {
"name": "opencv4", "name": "opencv4",
"version": "4.12.0", "version": "4.12.0",
"port-version": 5, "port-version": 6,
"description": "Open Source Computer Vision Library", "description": "Open Source Computer Vision Library",
"homepage": "https://opencv.org/", "homepage": "https://opencv.org/",
"documentation": "https://docs.opencv.org/4.12.0/", "documentation": "https://docs.opencv.org/4.12.0/",

View File

@ -0,0 +1,17 @@
diff --git a/src/popsift/s_filtergrid.cu b/src/popsift/s_filtergrid.cu
index 9e35d8b..9ee93fd 100644
--- a/src/popsift/s_filtergrid.cu
+++ b/src/popsift/s_filtergrid.cu
@@ -17,10 +17,12 @@
#include <thrust/host_vector.h>
#include <thrust/iterator/constant_iterator.h>
#include <thrust/iterator/discard_iterator.h>
+#include <thrust/iterator/zip_iterator.h>
#include <thrust/sequence.h>
#include <thrust/sort.h>
#include <thrust/transform.h>
#include <thrust/transform_scan.h>
+#include <thrust/tuple.h>
#include <thrust/version.h>
namespace popsift

View File

@ -6,6 +6,7 @@ vcpkg_from_github(
HEAD_REF develop HEAD_REF develop
PATCHES PATCHES
pr-183-add-zcpreprocessor-for-cuda-13-2.diff # https://github.com/alicevision/popsift/pull/183 pr-183-add-zcpreprocessor-for-cuda-13-2.diff # https://github.com/alicevision/popsift/pull/183
cuda-13.3-thrust-includes.patch # https://github.com/alicevision/popsift/pull/188
) )
vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT CUDA_TOOLKIT_ROOT) vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT CUDA_TOOLKIT_ROOT)

View File

@ -1,7 +1,7 @@
{ {
"name": "popsift", "name": "popsift",
"version": "0.10.0", "version": "0.10.0",
"port-version": 1, "port-version": 2,
"description": "PopSift is an implementation of the SIFT algorithm in CUDA.", "description": "PopSift is an implementation of the SIFT algorithm in CUDA.",
"homepage": "https://github.com/alicevision/popsift", "homepage": "https://github.com/alicevision/popsift",
"documentation": "https://popsift.readthedocs.io/", "documentation": "https://popsift.readthedocs.io/",

View File

@ -1,13 +1,13 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.4
# DisableDockerDetector "Used to build the container deployed to Azure Container Registry" # DisableDockerDetector "Used to build the container deployed to Azure Container Registry"
FROM ubuntu:noble-20260113 FROM ubuntu:noble-20260610
ADD https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb /packages-microsoft-prod.deb ADD https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb /packages-microsoft-prod.deb
ADD https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.18+8/OpenJDK17U-jdk_x64_linux_hotspot_17.0.18_8.tar.gz /OpenJDK17U-jdk_x64_linux_hotspot_17.0.18_8.tar.gz ADD https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.19+10/OpenJDK17U-jdk_x64_linux_hotspot_17.0.19_10.tar.gz /OpenJDK17U-jdk_x64_linux_hotspot_17.0.19_10.tar.gz
ADD https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip /commandlinetools-linux-14742923_latest.zip ADD https://dl.google.com/android/repository/commandlinetools-linux-15859902_latest.zip /commandlinetools-linux-15859902_latest.zip
ADD https://dl.google.com/android/repository/build-tools_r36.1_linux.zip /build-tools_r36.1_linux.zip ADD https://dl.google.com/android/repository/build-tools_r36.1_linux.zip /build-tools_r36.1_linux.zip
ADD https://dl.google.com/android/repository/platform-36_r01.zip /platform-36_r01.zip ADD https://dl.google.com/android/repository/platform-36_r02.zip /platform-36_r02.zip
ADD https://dl.google.com/android/repository/platform-tools_r36.0.2-linux.zip /platform-tools_r36.0.2-linux.zip ADD https://dl.google.com/android/repository/platform-tools_r37.0.0-linux.zip /platform-tools_r37.0.0-linux.zip
ADD https://dl.google.com/android/repository/android-ndk-r29-linux.zip /android-ndk-r29-linux.zip ADD https://dl.google.com/android/repository/android-ndk-r29-linux.zip /android-ndk-r29-linux.zip
# Add apt packages # Add apt packages
@ -70,27 +70,27 @@ apt-get -y dist-upgrade
apt-get -y --no-install-recommends install $APT_PACKAGES apt-get -y --no-install-recommends install $APT_PACKAGES
# OpenJDK # OpenJDK
tar xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.18_8.tar.gz tar xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.19_10.tar.gz
rm OpenJDK17U-jdk_x64_linux_hotspot_17.0.18_8.tar.gz rm OpenJDK17U-jdk_x64_linux_hotspot_17.0.19_10.tar.gz
# Android SDK # Android SDK
unzip -q commandlinetools-linux-14742923_latest.zip -d android-sdk unzip -q commandlinetools-linux-15859902_latest.zip -d android-sdk
rm commandlinetools-linux-14742923_latest.zip rm commandlinetools-linux-15859902_latest.zip
unzip -q build-tools_r36.1_linux.zip -d android-sdk/build-tools unzip -q build-tools_r36.1_linux.zip -d android-sdk/build-tools
mv android-sdk/build-tools/android-16 android-sdk/build-tools/36.1.0 mv android-sdk/build-tools/android-16 android-sdk/build-tools/36.1.0
rm build-tools_r36.1_linux.zip rm build-tools_r36.1_linux.zip
unzip -q platform-36_r01.zip -d android-sdk/platforms unzip -q platform-36_r02.zip -d android-sdk/platforms
rm platform-36_r01.zip rm platform-36_r02.zip
find android-sdk/platforms -type d -exec chmod o+rx '{}' ';' find android-sdk/platforms -type d -exec chmod o+rx '{}' ';'
find android-sdk/platforms -type f -exec chmod o+r '{}' ';' find android-sdk/platforms -type f -exec chmod o+r '{}' ';'
unzip -q platform-tools_r36.0.2-linux.zip -d android-sdk unzip -q platform-tools_r37.0.0-linux.zip -d android-sdk
rm platform-tools_r36.0.2-linux.zip rm platform-tools_r37.0.0-linux.zip
# JRE for sdk setup # JRE for sdk setup
export JAVA_HOME=/jdk-17.0.18+8 export JAVA_HOME=/jdk-17.0.19+10
yes | /android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=/android-sdk --licenses yes | /android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=/android-sdk --licenses
# Android NDK # Android NDK
@ -99,7 +99,7 @@ rm -f android-ndk-r29-linux.zip
END_OF_SCRIPT END_OF_SCRIPT
ENV JAVA_HOME="/jdk-17.0.18+8" ENV JAVA_HOME="/jdk-17.0.19+10"
ENV ANDROID_HOME="/android-sdk" ENV ANDROID_HOME="/android-sdk"

View File

@ -30,7 +30,7 @@ jobs:
- name: VCPKG_DOWNLOADS - name: VCPKG_DOWNLOADS
value: /mnt/vcpkg-ci/downloads value: /mnt/vcpkg-ci/downloads
- name: ANDROID_DOCKER_IMAGE - name: ANDROID_DOCKER_IMAGE
value: 'vcpkgandroidwus.azurecr.io/vcpkg-android:2026-02-10' value: 'vcpkgandroidwus.azurecr.io/vcpkg-android:2026-07-15'
- name: LINUX_DOCKER_IMAGE - name: LINUX_DOCKER_IMAGE
value: ${{ parameters.linuxDockerImage }} value: ${{ parameters.linuxDockerImage }}
steps: steps:
@ -113,7 +113,7 @@ jobs:
displayName: 'Ensure Node.js is available' displayName: 'Ensure Node.js is available'
condition: always() condition: always()
inputs: inputs:
version: '22.x' version: '24.x'
- bash: | - bash: |
cd scripts/azure-pipelines/owners-db && npm ci || true cd scripts/azure-pipelines/owners-db && npm ci || true
if [ "$(Build.Reason)" = "PullRequest" ]; then if [ "$(Build.Reason)" = "PullRequest" ]; then

View File

@ -9,11 +9,11 @@ parameters:
- name: x64LinuxDockerImage - name: x64LinuxDockerImage
displayName: 'Linux Docker Image to use for the x64 Linux build' displayName: 'Linux Docker Image to use for the x64 Linux build'
type: string type: string
default: 'vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-04-20' default: 'vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-07-15'
- name: arm64LinuxDockerImage - name: arm64LinuxDockerImage
displayName: 'Linux Docker Image to use for the arm64 Linux build' displayName: 'Linux Docker Image to use for the arm64 Linux build'
type: string type: string
default: 'vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-04-20' default: 'vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-07-15'
- name: tripletPattern - name: tripletPattern
displayName: 'Enable triplets which contain this substring (^ matches begin, $ matches end)' displayName: 'Enable triplets which contain this substring (^ matches begin, $ matches end)'
type: string type: string

View File

@ -1,7 +1,7 @@
FROM ubuntu:noble-20260410 FROM ubuntu:noble-20260610
ARG BUILD_DATE ARG BUILD_DATE
ARG POWERSHELL_VERSION=7.6.0 ARG POWERSHELL_VERSION=7.6.3
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
RUN <<EOF RUN <<EOF

View File

@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4 # syntax=docker/dockerfile:1.4
# DisableDockerDetector "Used to build the container deployed to Azure Container Registry" # DisableDockerDetector "Used to build the container deployed to Azure Container Registry"
FROM ubuntu:noble-20260410 FROM ubuntu:noble-20260610
ADD provision-image.sh /provision-image.sh ADD provision-image.sh /provision-image.sh
# The BUILD_DATE argument forces cache invalidation so we get updated apt dependencies # The BUILD_DATE argument forces cache invalidation so we get updated apt dependencies
ARG BUILD_DATE ARG BUILD_DATE

View File

@ -113,7 +113,7 @@ jobs:
displayName: 'Ensure Node.js is available' displayName: 'Ensure Node.js is available'
condition: always() condition: always()
inputs: inputs:
version: '22.x' version: '24.x'
- bash: | - bash: |
cd scripts/azure-pipelines/owners-db && npm ci || true cd scripts/azure-pipelines/owners-db && npm ci || true
# Construct the blob base url using the secret SAS token set earlier # Construct the blob base url using the secret SAS token set earlier

View File

@ -27,7 +27,7 @@ arm64)
;; ;;
esac esac
POWERSHELL_VERSION=7.6.0 POWERSHELL_VERSION=7.6.3
# Apt dependencies; needed for add-apt-repository and curl downloads to work # Apt dependencies; needed for add-apt-repository and curl downloads to work
apt-get -y update apt-get -y update
@ -163,33 +163,35 @@ APT_PACKAGES="$APT_PACKAGES libbluetooth-dev"
APT_PACKAGES="$APT_PACKAGES libtirpc-dev" APT_PACKAGES="$APT_PACKAGES libtirpc-dev"
## CUDA ## CUDA
# The intent is to install everything that does not require an actual GPU, driver, or GUI. # The intent is to install the CUDA toolkit except drivers, GUI tools, and documentation.
# Intentionally omitted: cuda-demo-suite-13-2 cuda-documentation-13-2 cuda-driver-* # On version updates, inspect the Package and Depends fields in both of these repository manifests:
# cuda-gdb-13-2 cuda-gdb-src-13-2 cuda-nsight-* cuda-nvdisasm # https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${NVIDIA_REPO_VERSION}/x86_64/Packages
# cuda-nvprof cuda-nvprune cuda-profiler-api* cuda-sandbox-* # https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${NVIDIA_REPO_VERSION}/sbsa/Packages
# cuda-visual-tools-13-2 nvidia-gds-13-2 cuda-nvvp-13-2 # NVIDIA changes package names and dependencies between releases. Confirm that:
# cuda-toolkit-13-2 cuda-tools-13-2 cuda-command-line-tools-13-2 # - cuda-compat-* and nvidia-gds-* remain omitted because they install or depend on driver components.
# cuda-runtime-13-2 # cuda-driver-dev-* is only the driver stub library and is intentionally included.
# All libraries for which there is a -dev suffix included here # - cuda-nsight-*, cuda-visual-tools-*, and cuda-documentation-* remain omitted as GUI or documentation.
# - cuda-<version>, cuda-toolkit-*, and cuda-tools-* remain omitted because they pull in those exclusions.
# Runtime libraries are installed through their corresponding -dev packages and are not listed separately.
# cudnn9-jit-cuda-13 : cudnn9-jit appears to conflict with cudnn9-dev packages: # cudnn9-jit-cuda-13 : cudnn9-jit appears to conflict with cudnn9-dev packages:
# root@c47a4cc2ea72:/# apt install cudnn9-jit-cuda-13 # root@c47a4cc2ea72:/# apt install cudnn9-jit-cuda-13
# The following additional packages will be installed: # The following additional packages will be installed:
# cudnn9-jit-cuda-13-2 libcudnn9-jit-cuda-13 libcudnn9-jit-dev-cuda-13 # cudnn9-jit-cuda-13-3 libcudnn9-jit-cuda-13 libcudnn9-jit-dev-cuda-13
# The following packages will be REMOVED: # The following packages will be REMOVED:
# cudnn9-cuda-13 cudnn9-cuda-13-2 libcudnn9-cuda-13 libcudnn9-dev-cuda-13 libcudnn9-static-cuda-13 # cudnn9-cuda-13 cudnn9-cuda-13-3 libcudnn9-cuda-13 libcudnn9-dev-cuda-13 libcudnn9-static-cuda-13
# The following NEW packages will be installed: # The following NEW packages will be installed:
# cudnn9-jit-cuda-13 cudnn9-jit-cuda-13-2 libcudnn9-jit-cuda-13 libcudnn9-jit-dev-cuda-13 # cudnn9-jit-cuda-13 cudnn9-jit-cuda-13-3 libcudnn9-jit-cuda-13 libcudnn9-jit-dev-cuda-13
APT_PACKAGES="$APT_PACKAGES cuda-cccl-13-2 cuda-compat-13-2 cuda-compiler-13-2 cuda-crt-13-2 \ APT_PACKAGES="$APT_PACKAGES cccl-13-3 cuda-command-line-tools-13-3 cuda-compiler-13-3 cuda-crt-13-3 \
cuda-cudart-dev-13-2 cuda-cuobjdump-13-2 cuda-cupti-dev-13-2 cuda-cuxxfilt-13-2 \ cuda-cudart-dev-13-3 cuda-cuobjdump-13-3 cuda-cupti-dev-13-3 cuda-cuxxfilt-13-3 \
cuda-driver-dev-13-2 cuda-libraries-dev-13-2 cuda-minimal-build-13-2 cuda-nvcc-13-2 \ cuda-driver-dev-13-3 cuda-libraries-dev-13-3 cuda-minimal-build-13-3 cuda-nvcc-13-3 \
cuda-nvml-dev-13-2 cuda-nvrtc-dev-13-2 cuda-nvtx-13-2 libnvvm-13-2 \ cuda-nvml-dev-13-3 cuda-nvrtc-dev-13-3 cuda-nvtx-13-3 libnvvm-13-3 \
cuda-sanitizer-13-2 cuda-toolkit-13-2-config-common cudnn9-cuda-13 gds-tools-13-2 \ cuda-sanitizer-13-3 cuda-toolkit-13-3-config-common cudnn9-cuda-13 gds-tools-13-3 \
libcublas-13-2 libcudnn9-dev-cuda-13 libcufft-dev-13-2 libcurand-dev-13-2 libcusolver-dev-13-2 \ libcublas-13-3 libcudnn9-dev-cuda-13 libcufft-dev-13-3 libcurand-dev-13-3 libcusolver-dev-13-3 \
libcusparse-dev-13-2 libnccl-dev libnpp-dev-13-2 libnvfatbin-dev-13-2 libnvjitlink-dev-13-2 \ libcusparse-dev-13-3 libnccl-dev libnpp-dev-13-3 libnvfatbin-dev-13-3 libnvjitlink-dev-13-3 \
libnvjpeg-dev-13-2" libnvjpeg-dev-13-3"
if [[ "$DEBIAN_ARCHITECTURE" == "amd64" ]]; then if [[ "$DEBIAN_ARCHITECTURE" == "amd64" ]]; then
APT_PACKAGES="$APT_PACKAGES cuda-opencl-dev-13-2" APT_PACKAGES="$APT_PACKAGES cuda-opencl-dev-13-3"
fi fi
## PowerShell + Azure ## PowerShell + Azure

View File

@ -30,20 +30,20 @@ jobs:
az acr login --name vcpkgandroidwus az acr login --name vcpkgandroidwus
# Note that this is marking the *previous* image as EOL, not the one we're building as it attaches # Note that this is marking the *previous* image as EOL, not the one we're building as it attaches
# to the SHA to which the tag points, not the tag itself. # to the SHA to which the tag points, not the tag itself.
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-android:2026-02-10 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-android:2026-02-10" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-android:2026-07-15 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-android:2026-07-15"
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-android:2026-02-10 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-android:2026-02-10 linux/amd64" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-android:2026-07-15 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-android:2026-07-15 linux/amd64"
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-04-20 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-linux:2026-01-20" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-07-15 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-linux:2026-07-15"
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-04-20 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-linux:2026-01-20 linux/amd64" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-07-15 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-linux:2026-07-15 linux/amd64"
# Note that this is an image for *targeting* arm64, it's still an amd64 image, hence linux/amd64 # Note that this is an image for *targeting* arm64, it's still an amd64 image, hence linux/amd64
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-04-20 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-arm64-linux:2026-03-18" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-07-15 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-arm64-linux:2026-07-15"
oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-04-20 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-arm64-linux:2026-03-18 linux/amd64" oras attach --artifact-type application/vnd.microsoft.artifact.lifecycle --annotation "vnd.microsoft.artifact.lifecycle.end-of-life.date=$EndDate" vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-07-15 --platform linux/amd64 || echo "WARNING: Failed to attach lifecycle metadata to vcpkg-arm64-linux:2026-07-15 linux/amd64"
cd scripts/azure-pipelines/android cd scripts/azure-pipelines/android
# to explain the ulimit thing, see https://github.com/docker/buildx/issues/379 # to explain the ulimit thing, see https://github.com/docker/buildx/issues/379
docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-android:2026-02-10 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024 docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-android:2026-07-15 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024
docker push vcpkgandroidwus.azurecr.io/vcpkg-android:2026-02-10 docker push vcpkgandroidwus.azurecr.io/vcpkg-android:2026-07-15
cd ../linux cd ../linux
docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-04-20 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024 docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-07-15 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024
docker push vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-04-20 docker push vcpkgandroidwus.azurecr.io/vcpkg-linux:2026-07-15
cd ../linux-arm64 cd ../linux-arm64
docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-04-20 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024 docker buildx build . -t vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-07-15 --build-arg BUILD_DATE=$BuildDate --ulimit nofile=1024:1024
docker push vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-04-20 docker push vcpkgandroidwus.azurecr.io/vcpkg-arm64-linux:2026-07-15

View File

@ -20,7 +20,7 @@ jobs:
condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}')) condition: and(succeeded(), contains('^${{ replace(parameters.jobName, '_', '-') }}$', '${{ parameters.tripletPattern }}'))
pool: pool:
name: PrWin-WUS name: PrWin-WUS
demands: ImageVersionOverride -equals 2026.06.10 demands: ImageVersionOverride -equals 2026.07.16
timeoutInMinutes: 2880 # 2 days timeoutInMinutes: 2880 # 2 days
variables: variables:
- name: WORKING_ROOT - name: WORKING_ROOT
@ -93,7 +93,7 @@ jobs:
displayName: 'Ensure Node.js is available' displayName: 'Ensure Node.js is available'
condition: always() condition: always()
inputs: inputs:
version: '22.x' version: '24.x'
- task: PowerShell@2 - task: PowerShell@2
displayName: 'Build a file list for all packages' displayName: 'Build a file list for all packages'
condition: always() condition: always()

View File

@ -12,6 +12,9 @@ create-image.ps1 creates an Azure Windows VM image, set up for vcpkg's CI system
This script assumes you have installed Azure tools into PowerShell by following the instructions This script assumes you have installed Azure tools into PowerShell by following the instructions
at https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-3.6.1 at https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-3.6.1
or are running from Azure Cloud Shell. or are running from Azure Cloud Shell.
The prototype-vm user-assigned managed identity in the vcpkg-image-minting resource group must have
Storage Blob Data Reader access to the vcpkgimageminting storage account.
#> #>
$Location = 'westus3' $Location = 'westus3'
@ -24,7 +27,7 @@ $WindowsServerSku = '2025-datacenter-azure-edition'
$ErrorActionPreference = 'Stop' $ErrorActionPreference = 'Stop'
$ProgressActivity = 'Creating Windows Image' $ProgressActivity = 'Creating Windows Image'
$TotalProgress = 22 $TotalProgress = 17
$CurrentProgress = 1 $CurrentProgress = 1
# Assigning this to another variable helps when running the commands in this script manually for # Assigning this to another variable helps when running the commands in this script manually for
@ -97,6 +100,9 @@ $Credential = New-Object System.Management.Automation.PSCredential ("AdminUser",
$VirtualNetwork = Get-AzVirtualNetwork -ResourceGroupName 'vcpkg-image-minting' -Name 'vcpkg-image-minting-wus3' $VirtualNetwork = Get-AzVirtualNetwork -ResourceGroupName 'vcpkg-image-minting' -Name 'vcpkg-image-minting-wus3'
$Subnet = $VirtualNetwork.Subnets | Where-Object -Property 'Name' -EQ -Value 'image-minting' | Select-Object -First 1 $Subnet = $VirtualNetwork.Subnets | Where-Object -Property 'Name' -EQ -Value 'image-minting' | Select-Object -First 1
$PrototypeVmIdentity = Get-AzUserAssignedIdentity `
-ResourceGroupName 'vcpkg-image-minting' `
-Name 'prototype-vm'
#################################################################################################### ####################################################################################################
Write-Progress ` Write-Progress `
@ -112,7 +118,12 @@ $Nic = New-AzNetworkInterface `
-Subnet $Subnet ` -Subnet $Subnet `
-EnableAcceleratedNetworking -EnableAcceleratedNetworking
$VM = New-AzVMConfig -Name $ProtoVMName -VMSize $VMSize -SecurityType TrustedLaunch -IdentityType SystemAssigned $VM = New-AzVMConfig `
-Name $ProtoVMName `
-VMSize $VMSize `
-SecurityType TrustedLaunch `
-IdentityType UserAssigned `
-IdentityId $PrototypeVmIdentity.Id
$VM = Set-AzVMOperatingSystem ` $VM = Set-AzVMOperatingSystem `
-VM $VM ` -VM $VM `
-Windows ` -Windows `
@ -138,25 +149,9 @@ New-AzVm `
$VMCreated = Get-AzVM -ResourceGroupName 'vcpkg-image-minting' -Name $ProtoVMName $VMCreated = Get-AzVM -ResourceGroupName 'vcpkg-image-minting' -Name $ProtoVMName
$VMCreatedOsDisk = $VMCreated.StorageProfile.OsDisk.Name $VMCreatedOsDisk = $VMCreated.StorageProfile.OsDisk.Name
####################################################################################################
Write-Progress `
-Activity $ProgressActivity `
-Status 'Minting token for vcpkg-image-minting storage account' `
-PercentComplete (100 / $TotalProgress * $CurrentProgress++)
$VcpkgImageMintingAccount = Get-AzStorageAccount -ResourceGroupName 'vcpkg-image-minting' -Name 'vcpkgimageminting'
$AssetStorageContext = New-AzStorageContext -StorageAccountName 'vcpkgimageminting' -UseConnectedAccount
$StartTime = Get-Date
$ExpiryTime = $StartTime.AddHours(4)
$AssetsSas = New-AzStorageContainerSASToken -Name 'assets' -Permission r -StartTime $StartTime -ExpiryTime $ExpiryTime -Context $AssetStorageContext
#################################################################################################### ####################################################################################################
function Invoke-ScriptWithPrefix { function Invoke-ScriptWithPrefix {
param( param([string]$ScriptName)
[string]$ScriptName,
[switch]$SkipSas
)
Write-Progress ` Write-Progress `
-Activity $ProgressActivity ` -Activity $ProgressActivity `
@ -164,6 +159,7 @@ function Invoke-ScriptWithPrefix {
-PercentComplete (100 / $TotalProgress * $CurrentProgress++) -PercentComplete (100 / $TotalProgress * $CurrentProgress++)
$UtilityPrefixContent = Get-Content -LiteralPath "$Root\utility-prefix.ps1" -Encoding ascii -Raw $UtilityPrefixContent = Get-Content -LiteralPath "$Root\utility-prefix.ps1" -Encoding ascii -Raw
$UtilityPrefixContent += "`n`$UseManagedIdentity = `$true`n"
$tempScriptFilename = "$env:TEMP\temp-script.txt" $tempScriptFilename = "$env:TEMP\temp-script.txt"
try { try {
@ -173,20 +169,14 @@ if (Test-Path -LiteralPath "`$PSScriptRoot/utility-prefix.ps1") {
. "`$PSScriptRoot/utility-prefix.ps1" . "`$PSScriptRoot/utility-prefix.ps1"
} }
"@ "@
$script = $script.Replace($replacement, $UtilityPrefixContent); $script = $script.Replace($replacement, $UtilityPrefixContent)
Set-Content -LiteralPath $tempScriptFilename -Value $script -Encoding ascii Set-Content -LiteralPath $tempScriptFilename -Value $script -Encoding ascii
$parameter = $null
if (-not $SkipSas) {
$parameter = @{SasToken = "`"$AssetsSas`"";}
}
$InvokeResult = Invoke-AzVMRunCommand ` $InvokeResult = Invoke-AzVMRunCommand `
-ResourceGroupName 'vcpkg-image-minting' ` -ResourceGroupName 'vcpkg-image-minting' `
-VMName $ProtoVMName ` -VMName $ProtoVMName `
-CommandId 'RunPowerShellScript' ` -CommandId 'RunPowerShellScript' `
-ScriptPath $tempScriptFilename ` -ScriptPath $tempScriptFilename
-Parameter $parameter
Write-Host "$ScriptName output: $($InvokeResult.value.Message)" Write-Host "$ScriptName output: $($InvokeResult.value.Message)"
} finally { } finally {
@ -194,11 +184,6 @@ if (Test-Path -LiteralPath "`$PSScriptRoot/utility-prefix.ps1") {
} }
} }
####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-tlssettings.ps1' -SkipSas
Write-Host 'Waiting 1 minute for VM to reboot...'
Start-Sleep -Seconds 60
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-sevenzip.ps1' Invoke-ScriptWithPrefix -ScriptName 'deploy-sevenzip.ps1'
@ -223,9 +208,6 @@ Invoke-ScriptWithPrefix -ScriptName 'deploy-cuda.ps1'
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-cudnn.ps1' Invoke-ScriptWithPrefix -ScriptName 'deploy-cudnn.ps1'
####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-inteloneapi.ps1'
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-pwsh.ps1' Invoke-ScriptWithPrefix -ScriptName 'deploy-pwsh.ps1'
@ -236,7 +218,7 @@ Invoke-ScriptWithPrefix -ScriptName 'deploy-azure-cli.ps1'
Invoke-ScriptWithPrefix -ScriptName 'deploy-azcopy.ps1' Invoke-ScriptWithPrefix -ScriptName 'deploy-azcopy.ps1'
#################################################################################################### ####################################################################################################
Invoke-ScriptWithPrefix -ScriptName 'deploy-settings.txt' -SkipSas Invoke-ScriptWithPrefix -ScriptName 'deploy-settings.txt'
Restart-AzVM -ResourceGroupName 'vcpkg-image-minting' -Name $ProtoVMName Restart-AzVM -ResourceGroupName 'vcpkg-image-minting' -Name $ProtoVMName
#################################################################################################### ####################################################################################################

View File

@ -1,16 +1,13 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$AzCopyUrl = Get-AssetUrl ` $AzCopyUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://github.com/Azure/azure-storage-azcopy/releases/download/v10.32.6/azcopy_windows_amd64_10.32.6.zip' `
-InternetUrl 'https://github.com/Azure/azure-storage-azcopy/releases/download/v10.32.4/azcopy_windows_amd64_10.32.4.zip' ` -BlobAssetName 'azcopy_windows_amd64_10.32.6.zip'
-BlobAssetName 'azcopy_windows_amd64_10.32.4.zip'
mkdir -Force "C:\AzCopy10" mkdir -Force "C:\AzCopy10"
DownloadAndUnzip -Url $AzCopyUrl -Destination "C:\AzCopy10" -StripRootDirectory DownloadAndUnzip -Url $AzCopyUrl -Destination "C:\AzCopy10" -StripRootDirectory

View File

@ -1,15 +1,12 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$AzCliUrl = Get-AssetUrl ` $AzCliUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://azcliprod.blob.core.windows.net/msi/azure-cli-2.88.0-x64.msi' `
-InternetUrl 'https://azcliprod.blob.core.windows.net/msi/azure-cli-2.87.0-x64.msi' ` -BlobAssetName 'azure-cli-2.88.0-x64.msi'
-BlobAssetName 'azure-cli-2.87.0-x64.msi'
DownloadAndInstall -Url $AzCliUrl -Args @('/quiet', '/norestart') DownloadAndInstall -Url $AzCliUrl -Args @('/quiet', '/norestart')

View File

@ -1,16 +1,13 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$CMakeUrl = Get-AssetUrl ` $CMakeUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://github.com/Kitware/CMake/releases/download/v4.4.0/cmake-4.4.0-windows-x86_64.msi' `
-InternetUrl 'https://github.com/Kitware/CMake/releases/download/v4.3.3/cmake-4.3.3-windows-x86_64.msi' ` -BlobAssetName 'cmake-4.4.0-windows-x86_64.msi'
-BlobAssetName 'cmake-4.3.3-windows-x86_64.msi'
DownloadAndInstall -Url $CMakeUrl -Args @('/quiet', '/norestart', 'ADD_CMAKE_TO_PATH=System') DownloadAndInstall -Url $CMakeUrl -Args @('/quiet', '/norestart', 'ADD_CMAKE_TO_PATH=System')

View File

@ -1,62 +1,68 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$CudaUrl = Get-AssetUrl ` $CudaUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://developer.download.nvidia.com/compute/cuda/13.3.1/local_installers/cuda_13.3.1_windows.exe' `
-InternetUrl 'https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda_13.2.0_windows.exe' ` -BlobAssetName 'cuda_13.3.1_windows.exe'
-BlobAssetName 'cuda_13.2.0_windows.exe'
# https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html # https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html
# Intentionally omitted: # On version updates, extract the package manifests from the installer with:
# ctadvisor_13.2 # 7z x cuda_<version>_windows.exe -o<output> -ir!*.nvi
# documentation_13.2 # Each manifest whose customInstallTree/treeNode has accessibility="selectable" names a valid package
# nsight_compute_13.2 # in its root <nvi name="..."> element. Compare those names with both lists below; NVIDIA changes the
# nsight_systems_13.2 # package names and composition between releases. Confirm every omission is still related to drivers,
# nsight_vse_13.2 # documentation, or Visual Studio.
# occupancy_calculator_13.2 (this is named like a tool but listed as 'documentation' in the installer) #
# visual_studio_integration_13.2 # Intentionally omitted due to being Visual Studio / GUI features:
# ctadvisor_13.3
# nsight_compute_13.3
# nsight_systems_13.3
# nsight_vse_13.3
# visual_studio_integration_13.3
# Intentionally omitted due to being documentation:
# documentation_13.3
# occupancy_calculator_13.3 (this is named like a tool but listed as 'documentation' in the installer)
# (Drivers used to be omitted but as of CUDA 13 they no longer seem to be in the CUDA installer)
DownloadAndInstall -Url $CudaUrl -Args @( DownloadAndInstall -Url $CudaUrl -Args @(
'-s', '-s',
'crt_13.2', 'crt_13.3',
'cublas_13.2', 'cublas_13.3',
'cublas_dev_13.2', 'cublas_dev_13.3',
'cuda_profiler_api_13.2', 'cuda_profiler_api_13.3',
'cudart_13.2', 'cudart_13.3',
'cufft_13.2', 'cufft_13.3',
'cufft_dev_13.2', 'cufft_dev_13.3',
'cuobjdump_13.2', 'cuobjdump_13.3',
'cupti_13.2', 'cupti_13.3',
'curand_13.2', 'curand_13.3',
'curand_dev_13.2', 'curand_dev_13.3',
'cusolver_13.2', 'cusolver_13.3',
'cusolver_dev_13.2', 'cusolver_dev_13.3',
'cusparse_13.2', 'cusparse_13.3',
'cusparse_dev_13.2', 'cusparse_dev_13.3',
'cuxxfilt_13.2', 'cuxxfilt_13.3',
'npp_13.2', 'npp_13.3',
'npp_dev_13.2', 'npp_dev_13.3',
'nvcc_13.2', 'nvcc_13.3',
'nvdisasm_13.2', 'nvdisasm_13.3',
'nvfatbin_13.2', 'nvfatbin_13.3',
'nvjitlink_13.2', 'nvjitlink_13.3',
'nvjpeg_13.2', 'nvjpeg_13.3',
'nvjpeg_dev_13.2', 'nvjpeg_dev_13.3',
'nvml_dev_13.2', 'nvml_dev_13.3',
'nvprune_13.2', 'nvprune_13.3',
'nvptxcompiler_13.2', 'nvptxcompiler_13.3',
'nvrtc_13.2', 'nvrtc_13.3',
'nvrtc_dev_13.2', 'nvrtc_dev_13.3',
'nvtx_13.2', 'nvtx_13.3',
'nvvm_13.2', 'nvvm_13.3',
'opencl_13.2', 'opencl_13.3',
'sanitizer_13.2', 'sanitizer_13.3',
'thrust_13.2', 'thrust_13.3',
'tileiras_13.2', 'tileiras_13.3',
'-n' '-n'
) )

View File

@ -1,18 +1,15 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$CudnnUrl = Get-AssetUrl ` $CudnnUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/cudnn-windows-x86_64-9.24.0.43_cuda13-archive.zip' `
-InternetUrl 'https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/cudnn-windows-x86_64-9.20.0.48_cuda13-archive.zip' ` -BlobAssetName 'cudnn-windows-x86_64-9.24.0.43_cuda13-archive.zip'
-BlobAssetName 'cudnn-windows-x86_64-9.20.0.48_cuda13-archive.zip'
[System.IO.DirectoryInfo]$CudnnInstallDir = "$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v13.2" [System.IO.DirectoryInfo]$CudnnInstallDir = "$env:ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v13.3"
DownloadAndUnzip -Url $CudnnUrl -Destination $CudnnInstallDir -StripRootDirectory DownloadAndUnzip -Url $CudnnUrl -Destination $CudnnInstallDir -StripRootDirectory

View File

@ -1,16 +1,13 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$GitUrl = Get-AssetUrl ` $GitUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://github.com/git-for-windows/git/releases/download/v2.55.0.windows.3/Git-2.55.0.3-64-bit.exe' `
-InternetUrl 'https://github.com/git-for-windows/git/releases/download/v2.54.0.windows.1/Git-2.54.0-64-bit.exe' ` -BlobAssetName 'Git-2.55.0.3-64-bit.exe'
-BlobAssetName 'Git-2.54.0-64-bit.exe'
$GitInfContent = @" $GitInfContent = @"
[Setup] [Setup]

View File

@ -1,8 +1,6 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }

View File

@ -1,49 +0,0 @@
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1"
}
$LocalName = 'intel-oneapi-hpc-toolkit-2025.3.1.54_offline.exe'
$oneAPIBaseUrl = Get-AssetUrl `
-SasToken $SasToken `
-InternetUrl "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/36f868e9-84b3-4b4f-90ef-ca84092cae6a/$LocalName" `
-BlobAssetName $LocalName
$oneAPIHPCComponents = 'intel.oneapi.win.ifort-compiler'
try {
$installer = Get-LocalOrDownloadedFile -Url $oneAPIBaseUrl -LocalName $LocalName
[string]$LocalPath = $installer.Path
[string]$extractionPath = Get-TempFilePath
Write-Host 'Extracting Intel oneAPI...to folder: ' $extractionPath
$proc = Start-Process -FilePath $LocalPath -ArgumentList @('-s ', '-x', '-f', $extractionPath) -Wait -PassThru
$exitCode = $proc.ExitCode
if ($exitCode -eq 0) {
Write-Host 'Extraction successful!'
} else {
Write-Error "Extraction failed! Exited with $exitCode."
throw
}
Write-Host 'Install Intel oneAPI...from folder: ' $extractionPath
$proc = Start-Process -FilePath "$extractionPath/bootstrapper.exe" -ArgumentList @('-s ', '--action install', "--components=$oneAPIHPCComponents" , '--eula=accept', '-p=NEED_VS2017_INTEGRATION=0', '-p=NEED_VS2019_INTEGRATION=0', '-p=NEED_VS2022_INTEGRATION=0', '--log-dir=.') -Wait -PassThru
$exitCode = $proc.ExitCode
if ($exitCode -eq 0) {
Write-Host 'Installation successful!'
} elseif ($exitCode -eq 3010) {
Write-Host 'Installation successful! Exited with 3010 (ERROR_SUCCESS_REBOOT_REQUIRED).'
} else {
Write-Error "Installation failed! Exited with $exitCode."
}
if ($installer.Temporary) {
Remove-Item -LiteralPath $LocalPath -Force
}
} catch {
Write-Error "Installation failed! Exception: $($_.Exception.Message)"
}

View File

@ -1,15 +1,12 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$LocalName = 'msmpisetup-10.1.12498.52.exe' $LocalName = 'msmpisetup-10.1.12498.52.exe'
$MpiUrl = Get-AssetUrl ` $MpiUrl = Get-AssetUrl `
-SasToken $SasToken `
-InternetUrl 'https://download.microsoft.com/download/7/2/7/72731ebb-b63c-4170-ade7-836966263a8f/msmpisetup.exe' ` -InternetUrl 'https://download.microsoft.com/download/7/2/7/72731ebb-b63c-4170-ade7-836966263a8f/msmpisetup.exe' `
-BlobAssetName $LocalName -BlobAssetName $LocalName

View File

@ -1,15 +1,12 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$LocalName = 'ninja-win-1.13.2.zip' $LocalName = 'ninja-win-1.13.2.zip'
$NinjaUrl = Get-AssetUrl ` $NinjaUrl = Get-AssetUrl `
-SasToken $SasToken `
-InternetUrl 'https://github.com/ninja-build/ninja/releases/download/v1.13.2/ninja-win.zip' ` -InternetUrl 'https://github.com/ninja-build/ninja/releases/download/v1.13.2/ninja-win.zip' `
-BlobAssetName $LocalName -BlobAssetName $LocalName

View File

@ -1,15 +1,12 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$PwshUrl = Get-AssetUrl ` $PwshUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.3/PowerShell-7.6.3-win-x64.msi' `
-InternetUrl 'https://github.com/PowerShell/PowerShell/releases/download/v7.6.2/PowerShell-7.6.2-win-x64.msi' ` -BlobAssetName 'PowerShell-7.6.3-win-x64.msi'
-BlobAssetName 'PowerShell-7.6.2-win-x64.msi'
DownloadAndInstall -Url $PwshUrl -Args @('/quiet', '/norestart') DownloadAndInstall -Url $PwshUrl -Args @('/quiet', '/norestart')

View File

@ -1,15 +1,12 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
$SevenZipUrl = Get-AssetUrl ` $SevenZipUrl = Get-AssetUrl `
-SasToken $SasToken ` -InternetUrl 'https://github.com/ip7z/7zip/releases/download/26.02/7z2602-x64.exe' `
-InternetUrl 'https://github.com/ip7z/7zip/releases/download/26.01/7z2601-x64.exe' ` -BlobAssetName '7z2602-x64.exe'
-BlobAssetName '7z2601-x64.exe'
DownloadAndInstall -Url $SevenZipUrl -Args @('/S') DownloadAndInstall -Url $SevenZipUrl -Args @('/S')

View File

@ -1,738 +0,0 @@
#***************************************************************************************************************
# This script supports the TLS 1.2 everywhere project
# It does the following:
# * By default it disables TLS 1.O, TLS 1.1, SSLv2, SSLv3 and Enables TLS1.2
# * The CipherSuite order is set to the SDL approved version.
# * The FIPS MinEncryptionLevel is set to 3.
# * RC4 is disabled
# * A log with a transcript of all actions taken is generated
#***************************************************************************************************************
#************************************************ SCRIPT USAGE ************************************************
# .\TLSSettings.ps1
# -SetCipherOrder : Excellence/Min-Bar, default(Excellence), use B to set Min-Bar. (Min-Bar ordering prefers ciphers with smaller key sizes to improve performance over security)
# -RebootIfRequired : $true/$false, default($true), use $false to disable auto-reboot (Settings won't take effect until a reboot is completed)
# -EnableOlderTlsVersions : $true/$false, default($false), use $true to explicitly Enable TLS1.0, TLS1.1
#***************************************************************************************************************
#***************************TEAM CAN DETERMINE WHAT CIPHER SUITE ORDER IS CHOSEN ******************************
# Option B provides the min-bar configuration (small trade-off: performance over security)
# Syntax: .\TLSSettings.ps1 -SetCipherOrder B
# if no option is supplied, you will get the opportunity for excellence cipher order (small trade-off: security over performance)
# Syntax: .\TLSSettings.ps1
#***************************************************************************************************************
param (
[string]$SetCipherOrder = " ",
[bool]$RebootIfRequired = $true,
[bool]$EnableOlderTlsVersions = $false
)
#******************* FUNCTION THAT ACTUALLY UPDATES KEYS; WILL RETURN REBOOT FLAG IF CHANGES ***********************
Function Set-CryptoSetting {
param (
$regKeyName,
$value,
$valuedata,
$valuetype
)
$restart = $false
# Check for existence of registry key, and create if it does not exist
If (!(Test-Path -Path $regKeyName)) {
New-Item $regKeyName | Out-Null
}
# Get data of registry value, or null if it does not exist
$val = (Get-ItemProperty -Path $regKeyName -Name $value -ErrorAction SilentlyContinue).$value
If ($val -eq $null) {
# Value does not exist - create and set to desired value
New-ItemProperty -Path $regKeyName -Name $value -Value $valuedata -PropertyType $valuetype | Out-Null
$restart = $true
}
Else {
# Value does exist - if not equal to desired value, change it
If ($val -ne $valuedata) {
Set-ItemProperty -Path $regKeyName -Name $value -Value $valuedata
$restart = $true
}
}
$restart
}
#***************************************************************************************************************
#******************* FUNCTION THAT DISABLES RC4 ***********************
Function DisableRC4 {
$restart = $false
$subkeys = Get-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL"
$ciphers = $subkeys.OpenSubKey("Ciphers", $true)
Write-Log -Message "----- Checking the status of RC4 -----" -Logfile $logLocation -Severity Information
$RC4 = $false
if ($ciphers.SubKeyCount -eq 0) {
$k1 = $ciphers.CreateSubKey("RC4 128/128")
$k1.SetValue("Enabled", 0, [Microsoft.Win32.RegistryValueKind]::DWord)
$restart = $true
$k2 = $ciphers.CreateSubKey("RC4 64/128")
$k2.SetValue("Enabled", 0, [Microsoft.Win32.RegistryValueKind]::DWord)
$k3 = $ciphers.CreateSubKey("RC4 56/128")
$k3.SetValue("Enabled", 0, [Microsoft.Win32.RegistryValueKind]::DWord)
$k4 = $ciphers.CreateSubKey("RC4 40/128")
$k4.SetValue("Enabled", 0, [Microsoft.Win32.RegistryValueKind]::DWord)
Write-Log -Message "RC4 was disabled " -Logfile $logLocation -Severity Information
$RC4 = $true
}
If ($RC4 -ne $true) {
Write-Log -Message "There was no change for RC4 " -Logfile $logLocation -Severity Information
}
$restart
}
#***************************************************************************************************************
#******************* FUNCTION CHECKS FOR PROBLEMATIC FIPS SETTING AND FIXES IT ***********************
Function Test-RegistryValueForFipsSettings {
$restart = $false
$fipsPath = @(
"HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp",
"HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services",
"HKLM:\System\CurrentControlSet\Control\Terminal Server\DefaultUserConfiguration"
)
$fipsValue = "MinEncryptionLevel"
foreach ($path in $fipsPath) {
Write-Log -Message "Checking to see if $($path)\$fipsValue exists" -Logfile $logLocation -Severity Information
$ErrorActionPreference = "stop"
Try {
$result = Get-ItemProperty -Path $path | Select-Object -ExpandProperty $fipsValue
if ($result -eq 4) {
set-itemproperty -Path $path -Name $fipsValue -value 3
Write-Log -Message "Regkey $($path)\$fipsValue was changed from value $result to a value of 3" -Logfile $logLocation -Severity Information
$restart = $true
}
else {
Write-Log -Message "Regkey $($path)\$fipsValue left at value $result" -Logfile $logLocation -Severity Information
}
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Log -Message "Reg path $path was not found" -Logfile $logLocation -Severity Information
}
Catch [System.Management.Automation.PSArgumentException] {
Write-Log -Message "Regkey $($path)\$fipsValue was not found" -Logfile $logLocation -Severity Information
}
Catch {
Write-Log -Message "Error of type $($Error[0].Exception.GetType().FullName) trying to get $($path)\$fipsValue" -Logfile $logLocation -Severity Information
}
Finally {$ErrorActionPreference = "Continue"
}
}
$restart
}
#***************************************************************************************************************
#********************************** FUNCTION THAT CREATE LOG DIRECTORY IF IT DOES NOT EXIST *******************************
function CreateLogDirectory {
$TARGETDIR = "$env:HOMEDRIVE\Logs"
if ( -Not (Test-Path -Path $TARGETDIR ) ) {
New-Item -ItemType directory -Path $TARGETDIR | Out-Null
}
$TARGETDIR = $TARGETDIR + "\" + "TLSSettingsLogFile.csv"
return $TARGETDIR
}
#***************************************************************************************************************
#********************************** FUNCTION THAT LOGS WHAT THE SCRIPT IS DOING *******************************
function Write-Log {
[CmdletBinding()]
param(
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$Message,
[Parameter()]
[ValidateNotNullOrEmpty()]
[string]$LogFile,
[Parameter()]
[ValidateNotNullOrEmpty()]
[ValidateSet('Information', 'Warning', 'Error')]
[string]$Severity = 'Information'
)
[pscustomobject]@{
Time = (Get-Date -f g)
Message = $Message
Severity = $Severity
} | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Out-File -Append -FilePath $LogFile
}
#********************************TLS CipherSuite Settings *******************************************
# CipherSuites for windows OS < 10
function Get-BaseCipherSuitesOlderWindows()
{
param
(
[Parameter(Mandatory=$true, Position=0)][bool] $isExcellenceOrder
)
$cipherorder = @()
if ($isExcellenceOrder -eq $true)
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256"
}
else
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384"
}
# Add additional ciphers when EnableOlderTlsVersions flag is set to true
if ($EnableOlderTlsVersions)
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256"
$cipherorder += "TLS_RSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_RSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_256_CBC_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_128_CBC_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_256_CBC_SHA"
$cipherorder += "TLS_RSA_WITH_AES_128_CBC_SHA"
}
return $cipherorder
}
# Ciphersuites needed for backwards compatibility with Firefox, Chrome
# Server 2012 R2 doesn't support TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
# Both firefox and chrome negotiate ECDHE_RSA_AES_256_CBC_SHA1, Edge negotiates ECDHE_RSA_AES_256_CBC_SHA384
function Get-BrowserCompatCipherSuitesOlderWindows()
{
param
(
[Parameter(Mandatory=$true, Position=0)][bool] $isExcellenceOrder
)
$cipherorder = @()
if ($isExcellenceOrder -eq $true)
{
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384" # (uses SHA-1)
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256" # (uses SHA-1)
}
else
{
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256" # (uses SHA-1)
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384" # (uses SHA-1)
}
return $cipherorder
}
# Ciphersuites for OS versions windows 10 and above
function Get-BaseCipherSuitesWin10Above()
{
param
(
[Parameter(Mandatory=$true, Position=0)][bool] $isExcellenceOrder
)
$cipherorder = @()
if ($isExcellenceOrder -eq $true)
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
}
else
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
}
# Add additional ciphers when EnableOlderTlsVersions flag is set to true
if ($EnableOlderTlsVersions)
{
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256"
$cipherorder += "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256"
$cipherorder += "TLS_RSA_WITH_AES_256_GCM_SHA384"
$cipherorder += "TLS_RSA_WITH_AES_128_GCM_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_256_CBC_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_128_CBC_SHA256"
$cipherorder += "TLS_RSA_WITH_AES_256_CBC_SHA"
$cipherorder += "TLS_RSA_WITH_AES_128_CBC_SHA"
}
return $cipherorder
}
#******************************* TLS Version Settings ****************************************************
function Get-RegKeyPathForTls12()
{
$regKeyPath = @(
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
)
return $regKeyPath
}
function Get-RegKeyPathForTls11()
{
$regKeyPath = @(
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server"
)
return $regKeyPath
}
function Get-RegKeypathForTls10()
{
$regKeyPath = @(
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server"
)
return $regKeyPath
}
function Get-RegKeyPathForSsl30()
{
$regKeyPath = @(
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server"
)
return $regKeyPath
}
function Get-RegKeyPathForSsl20()
{
$regKeyPath = @(
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client",
"HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server"
)
return $regKeyPath
}
#Initialize reboot value to false
$reboot = $false
#*****************************Create the logfile if not does not exist***************************************
$logLocation = CreateLogDirectory
#Start writing to the logs
Write-Log -Message "========== Start of logging for a script execution ==========" -Logfile $logLocation -Severity Information
$registryPathGoodGuys = @()
$registryPathBadGuys = @()
# we enable TLS 1.2 and disable SSL 2.0, 3.0 in any case
$registryPathGoodGuys += Get-RegKeyPathForTls12
$registryPathBadGuys += Get-RegKeyPathForSsl20
$registryPathBadGuys += Get-RegKeyPathForSsl30
# add TLS 1.0/1.1 to good/bad depending on user's preference
# default is adding TLS 1.0/1.1 to bad
if ($EnableOlderTlsVersions)
{
$registryPathGoodGuys += Get-RegKeypathForTls10
$registryPathGoodGuys += Get-RegKeyPathForTls11
Write-Log -Message "Enabling TLS1.2, TLS1.1, TLS1.0. Disabling SSL3.0, SSL2.0" -Logfile $logLocation -Severity Information
}
else
{
$registryPathBadGuys += Get-RegKeypathForTls10
$registryPathBadGuys += Get-RegKeyPathForTls11
Write-Log -Message "Enabling TLS1.2. Disabling TLS1.1, TLS1.0, SSL3.0, SSL2.0" -Logfile $logLocation -Severity Information
}
Write-Log -Message "Check which registry keys exist already and which registry keys need to be created." -Logfile $logLocation -Severity Information
#******************* CREATE THE REGISTRY KEYS IF THEY DON'T EXIST********************************
# Check for existence of GoodGuy registry keys, and create if they do not exist
For ($i = 0; $i -lt $registryPathGoodGuys.Length; $i = $i + 1) {
Write-Log -Message "Checking for existing of key: $($registryPathGoodGuys[$i]) " -Logfile $logLocation -Severity Information
If (!(Test-Path -Path $registryPathGoodGuys[$i])) {
New-Item $registryPathGoodGuys[$i] | Out-Null
Write-Log -Message "Creating key: $($registryPathGoodGuys[$i]) " -Logfile $logLocation -Severity Information
}
}
# Check for existence of BadGuy registry keys, and create if they do not exist
For ($i = 0; $i -lt $registryPathBadGuys.Length; $i = $i + 1) {
Write-Log -Message "Checking for existing of key: $($registryPathBadGuys[$i]) " -Logfile $logLocation -Severity Information
If (!(Test-Path -Path $registryPathBadGuys[$i])) {
Write-Log -Message "Creating key: $($registryPathBadGuys[$i]) " -Logfile $logLocation -Severity Information
New-Item $registryPathBadGuys[$i] | Out-Null
}
}
#******************* EXPLICITLY DISABLE SSLV2, SSLV3, TLS10 AND TLS11 ********************************
For ($i = 0; $i -lt $registryPathBadGuys.Length; $i = $i + 1) {
if ($registryPathBadGuys[$i].Contains("Client") -Or $registryPathBadGuys[$i].Contains("Server")) {
Write-Log -Message "Disabling this key: $($registryPathBadGuys[$i]) " -Logfile $logLocation -Severity Information
$result = Set-CryptoSetting $registryPathBadGuys[$i].ToString() Enabled 0 DWord
$result = Set-CryptoSetting $registryPathBadGuys[$i].ToString() DisabledByDefault 1 DWord
$reboot = $reboot -or $result
}
}
#********************************* EXPLICITLY Enable TLS12 ****************************************
For ($i = 0; $i -lt $registryPathGoodGuys.Length; $i = $i + 1) {
if ($registryPathGoodGuys[$i].Contains("Client") -Or $registryPathGoodGuys[$i].Contains("Server")) {
Write-Log -Message "Enabling this key: $($registryPathGoodGuys[$i]) " -Logfile $logLocation -Severity Information
$result = Set-CryptoSetting $registryPathGoodGuys[$i].ToString() Enabled 1 DWord
$result = Set-CryptoSetting $registryPathGoodGuys[$i].ToString() DisabledByDefault 0 DWord
$reboot = $reboot -or $result
}
}
#************************************** Disable RC4 ************************************************
$result = DisableRC4
$reboot = $reboot -or $result
#************************************** Set Cipher Suite Order **************************************
Write-Log -Message "----- starting ciphersuite order calculation -----" -Logfile $logLocation -Severity Information
$configureExcellenceOrder = $true
if ($SetCipherOrder.ToUpper() -eq "B")
{
$configureExcellenceOrder = $false
Write-Host "The min bar cipher suite order was chosen."
Write-Log -Message "The min bar cipher suite order was chosen." -Logfile $logLocation -Severity Information
}
else
{
Write-Host "The opportunity for excellence cipher suite order was chosen."
Write-Log -Message "The opportunity for excellence cipher suite order was chosen." -Logfile $logLocation -Severity Information
}
$cipherlist = @()
if ([Environment]::OSVersion.Version.Major -lt 10)
{
$cipherlist += Get-BaseCipherSuitesOlderWindows -isExcellenceOrder $configureExcellenceOrder
$cipherlist += Get-BrowserCompatCipherSuitesOlderWindows -isExcellenceOrder $configureExcellenceOrder
}
else
{
$cipherlist += Get-BaseCipherSuitesWin10Above -isExcellenceOrder $configureExcellenceOrder
}
$cipherorder = [System.String]::Join(",", $cipherlist)
Write-Host "Appropriate ciphersuite order : $cipherorder"
Write-Log -Message "Appropriate ciphersuite order : $cipherorder" -Logfile $logLocation -Severity Information
$CipherSuiteRegKey = "HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002"
if (!(Test-Path -Path $CipherSuiteRegKey))
{
New-Item $CipherSuiteRegKey | Out-Null
$reboot = $True
Write-Log -Message "Creating key: $($CipherSuiteRegKey) " -Logfile $logLocation -Severity Information
}
$val = (Get-Item -Path $CipherSuiteRegKey -ErrorAction SilentlyContinue).GetValue("Functions", $null)
Write-Log -Message "Previous cipher suite value: $val " -Logfile $logLocation -Severity Information
Write-Log -Message "New cipher suite value : $cipherorder " -Logfile $logLocation -Severity Information
if ($val -ne $cipherorder)
{
Write-Log -Message "Cipher suite order needs to be updated. " -Logfile $logLocation -Severity Information
Write-Host "The original cipher suite order needs to be updated", `n, $val
Set-ItemProperty -Path $CipherSuiteRegKey -Name Functions -Value $cipherorder
Write-Log -Message "Cipher suite value was updated. " -Logfile $logLocation -Severity Information
$reboot = $True
}
else
{
Write-Log -Message "Cipher suite order does not need to be updated. " -Logfile $logLocation -Severity Information
Write-Log -Message "Cipher suite value was not updated as there was no change. " -Logfile $logLocation -Severity Information
}
#****************************** CHECK THE FIPS SETTING WHICH IMPACTS RDP'S ALLOWED CIPHERS **************************
#Check for FipsSettings
Write-Log -Message "Checking to see if reg keys exist and if MinEncryptionLevel is set to 4" -Logfile $logLocation -Severity Information
$result = Test-RegistryValueForFipsSettings
$reboot = $reboot -or $result
#************************************** REBOOT **************************************
if ($RebootIfRequired)
{
Write-Log -Message "You set the RebootIfRequired flag to true. If changes are made, the system will reboot " -Logfile $logLocation -Severity Information
# If any settings were changed, reboot
If ($reboot)
{
Write-Log -Message "Rebooting now... " -Logfile $logLocation -Severity Information
Write-Log -Message "Using this command: shutdown.exe /r /t 5 /c ""Crypto settings changed"" /f /d p:2:4 " -Logfile $logLocation -Severity Information
Write-Host "Rebooting now..."
shutdown.exe /r /t 5 /c "Crypto settings changed" /f /d p:2:4
}
Else
{
Write-Host "Nothing get updated."
Write-Log -Message "Nothing get updated. " -Logfile $logLocation -Severity Information
}
}
else
{
Write-Log -Message "You set the RebootIfRequired flag to false. If changes are made, the system will NOT reboot " -Logfile $logLocation -Severity Information
Write-Log -Message "No changes will take effect until a reboot has been completed. " -Logfile $logLocation -Severity Information
Write-Log -Message "Script does not include a reboot by design" -Logfile $logLocation -Severity Information
}
Write-Log -Message "========== End of logging for a script execution ==========" -Logfile $logLocation -Severity Information
# SIG # Begin signature block
# MIIjhgYJKoZIhvcNAQcCoIIjdzCCI3MCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCAHtlEJwNffjnOP
# Sr2t1yq5EfE0ll4GozyZt3UXO9BXKKCCDYEwggX/MIID56ADAgECAhMzAAABh3IX
# chVZQMcJAAAAAAGHMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2RlIFNpZ25p
# bmcgUENBIDIwMTEwHhcNMjAwMzA0MTgzOTQ3WhcNMjEwMzAzMTgzOTQ3WjB0MQsw
# CQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9u
# ZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMR4wHAYDVQQDExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
# AQDOt8kLc7P3T7MKIhouYHewMFmnq8Ayu7FOhZCQabVwBp2VS4WyB2Qe4TQBT8aB
# znANDEPjHKNdPT8Xz5cNali6XHefS8i/WXtF0vSsP8NEv6mBHuA2p1fw2wB/F0dH
# sJ3GfZ5c0sPJjklsiYqPw59xJ54kM91IOgiO2OUzjNAljPibjCWfH7UzQ1TPHc4d
# weils8GEIrbBRb7IWwiObL12jWT4Yh71NQgvJ9Fn6+UhD9x2uk3dLj84vwt1NuFQ
# itKJxIV0fVsRNR3abQVOLqpDugbr0SzNL6o8xzOHL5OXiGGwg6ekiXA1/2XXY7yV
# Fc39tledDtZjSjNbex1zzwSXAgMBAAGjggF+MIIBejAfBgNVHSUEGDAWBgorBgEE
# AYI3TAgBBggrBgEFBQcDAzAdBgNVHQ4EFgQUhov4ZyO96axkJdMjpzu2zVXOJcsw
# UAYDVR0RBEkwR6RFMEMxKTAnBgNVBAsTIE1pY3Jvc29mdCBPcGVyYXRpb25zIFB1
# ZXJ0byBSaWNvMRYwFAYDVQQFEw0yMzAwMTIrNDU4Mzg1MB8GA1UdIwQYMBaAFEhu
# ZOVQBdOCqhc3NyK1bajKdQKVMFQGA1UdHwRNMEswSaBHoEWGQ2h0dHA6Ly93d3cu
# bWljcm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY0NvZFNpZ1BDQTIwMTFfMjAxMS0w
# Ny0wOC5jcmwwYQYIKwYBBQUHAQEEVTBTMFEGCCsGAQUFBzAChkVodHRwOi8vd3d3
# Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2NlcnRzL01pY0NvZFNpZ1BDQTIwMTFfMjAx
# MS0wNy0wOC5jcnQwDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAgEAixmy
# S6E6vprWD9KFNIB9G5zyMuIjZAOuUJ1EK/Vlg6Fb3ZHXjjUwATKIcXbFuFC6Wr4K
# NrU4DY/sBVqmab5AC/je3bpUpjtxpEyqUqtPc30wEg/rO9vmKmqKoLPT37svc2NV
# BmGNl+85qO4fV/w7Cx7J0Bbqk19KcRNdjt6eKoTnTPHBHlVHQIHZpMxacbFOAkJr
# qAVkYZdz7ikNXTxV+GRb36tC4ByMNxE2DF7vFdvaiZP0CVZ5ByJ2gAhXMdK9+usx
# zVk913qKde1OAuWdv+rndqkAIm8fUlRnr4saSCg7cIbUwCCf116wUJ7EuJDg0vHe
# yhnCeHnBbyH3RZkHEi2ofmfgnFISJZDdMAeVZGVOh20Jp50XBzqokpPzeZ6zc1/g
# yILNyiVgE+RPkjnUQshd1f1PMgn3tns2Cz7bJiVUaqEO3n9qRFgy5JuLae6UweGf
# AeOo3dgLZxikKzYs3hDMaEtJq8IP71cX7QXe6lnMmXU/Hdfz2p897Zd+kU+vZvKI
# 3cwLfuVQgK2RZ2z+Kc3K3dRPz2rXycK5XCuRZmvGab/WbrZiC7wJQapgBodltMI5
# GMdFrBg9IeF7/rP4EqVQXeKtevTlZXjpuNhhjuR+2DMt/dWufjXpiW91bo3aH6Ea
# jOALXmoxgltCp1K7hrS6gmsvj94cLRf50QQ4U8Qwggd6MIIFYqADAgECAgphDpDS
# AAAAAAADMA0GCSqGSIb3DQEBCwUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMK
# V2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0
# IENvcnBvcmF0aW9uMTIwMAYDVQQDEylNaWNyb3NvZnQgUm9vdCBDZXJ0aWZpY2F0
# ZSBBdXRob3JpdHkgMjAxMTAeFw0xMTA3MDgyMDU5MDlaFw0yNjA3MDgyMTA5MDla
# MH4xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xKDAmBgNVBAMT
# H01pY3Jvc29mdCBDb2RlIFNpZ25pbmcgUENBIDIwMTEwggIiMA0GCSqGSIb3DQEB
# AQUAA4ICDwAwggIKAoICAQCr8PpyEBwurdhuqoIQTTS68rZYIZ9CGypr6VpQqrgG
# OBoESbp/wwwe3TdrxhLYC/A4wpkGsMg51QEUMULTiQ15ZId+lGAkbK+eSZzpaF7S
# 35tTsgosw6/ZqSuuegmv15ZZymAaBelmdugyUiYSL+erCFDPs0S3XdjELgN1q2jz
# y23zOlyhFvRGuuA4ZKxuZDV4pqBjDy3TQJP4494HDdVceaVJKecNvqATd76UPe/7
# 4ytaEB9NViiienLgEjq3SV7Y7e1DkYPZe7J7hhvZPrGMXeiJT4Qa8qEvWeSQOy2u
# M1jFtz7+MtOzAz2xsq+SOH7SnYAs9U5WkSE1JcM5bmR/U7qcD60ZI4TL9LoDho33
# X/DQUr+MlIe8wCF0JV8YKLbMJyg4JZg5SjbPfLGSrhwjp6lm7GEfauEoSZ1fiOIl
# XdMhSz5SxLVXPyQD8NF6Wy/VI+NwXQ9RRnez+ADhvKwCgl/bwBWzvRvUVUvnOaEP
# 6SNJvBi4RHxF5MHDcnrgcuck379GmcXvwhxX24ON7E1JMKerjt/sW5+v/N2wZuLB
# l4F77dbtS+dJKacTKKanfWeA5opieF+yL4TXV5xcv3coKPHtbcMojyyPQDdPweGF
# RInECUzF1KVDL3SV9274eCBYLBNdYJWaPk8zhNqwiBfenk70lrC8RqBsmNLg1oiM
# CwIDAQABo4IB7TCCAekwEAYJKwYBBAGCNxUBBAMCAQAwHQYDVR0OBBYEFEhuZOVQ
# BdOCqhc3NyK1bajKdQKVMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud
# DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFHItOgIxkEO5FAVO
# 4eqnxzHRI4k0MFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwubWljcm9zb2Z0
# LmNvbS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcmwwXgYIKwYBBQUHAQEEUjBQME4GCCsGAQUFBzAChkJodHRwOi8vd3d3Lm1p
# Y3Jvc29mdC5jb20vcGtpL2NlcnRzL01pY1Jvb0NlckF1dDIwMTFfMjAxMV8wM18y
# Mi5jcnQwgZ8GA1UdIASBlzCBlDCBkQYJKwYBBAGCNy4DMIGDMD8GCCsGAQUFBwIB
# FjNodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vcGtpb3BzL2RvY3MvcHJpbWFyeWNw
# cy5odG0wQAYIKwYBBQUHAgIwNB4yIB0ATABlAGcAYQBsAF8AcABvAGwAaQBjAHkA
# XwBzAHQAYQB0AGUAbQBlAG4AdAAuIB0wDQYJKoZIhvcNAQELBQADggIBAGfyhqWY
# 4FR5Gi7T2HRnIpsLlhHhY5KZQpZ90nkMkMFlXy4sPvjDctFtg/6+P+gKyju/R6mj
# 82nbY78iNaWXXWWEkH2LRlBV2AySfNIaSxzzPEKLUtCw/WvjPgcuKZvmPRul1LUd
# d5Q54ulkyUQ9eHoj8xN9ppB0g430yyYCRirCihC7pKkFDJvtaPpoLpWgKj8qa1hJ
# Yx8JaW5amJbkg/TAj/NGK978O9C9Ne9uJa7lryft0N3zDq+ZKJeYTQ49C/IIidYf
# wzIY4vDFLc5bnrRJOQrGCsLGra7lstnbFYhRRVg4MnEnGn+x9Cf43iw6IGmYslmJ
# aG5vp7d0w0AFBqYBKig+gj8TTWYLwLNN9eGPfxxvFX1Fp3blQCplo8NdUmKGwx1j
# NpeG39rz+PIWoZon4c2ll9DuXWNB41sHnIc+BncG0QaxdR8UvmFhtfDcxhsEvt9B
# xw4o7t5lL+yX9qFcltgA1qFGvVnzl6UJS0gQmYAf0AApxbGbpT9Fdx41xtKiop96
# eiL6SJUfq/tHI4D1nvi/a7dLl+LrdXga7Oo3mXkYS//WsyNodeav+vyL6wuA6mk7
# r/ww7QRMjt/fdW1jkT3RnVZOT7+AVyKheBEyIXrvQQqxP/uozKRdwaGIm1dxVk5I
# RcBCyZt2WwqASGv9eZ/BvW1taslScxMNelDNMYIVWzCCFVcCAQEwgZUwfjELMAkG
# A1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx
# HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEoMCYGA1UEAxMfTWljcm9z
# b2Z0IENvZGUgU2lnbmluZyBQQ0EgMjAxMQITMwAAAYdyF3IVWUDHCQAAAAABhzAN
# BglghkgBZQMEAgEFAKCBrjAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgOQvu7NUq
# wmve+qCoalj/s9HX5Hz9/zYISdJyOFTC4FIwQgYKKwYBBAGCNwIBDDE0MDKgFIAS
# AE0AaQBjAHIAbwBzAG8AZgB0oRqAGGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbTAN
# BgkqhkiG9w0BAQEFAASCAQAHbtGz0AChe0qMPM3c7iU8BQCfJklePUlAlhwFSuCx
# careoloxao+ZtS+dQRlrxLu/ZSqtmJHNsyRoWzsHdOs65pwUYhV3svzaXd7pJwkc
# nbDXedLBbNuQrQrrL2xbGtzT3U+EwgpJ1TTEYwHgqkTFogIelGa2sjD5N+4Vvalq
# t+vxaYrWwkTtsm0qczLKGRUjJqCjARjviE1xsOvs4zwbpXx/bEs/6M7U9tR+w/DS
# nDY/5KAKYET0DCVDhmsMmzJi3xXdBr4sAz0484AAB0CIRVgPCgdgr8E0NQUESJzm
# xm3K4bMAgTMWRiGTL4MRYSuMIn09sbfYXP9hjXLvTV4YoYIS5TCCEuEGCisGAQQB
# gjcDAwExghLRMIISzQYJKoZIhvcNAQcCoIISvjCCEroCAQMxDzANBglghkgBZQME
# AgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATwwggE4AgEBBgorBgEEAYRZCgMB
# MDEwDQYJYIZIAWUDBAIBBQAEIJBynrmlQmGS0UNGTk53HVKEc4aHvNdYrs5eCcHM
# puc5AgZfEgElnvMYEzIwMjAwNzI0MTgwNDM3Ljg3NlowBIACAfSggdCkgc0wgcox
# CzAJBgNVBAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMS0wKwYDVQQLEyRNaWNyb3NvZnQg
# SXJlbGFuZCBPcGVyYXRpb25zIExpbWl0ZWQxJjAkBgNVBAsTHVRoYWxlcyBUU1Mg
# RVNOOkUwNDEtNEJFRS1GQTdFMSUwIwYDVQQDExxNaWNyb3NvZnQgVGltZS1TdGFt
# cCBzZXJ2aWNloIIOPDCCBPEwggPZoAMCAQICEzMAAAEHfjdomIdaN9YAAAAAAQcw
# DQYJKoZIhvcNAQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0
# b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3Jh
# dGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwHhcN
# MTkxMDA4MTczODM1WhcNMjEwMTAzMTczODM1WjCByjELMAkGA1UEBhMCVVMxCzAJ
# BgNVBAgTAldBMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQg
# Q29ycG9yYXRpb24xLTArBgNVBAsTJE1pY3Jvc29mdCBJcmVsYW5kIE9wZXJhdGlv
# bnMgTGltaXRlZDEmMCQGA1UECxMdVGhhbGVzIFRTUyBFU046RTA0MS00QkVFLUZB
# N0UxJTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIHNlcnZpY2UwggEiMA0G
# CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUuqOUlbaeWirgwbCwhhNIOqTshpo+
# QdSYxAt9JnkeulQFeKrQ6rOSECXxwgOjL/TNMIXtkig1MaifFON6si/Ri+AsV8Gu
# rQp4fylJzLDMFdJcGSpV3CGRdpDb0au8kNQLmnZuxLxAL91R7//3mH2QDQI20w3G
# 06s+Xv8+js9wQksXAfclXX1TJoBIx1Pi1FGqCnY3KlW81+Plhz0T4yStm1MgnqH4
# RKYyPdcempCYC/BI04Ph2EJL+uQQfAfYdbf9vGqpKYjsuktnWr5uowD3H5At+x3l
# YH5rz4JCleKjeLpB/j74H7VZ0I5eTEbls9e2lEKaUzb9o0wjnjDc+t4BAgMBAAGj
# ggEbMIIBFzAdBgNVHQ4EFgQUNOHjlxlIJXMcP9n/0ogYdX8p6HcwHwYDVR0jBBgw
# FoAU1WM6XIoxkPNDe3xGG8UzaFqFbVUwVgYDVR0fBE8wTTBLoEmgR4ZFaHR0cDov
# L2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwvcHJvZHVjdHMvTWljVGltU3RhUENB
# XzIwMTAtMDctMDEuY3JsMFoGCCsGAQUFBwEBBE4wTDBKBggrBgEFBQcwAoY+aHR0
# cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9jZXJ0cy9NaWNUaW1TdGFQQ0FfMjAx
# MC0wNy0wMS5jcnQwDAYDVR0TAQH/BAIwADATBgNVHSUEDDAKBggrBgEFBQcDCDAN
# BgkqhkiG9w0BAQsFAAOCAQEAGN3/7XWSzHGKjk444w+2q1D3k7Bh/ZahUvWHFJ6E
# UKU5vLzEGsdsgJSvWXHZDRrpf5rcUGQyjnlo1hAY1mDteNKFushS6bedxcxPHJje
# lVZ9N2/e5+/7zLu18YjnKw5bFu7dWqYBMI3J0FOr56XJOJ1KTtMiJhpxuib+FWy+
# pyhVVgHGTUHuUdbE09dY9WxuRsbpb4DdWAWNrPDB6VAOO50QfEj+0tW+zF6h3RhB
# TI0ilj0+AzgXE+6DyJ7/br6aVvCEvNRJzE6akJnMyn/kzmC32LxvRZWKEwWDR0Fn
# zeXj5ynSStZ6iifTBP7gqiDsidguxh+BFX7HxhN1eHf7jTCCBnEwggRZoAMCAQIC
# CmEJgSoAAAAAAAIwDQYJKoZIhvcNAQELBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYD
# VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQKExVNaWNy
# b3NvZnQgQ29ycG9yYXRpb24xMjAwBgNVBAMTKU1pY3Jvc29mdCBSb290IENlcnRp
# ZmljYXRlIEF1dGhvcml0eSAyMDEwMB4XDTEwMDcwMTIxMzY1NVoXDTI1MDcwMTIx
# NDY1NVowfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
# BAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQG
# A1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAwggEiMA0GCSqGSIb3
# DQEBAQUAA4IBDwAwggEKAoIBAQCpHQ28dxGKOiDs/BOX9fp/aZRrdFQQ1aUKAIKF
# ++18aEssX8XD5WHCdrc+Zitb8BVTJwQxH0EbGpUdzgkTjnxhMFmxMEQP8WCIhFRD
# DNdNuDgIs0Ldk6zWczBXJoKjRQ3Q6vVHgc2/JGAyWGBG8lhHhjKEHnRhZ5FfgVSx
# z5NMksHEpl3RYRNuKMYa+YaAu99h/EbBJx0kZxJyGiGKr0tkiVBisV39dx898Fd1
# rL2KQk1AUdEPnAY+Z3/1ZsADlkR+79BL/W7lmsqxqPJ6Kgox8NpOBpG2iAg16Hgc
# sOmZzTznL0S6p/TcZL2kAcEgCZN4zfy8wMlEXV4WnAEFTyJNAgMBAAGjggHmMIIB
# 4jAQBgkrBgEEAYI3FQEEAwIBADAdBgNVHQ4EFgQU1WM6XIoxkPNDe3xGG8UzaFqF
# bVUwGQYJKwYBBAGCNxQCBAweCgBTAHUAYgBDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
# EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU1fZWy4/oolxiaNE9lJBb186aGMQwVgYD
# VR0fBE8wTTBLoEmgR4ZFaHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9jcmwv
# cHJvZHVjdHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYtMjMuY3JsMFoGCCsGAQUFBwEB
# BE4wTDBKBggrBgEFBQcwAoY+aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3BraS9j
# ZXJ0cy9NaWNSb29DZXJBdXRfMjAxMC0wNi0yMy5jcnQwgaAGA1UdIAEB/wSBlTCB
# kjCBjwYJKwYBBAGCNy4DMIGBMD0GCCsGAQUFBwIBFjFodHRwOi8vd3d3Lm1pY3Jv
# c29mdC5jb20vUEtJL2RvY3MvQ1BTL2RlZmF1bHQuaHRtMEAGCCsGAQUFBwICMDQe
# MiAdAEwAZQBnAGEAbABfAFAAbwBsAGkAYwB5AF8AUwB0AGEAdABlAG0AZQBuAHQA
# LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQAH5ohRDeLG4Jg/gXEDPZ2joSFvs+umzPUx
# vs8F4qn++ldtGTCzwsVmyWrf9efweL3HqJ4l4/m87WtUVwgrUYJEEvu5U4zM9GAS
# inbMQEBBm9xcF/9c+V4XNZgkVkt070IQyK+/f8Z/8jd9Wj8c8pl5SpFSAK84Dxf1
# L3mBZdmptWvkx872ynoAb0swRCQiPM/tA6WWj1kpvLb9BOFwnzJKJ/1Vry/+tuWO
# M7tiX5rbV0Dp8c6ZZpCM/2pif93FSguRJuI57BlKcWOdeyFtw5yjojz6f32WapB4
# pm3S4Zz5Hfw42JT0xqUKloakvZ4argRCg7i1gJsiOCC1JeVk7Pf0v35jWSUPei45
# V3aicaoGig+JFrphpxHLmtgOR5qAxdDNp9DvfYPw4TtxCd9ddJgiCGHasFAeb73x
# 4QDf5zEHpJM692VHeOj4qEir995yfmFrb3epgcunCaw5u+zGy9iCtHLNHfS4hQEe
# gPsbiSpUObJb2sgNVZl6h3M7COaYLeqN4DMuEin1wC9UJyH3yKxO2ii4sanblrKn
# QqLJzxlBTeCG+SqaoxFmMNO7dDJL32N79ZmKLxvHIa9Zta7cRDyXUHHXodLFVeNp
# 3lfB0d4wwP3M5k37Db9dT+mdHhk4L7zPWAUu7w2gUDXa7wknHNWzfjUeCLraNtvT
# X4/edIhJEqGCAs4wggI3AgEBMIH4oYHQpIHNMIHKMQswCQYDVQQGEwJVUzELMAkG
# A1UECBMCV0ExEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBD
# b3Jwb3JhdGlvbjEtMCsGA1UECxMkTWljcm9zb2Z0IElyZWxhbmQgT3BlcmF0aW9u
# cyBMaW1pdGVkMSYwJAYDVQQLEx1UaGFsZXMgVFNTIEVTTjpFMDQxLTRCRUUtRkE3
# RTElMCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgc2VydmljZaIjCgEBMAcG
# BSsOAwIaAxUAwwu+tfgG3rC7RZrxuFO2CmZSfPiggYMwgYCkfjB8MQswCQYDVQQG
# EwJVUzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwG
# A1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQg
# VGltZS1TdGFtcCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOLFEVUwIhgPMjAy
# MDA3MjQxNTUwNDVaGA8yMDIwMDcyNTE1NTA0NVowdzA9BgorBgEEAYRZCgQBMS8w
# LTAKAgUA4sURVQIBADAKAgEAAgIa9QIB/zAHAgEAAgIR9DAKAgUA4sZi1QIBADA2
# BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMCoAowCAIBAAIDB6EgoQowCAIB
# AAIDAYagMA0GCSqGSIb3DQEBBQUAA4GBADwvhE9bln801RR+oEXjtPJXTqtYMakR
# ymItUlO2HRorDqEv2SJR/V/kQjcsqS6ig54bOiKs0Il2fW/s/pi+x1ydJMpOyhM7
# zzqm3acQ9kbYHIDoPWVT/Rq2Oo33Dq380zXENcc0hpLAKF3Cu06SbbNbqu+A/wbI
# z5IClz6kU8kiMYIDDTCCAwkCAQEwgZMwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
# Cldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29m
# dCBDb3Jwb3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENB
# IDIwMTACEzMAAAEHfjdomIdaN9YAAAAAAQcwDQYJYIZIAWUDBAIBBQCgggFKMBoG
# CSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQg6+NCew+c
# OhYIOzhUKofOF7MxtgOvSMWQCMCIWlTFNMgwgfoGCyqGSIb3DQEJEAIvMYHqMIHn
# MIHkMIG9BCBBYvCj4pFkwhumagATn0gLh9fdDNzImQkKNeOtRj/LHjCBmDCBgKR+
# MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdS
# ZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT
# HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMzAAABB343aJiHWjfWAAAA
# AAEHMCIEIGIH6vLdbEFNnxTxBhtIN7CtmhcKy/9m6/xoAA3LHzXUMA0GCSqGSIb3
# DQEBCwUABIIBAKGg3zNulscnGBDlD6Q/U6yLQ5dN3gF9UrprgACiQ1gs/DexU7oC
# hjNZxBnH5RTA/7q9TFf2a1rBydHWVnqXuuQQJ0HuskdpXahxR4y1jboDdGwr7F08
# v/gmPeeUik28Je72QZp5m/R0O61/kMQaDpLO9iPH0Z9iMGfqJonFPDeY4VX8Da2n
# cPY7mrv6YAI+ydZ+mUdBp2yjas7+/N8MntcNtAO0HpWFXQTAmb77RrSssfeZphRA
# mBD+gLx5C3q4uSmuOqaQxUaF0y8FeuetHp0bw2sfce6GlMXJwzTpC6HvXnaVtMy0
# pgzd/KPHW7EgSvmRVKmvwiQGiZBoRG/Gcg8=
# SIG # End signature block

View File

@ -1,15 +1,13 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
param([string]$SasToken)
if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") { if (Test-Path -LiteralPath "$PSScriptRoot/utility-prefix.ps1") {
. "$PSScriptRoot/utility-prefix.ps1" . "$PSScriptRoot/utility-prefix.ps1"
} }
# See https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-history # See https://learn.microsoft.com/en-us/visualstudio/releases/2026/release-history
# 18.6.2 # 18.8.0
$VisualStudioBootstrapperUrl = 'https://download.visualstudio.microsoft.com/download/pr/471ad3d6-cb2b-4d53-8edf-a9eeade096a5/3cfa3f8fc957f406dc35be713959a85c10b23b9ed9a865626550e8cf676d96a8/vs_BuildTools.exe' $VisualStudioBootstrapperUrl = 'https://download.visualstudio.microsoft.com/download/pr/e05c0bc8-d058-4b2b-937c-1c80073d7633/b62e8829c6a6c043aacf2ef657456213ab71099c7e46a610f95d6778bfc9beb0/vs_BuildTools.exe'
$Workloads = @( $Workloads = @(
'Microsoft.VisualStudio.Workload.VCTools', 'Microsoft.VisualStudio.Workload.VCTools',
'Microsoft.VisualStudio.Workload.MSBuildTools', 'Microsoft.VisualStudio.Workload.MSBuildTools',

View File

@ -4,7 +4,6 @@
# This script runs all the scripts we run on Azure machines to deploy prerequisites, # This script runs all the scripts we run on Azure machines to deploy prerequisites,
# and assumes it is being run as an admin user. # and assumes it is being run as an admin user.
. "$PSScriptRoot\deploy-tlssettings.ps1" -RebootIfRequired 0
. "$PSScriptRoot\deploy-sevenzip.ps1" . "$PSScriptRoot\deploy-sevenzip.ps1"
. "$PSScriptRoot\deploy-visual-studio.ps1" . "$PSScriptRoot\deploy-visual-studio.ps1"
. "$PSScriptRoot\deploy-git.ps1" . "$PSScriptRoot\deploy-git.ps1"
@ -13,7 +12,6 @@
. "$PSScriptRoot\deploy-mpi.ps1" . "$PSScriptRoot\deploy-mpi.ps1"
. "$PSScriptRoot\deploy-cuda.ps1" . "$PSScriptRoot\deploy-cuda.ps1"
. "$PSScriptRoot\deploy-cudnn.ps1" . "$PSScriptRoot\deploy-cudnn.ps1"
. "$PSScriptRoot\deploy-inteloneapi.ps1"
. "$PSScriptRoot\deploy-pwsh.ps1" . "$PSScriptRoot\deploy-pwsh.ps1"
. "$PSScriptRoot\deploy-azure-cli.ps1" . "$PSScriptRoot\deploy-azure-cli.ps1"
. "$PSScriptRoot\deploy-azcopy.ps1" . "$PSScriptRoot\deploy-azcopy.ps1"

View File

@ -2,8 +2,6 @@
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
# #
param([string]$SasToken)
<# <#
.SYNOPSIS .SYNOPSIS
Prepares the virtual machine for imaging. Prepares the virtual machine for imaging.

View File

@ -1,6 +1,8 @@
# Copyright (c) Microsoft Corporation. # Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
$UseManagedIdentity = $false
<# <#
.SYNOPSIS .SYNOPSIS
Gets a random file path in the temp directory. Gets a random file path in the temp directory.
@ -30,11 +32,8 @@ Function Get-TempFilePath {
Gets the download URL for an image asset. Gets the download URL for an image asset.
.DESCRIPTION .DESCRIPTION
Get-AssetUrl returns the upstream URL when no SAS token is provided, or the Get-AssetUrl returns the upstream URL unless UseManagedIdentity is specified,
vcpkgimageminting asset URL when a SAS token is available. in which case it returns the corresponding vcpkgimageminting asset URL.
.PARAMETER SasToken
The optional SAS token for accessing vcpkgimageminting assets.
.PARAMETER InternetUrl .PARAMETER InternetUrl
The upstream download URL. The upstream download URL.
@ -45,17 +44,15 @@ The asset file name in the vcpkgimageminting blob container.
Function Get-AssetUrl { Function Get-AssetUrl {
[CmdletBinding(PositionalBinding=$false)] [CmdletBinding(PositionalBinding=$false)]
Param( Param(
[String]$SasToken,
[Parameter(Mandatory)][uri]$InternetUrl, [Parameter(Mandatory)][uri]$InternetUrl,
[Parameter(Mandatory)][String]$BlobAssetName [Parameter(Mandatory)][String]$BlobAssetName
) )
if ([string]::IsNullOrEmpty($SasToken)) { if (-not $UseManagedIdentity) {
return $InternetUrl return $InternetUrl
} }
$SasToken = $SasToken.Replace('"', '').TrimStart('?') return [uri]"https://vcpkgimageminting.blob.core.windows.net/assets/$([uri]::EscapeDataString($BlobAssetName))"
return [uri]"https://vcpkgimageminting.blob.core.windows.net/assets/$($BlobAssetName)?$($SasToken)"
} }
<# <#
@ -84,11 +81,7 @@ Function Get-ContentSourceDescription {
} }
if ($Url.Host -ieq 'vcpkgimageminting.blob.core.windows.net') { if ($Url.Host -ieq 'vcpkgimageminting.blob.core.windows.net') {
if ($Url.Query -match '(^\?|&)sig=') { return 'vcpkgimageminting using managed identity'
return 'vcpkgimageminting using SAS token'
}
return 'vcpkgimageminting'
} }
return 'the internet' return 'the internet'
@ -127,9 +120,38 @@ Function Get-LocalOrDownloadedFile {
$tempPath = Get-TempFilePath $tempPath = Get-TempFilePath
New-Item -ItemType Directory -Path $tempPath -Force | Out-Null New-Item -ItemType Directory -Path $tempPath -Force | Out-Null
$downloadPath = Join-Path $tempPath $LocalName $downloadPath = Join-Path $tempPath $LocalName
curl.exe --fail -L -o $downloadPath $Url
if (-Not $?) { if ($Url.Host -ieq 'vcpkgimageminting.blob.core.windows.net') {
Write-Error 'Download failed!' $tokenResponseJson = curl.exe `
--fail `
--silent `
--show-error `
--noproxy '*' `
--header 'Metadata: true' `
'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F'
if ($LASTEXITCODE -ne 0) {
throw 'Failed to acquire an Azure Storage access token from IMDS.'
}
$storageAccessToken = ($tokenResponseJson | ConvertFrom-Json).access_token
if ([string]::IsNullOrWhiteSpace($storageAccessToken)) {
throw 'IMDS returned an empty Azure Storage access token.'
}
curl.exe `
--fail `
--location `
--show-error `
--header "Authorization: Bearer $storageAccessToken" `
--header 'x-ms-version: 2023-11-03' `
--output $downloadPath `
$Url
} else {
curl.exe --fail --location --show-error --output $downloadPath $Url
}
if ($LASTEXITCODE -ne 0) {
throw "Failed to download $LocalName."
} }
return [pscustomobject]@{ return [pscustomobject]@{

View File

@ -13,55 +13,55 @@ function(vcpkg_find_fortran out_var)
macro(z_vcpkg_warn_ambiguous_system_variables) macro(z_vcpkg_warn_ambiguous_system_variables)
# CMakeDetermineFortranCompiler is for project mode. # CMakeDetermineFortranCompiler is for project mode.
endmacro() endmacro()
include(CMakeDetermineFortranCompiler)
if(NOT CMAKE_Fortran_COMPILER AND "${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}" STREQUAL "") if(VCPKG_PROVIDED_FORTRAN)
# If a user uses their own VCPKG_CHAINLOAD_TOOLCHAIN_FILE, they _must_ figure out fortran on their own. message(STATUS "Using MinGW gfortran; set VCPKG_PROVIDED_FORTRAN=OFF if supplying Fortran from your toolchain")
if(CMAKE_HOST_WIN32) if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86")
message(STATUS "No Fortran compiler found on the PATH. Using MinGW gfortran!") set(mingw_path mingw32)
# If no Fortran compiler is on the path we switch to use gfortan from MinGW within vcpkg set(machine_flag -m32)
if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86") vcpkg_acquire_msys(msys_root
set(mingw_path mingw32) NO_DEFAULT_PACKAGES
set(machine_flag -m32) Z_DECLARE_EXTRA_PACKAGES_COMMAND "z_vcpkg_find_fortran_msys_declare_packages"
vcpkg_acquire_msys(msys_root PACKAGES mingw-w64-i686-gcc-fortran
NO_DEFAULT_PACKAGES )
Z_DECLARE_EXTRA_PACKAGES_COMMAND "z_vcpkg_find_fortran_msys_declare_packages" elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64")
PACKAGES mingw-w64-i686-gcc-fortran set(mingw_path mingw64)
) set(machine_flag -m64)
elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64") vcpkg_acquire_msys(msys_root
set(mingw_path mingw64) NO_DEFAULT_PACKAGES
set(machine_flag -m64) Z_DECLARE_EXTRA_PACKAGES_COMMAND "z_vcpkg_find_fortran_msys_declare_packages"
vcpkg_acquire_msys(msys_root PACKAGES mingw-w64-x86_64-gcc-fortran
NO_DEFAULT_PACKAGES )
Z_DECLARE_EXTRA_PACKAGES_COMMAND "z_vcpkg_find_fortran_msys_declare_packages"
PACKAGES mingw-w64-x86_64-gcc-fortran
)
else()
message(FATAL_ERROR "Unknown architecture '${VCPKG_TARGET_ARCHITECTURE}' for MinGW Fortran build!")
endif()
set(mingw_bin "${msys_root}/${mingw_path}/bin")
vcpkg_add_to_path(PREPEND "${mingw_bin}")
vcpkg_list(APPEND additional_cmake_args
-DCMAKE_GNUtoMS=ON
"-DCMAKE_Fortran_COMPILER=${mingw_bin}/gfortran.exe"
"-DCMAKE_C_COMPILER=${mingw_bin}/gcc.exe"
"-DCMAKE_Fortran_FLAGS_INIT:STRING= -mabi=ms ${machine_flag} ${VCPKG_Fortran_FLAGS}")
# This is for private use by vcpkg-gfortran
set(vcpkg_find_fortran_MSYS_ROOT "${msys_root}" PARENT_SCOPE)
set(VCPKG_USE_INTERNAL_Fortran TRUE PARENT_SCOPE)
set(VCPKG_POLICY_SKIP_DUMPBIN_CHECKS enabled PARENT_SCOPE)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake" PARENT_SCOPE) # Switching to MinGW toolchain for Fortran
if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(VCPKG_CRT_LINKAGE dynamic PARENT_SCOPE)
message(STATUS "VCPKG_CRT_LINKAGE linkage for ${PORT} using vcpkg's internal gfortran cannot be static due to linking against MinGW libraries. Forcing dynamic CRT linkage")
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(VCPKG_LIBRARY_LINKAGE dynamic PARENT_SCOPE)
message(STATUS "VCPKG_LIBRARY_LINKAGE linkage for ${PORT} using vcpkg's internal gfortran cannot be static due to linking against MinGW libraries. Forcing dynamic library linkage")
endif()
else() else()
message(FATAL_ERROR "Unknown architecture '${VCPKG_TARGET_ARCHITECTURE}' for MinGW Fortran build!")
endif()
set(mingw_bin "${msys_root}/${mingw_path}/bin")
vcpkg_add_to_path(PREPEND "${mingw_bin}")
vcpkg_list(APPEND additional_cmake_args
-DCMAKE_GNUtoMS=ON
"-DCMAKE_Fortran_COMPILER=${mingw_bin}/gfortran.exe"
"-DCMAKE_C_COMPILER=${mingw_bin}/gcc.exe"
"-DCMAKE_Fortran_FLAGS_INIT:STRING= -mabi=ms ${machine_flag} ${VCPKG_Fortran_FLAGS}")
# This is for private use by vcpkg-gfortran
set(vcpkg_find_fortran_MSYS_ROOT "${msys_root}" PARENT_SCOPE)
set(VCPKG_USE_INTERNAL_Fortran TRUE PARENT_SCOPE)
set(VCPKG_POLICY_SKIP_DUMPBIN_CHECKS enabled PARENT_SCOPE)
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${SCRIPTS}/toolchains/mingw.cmake" PARENT_SCOPE) # Switching to MinGW toolchain for Fortran
if(VCPKG_CRT_LINKAGE STREQUAL "static")
set(VCPKG_CRT_LINKAGE dynamic PARENT_SCOPE)
message(STATUS "VCPKG_CRT_LINKAGE linkage for ${PORT} using vcpkg's internal gfortran cannot be static due to linking against MinGW libraries. Forcing dynamic CRT linkage")
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
set(VCPKG_LIBRARY_LINKAGE dynamic PARENT_SCOPE)
message(STATUS "VCPKG_LIBRARY_LINKAGE linkage for ${PORT} using vcpkg's internal gfortran cannot be static due to linking against MinGW libraries. Forcing dynamic library linkage")
endif()
elseif(CMAKE_HOST_WIN32)
message(STATUS "Deferring Fortran compiler selection to the triplet toolchain.")
else()
include(CMakeDetermineFortranCompiler)
if(NOT CMAKE_Fortran_COMPILER)
message(FATAL_ERROR "Unable to find a Fortran compiler using 'CMakeDetermineFortranCompiler'. Please install one (e.g. gfortran) and make it available on the PATH!") message(FATAL_ERROR "Unable to find a Fortran compiler using 'CMakeDetermineFortranCompiler'. Please install one (e.g. gfortran) and make it available on the PATH!")
endif() endif()
endif() endif()
@ -212,4 +212,4 @@ macro(z_vcpkg_find_fortran_msys_declare_packages)
SHA512 35b8dfb55b22de813ca29cf2c38fe2912616c66c211706ea39551936c3d3b80b663a3d7e57698ca2300d026d9966fe6a36193a1e3503f3ca538f3e9e8ce75b55 SHA512 35b8dfb55b22de813ca29cf2c38fe2912616c66c211706ea39551936c3d3b80b663a3d7e57698ca2300d026d9966fe6a36193a1e3503f3ca538f3e9e8ce75b55
DEPS mingw-w64-x86_64-gcc-libs DEPS mingw-w64-x86_64-gcc-libs
) )
endmacro() endmacro()

File diff suppressed because it is too large Load Diff

View File

@ -4,4 +4,4 @@ set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_ENV_PASSTHROUGH PATH) set(VCPKG_ENV_PASSTHROUGH PATH)
set(VCPKG_CMAKE_SYSTEM_NAME MinGW) set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)

View File

@ -4,4 +4,4 @@ set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_ENV_PASSTHROUGH PATH) set(VCPKG_ENV_PASSTHROUGH PATH)
set(VCPKG_CMAKE_SYSTEM_NAME MinGW) set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)

View File

@ -2,3 +2,4 @@ set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_BUILD_TYPE release) set(VCPKG_BUILD_TYPE release)
set(VCPKG_PROVIDED_FORTRAN ON)

View File

@ -1,3 +1,4 @@
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_PROVIDED_FORTRAN ON)

View File

@ -1,4 +1,4 @@
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE static) set(VCPKG_CRT_LINKAGE static)
set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_PROVIDED_FORTRAN ON)

View File

@ -1,4 +1,4 @@
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_PROVIDED_FORTRAN ON)

View File

@ -1,4 +1,4 @@
set(VCPKG_TARGET_ARCHITECTURE x86) set(VCPKG_TARGET_ARCHITECTURE x86)
set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_PROVIDED_FORTRAN ON)

View File

@ -2917,8 +2917,8 @@
"port-version": 0 "port-version": 0
}, },
"ezfoundation": { "ezfoundation": {
"baseline": "21.10", "baseline": "26.3",
"port-version": 1 "port-version": 0
}, },
"f3d": { "f3d": {
"baseline": "3.2.0", "baseline": "3.2.0",
@ -6698,7 +6698,7 @@
}, },
"mongo-c-driver": { "mongo-c-driver": {
"baseline": "2.3.1", "baseline": "2.3.1",
"port-version": 0 "port-version": 1
}, },
"mongo-cxx-driver": { "mongo-cxx-driver": {
"baseline": "4.4.0", "baseline": "4.4.0",
@ -7422,7 +7422,7 @@
}, },
"opencv4": { "opencv4": {
"baseline": "4.12.0", "baseline": "4.12.0",
"port-version": 5 "port-version": 6
}, },
"openexr": { "openexr": {
"baseline": "3.4.13", "baseline": "3.4.13",
@ -7970,7 +7970,7 @@
}, },
"popsift": { "popsift": {
"baseline": "0.10.0", "baseline": "0.10.0",
"port-version": 1 "port-version": 2
}, },
"portable-file-dialogs": { "portable-file-dialogs": {
"baseline": "0.1.0", "baseline": "0.1.0",

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "67a0b5df02046ff1862689ede1a713d46470da41",
"version": "26.3",
"port-version": 0
},
{ {
"git-tree": "2d772ca62c751b0f5498a9857968b3366d3f5f67", "git-tree": "2d772ca62c751b0f5498a9857968b3366d3f5f67",
"version": "21.10", "version": "21.10",

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "e1338692cf8462e5e974d24d097fe31870cc0f75",
"version": "2.3.1",
"port-version": 1
},
{ {
"git-tree": "0363b9a47c3f2549444cc8575ca5c9ff7df115f4", "git-tree": "0363b9a47c3f2549444cc8575ca5c9ff7df115f4",
"version": "2.3.1", "version": "2.3.1",

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "50e7bf04e4a0e069656151d374b49f54388bc88f",
"version": "4.12.0",
"port-version": 6
},
{ {
"git-tree": "0e28cd8713d7b810bef28ed0d7859dd761215854", "git-tree": "0e28cd8713d7b810bef28ed0d7859dd761215854",
"version": "4.12.0", "version": "4.12.0",

View File

@ -1,5 +1,10 @@
{ {
"versions": [ "versions": [
{
"git-tree": "ea8a55ff6e54b29eaa89612cc30e845762b4b793",
"version": "0.10.0",
"port-version": 2
},
{ {
"git-tree": "24ec78a1eca98f407158ac08a43b923a5417849a", "git-tree": "24ec78a1eca98f407158ac08a43b923a5417849a",
"version": "0.10.0", "version": "0.10.0",