From a90d6d8f4ed7c9302f9329d205d0dc585997ab8f Mon Sep 17 00:00:00 2001 From: Bruce Dawson Date: Wed, 24 Jun 2020 02:03:38 +0000 Subject: [PATCH] Reland "Reland "New toolchain for Windows 10 19041 SDK"" This reverts commit ed0697fcf0f958c1bc6643d911d99b1d9b52ed9b. Reason for revert: crrev.com/c/2255126 fixes the midl.py failures on Windows 7 class OSes and crrev.com/c/2260933 rolls in a native_client change that stops preprocessing .S files with cl.exe. With those changes cl.exe is not used in the build on Windows 7 anymore and that should let this toolchain land. This change now locks the SDK version to 10.0.19041.0 for users who don't use a packaged toolchain which ensures consistency and should simplify future toolchain upgrades. This change was tested with the lock as shown and with a lock to a previous SDK version. Original change's description: > Revert "Reland "New toolchain for Windows 10 19041 SDK"" > > This reverts commit 424526a023397ebbe6555ea27b82f66c137e8022. > > Reason for revert: win64-chrome build succeeded (progress) but > win32-chrome builder failed with a previously unseen error, shown > here: > > [170/58214] ACTION //remoting/host/win:remoting_lib_idl_idl_action(//build/toolchain/win:win_clang_x86) > FAILED: gen/remoting/host/win/chromoting_lib.h gen/remoting/host/win/chromoting_lib.dlldata.c gen/remoting/host/win/chromoting_lib_i.c gen/remoting/host/win/chromoting_lib_p.c gen/remoting/host/win/chromoting_lib.tlb > c:\b\s\w\ir\cipd_bin_packages\cpython\bin\python.exe ../../build/toolchain/win/midl.py environment.x86 c:/b/s/w/ir/cache/builder/src/third_party/win_build_output/midl/remoting/host/win gen/remoting/host/win 7219b935-4873-533b-9ce1-20c9e9b12def chromoting_lib.tlb chromoting_lib.h chromoting_lib.dlldata.c chromoting_lib_i.c chromoting_lib_p.c gen/remoting/host/win/chromoting_lib.idl /char signed /env win32 /Oicf > cl : Command line error D8027 : cannot execute 'c:\b\s\w\ir\cache\builder\src\third_party\depot_tools\win_toolchain\vs_files\a687d8e2e4114d9015eb550e1b156af21381faac\win_sdk\bin\..\..\VC\Tools\MSVC\14.26.28801\bin\HostX64\x86\c1.dll' > midl : command line error MIDL1003 : error returned by the C preprocessor (2) > > Original change's description: > > Reland "New toolchain for Windows 10 19041 SDK" > > > > This is a reland of 4a4f53a7f22f9058b2f171fc46bc5657bbe83e45 > > > > The original patch would fail to build on the mksnapshot step on > > Windows 7 (and server equivalents). This was due to two APISet DLLs > > that are required for the new dbghelp.dll. This change copies the two > > of them during gn gen. In order to have them as part of the isolates > > for cdb and in order to avoid dangerous ambiguity they are now > > required, which means that when this change lands the new SDK will be > > required. This is slightly disruptive for developers who aren't using > > our toolchain, but it seems unavoidable. > > > > Developers who don't have the latest SDK installed will hit this error > > message during gn gen: > > > > Exception: api-ms-win-downlevel-kernel32-l2-1-0.dll not found in "..." > > You must install the "Debugging Tools for Windows" feature from the > > Windows 10 SDK, the 10.0.19041.0 version. > > > > Original change's description: > > > New toolchain for Windows 10 19041 SDK > > > > > > This change updates the toolchain package used to build Chromium with > > > the 10.0.19041.0 (2020-04) SDK and VS 16.6.1. The d3dcompiler_47.dll > > > DLLs for x86 and x64 were swapped out for the 10.0.17134 versions (as > > > usual). > > > > > > The Debuggers directory was not swapped out this time because the > > > problem with loading dbghelp.dll on Windows 7 > > > (https://crbug.com/1021650) has been resolved. > > > > > > The output for the cdb copy step was updated because one additional UCRT > > > DLL is now copied. > > > > > > Packaging was done on a Windows Server 2019 VM, cleanly created for this > > > purpose. > > > > > > The package was created by downloading the VS Professional 2019 > > > installer from https://visualstudio.microsoft.com/downloads/ > > > (free trial, not preview) and then running the installer like this: > > > > > > $ PATH_TO_INSTALLER.EXE ^ > > > --add Microsoft.VisualStudio.Workload.NativeDesktop ^ > > > --add Microsoft.VisualStudio.Component.VC.ATLMFC ^ > > > --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^ > > > --add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^ > > > --includeRecommended --passive > > > > > > Then the latest Windows 10 SDK was downloaded and installed from > > > https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/ > > > > > > Then the packaging script was run like this: > > > > > > python3 depot_tools\win_toolchain\package_from_installed.py 2019 -w 10.0.19041.0 > > > > > > Since the new d3dcompiler_47.dll uses the UCRT and we want to avoid > > > shipping that (https://crbug.com/920704) the final packaging step was to > > > unzip the package, copy over the two copies of that DLL from the > > > previous toolchain's win_sdk\Redist, and then repackage the toolchain > > > with: > > > > python3 package_from_installed.py --repackage= > > > > > > UWP and ARM64 support and Python 3 compatibility were previously added > > > to package_from_installed.py. > > > > > > Future changes will require the new SDK, but for now the previous SDK > > > can also be used to build Chromium. > > > > > > The failures on the win*msvc* bots are unrelated. This was proven by > > > creating crrev.com/c/2245914 which is a NOP toolchain test. The existing > > > toolchain was repackaged with a single text file added and that caused > > > identical failures. > > > > > > Bug: 920704, 1014701, 1021650, 1089996 > > > Change-Id: Ie496354582458aa8c1292ed4ef63d949ee2eb15d > > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2225224 > > > Commit-Queue: Bruce Dawson > > > Reviewed-by: Henrik Andreasson > > > Reviewed-by: Jamie Madill > > > Reviewed-by: Nico Weber > > > Cr-Commit-Position: refs/heads/master@{#778924} > > > > Bug: 920704, 1014701, 1021650, 1089996, 1095767 > > Change-Id: I75e7653d57964e2929106e41b3f50594d3969e5f > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2249394 > > Reviewed-by: Daniel Cheng > > Reviewed-by: Jesse McKenna > > Reviewed-by: Jamie Madill > > Commit-Queue: Bruce Dawson > > Cr-Commit-Position: refs/heads/master@{#780431} > > TBR=dcheng@chromium.org,henrika@webrtc.org,thakis@chromium.org,brucedawson@chromium.org,henrika@chromium.org,jessemckenna@google.com,jmadill@chromium.org > > Change-Id: If00e3865e66d9071189b2aca28f7541ecbdc6486 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 920704, 1014701, 1021650, 1089996, 1095767 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2255558 > Reviewed-by: Bruce Dawson > Reviewed-by: Daniel Cheng > Commit-Queue: Bruce Dawson > Cr-Commit-Position: refs/heads/master@{#780467} TBR=dcheng@chromium.org,henrika@webrtc.org,thakis@chromium.org,brucedawson@chromium.org,henrika@chromium.org,jessemckenna@google.com,jmadill@chromium.org Bug: 920704, 1014701, 1021650, 1089996, 1095767 Change-Id: I68e4c246ee903ba48d59b3bdea913ea3975c49d6 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2255527 Reviewed-by: Nico Weber Reviewed-by: Bruce Dawson Reviewed-by: Henrik Andreasson Commit-Queue: Bruce Dawson Cr-Commit-Position: refs/heads/master@{#781663} --- build/toolchain/win/setup_toolchain.py | 8 ++++++-- build/vs_toolchain.py | 13 +++++++------ build/win/BUILD.gn | 3 +++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/build/toolchain/win/setup_toolchain.py b/build/toolchain/win/setup_toolchain.py index 9c936c69d6849f..1a7c3d74b5c506 100644 --- a/build/toolchain/win/setup_toolchain.py +++ b/build/toolchain/win/setup_toolchain.py @@ -153,10 +153,14 @@ def _LoadToolchainEnv(cpu, sdk_dir, target_store): if (cpu != 'x64'): # x64 is default target CPU thus any other CPU requires a target set cpu_arg += '_' + cpu - args = [script_path, cpu_arg] + args = [script_path, cpu_arg, ] # Store target must come before any SDK version declaration if (target_store): - args.append(['store']) + args.append('store') + # Explicitly specifying the SDK version to build with to avoid accidentally + # building with a new and untested SDK. This should stay in sync with the + # packaged toolchain in build/vs_toolchain.py. + args.append('10.0.19041.0') variables = _LoadEnvFromBat(args) return _ExtractImportantEnvironment(variables) diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py index b754f6edd7f52f..2ebd520102be97 100755 --- a/build/vs_toolchain.py +++ b/build/vs_toolchain.py @@ -408,7 +408,9 @@ def _CopyDebugger(target_dir, target_cpu): # List of debug files that should be copied, the first element of the tuple is # the name of the file and the second indicates if it's optional. - debug_files = [('dbghelp.dll', False), ('dbgcore.dll', True)] + debug_files = [('dbghelp.dll', False), ('dbgcore.dll', True), + ('api-ms-win-downlevel-kernel32-l2-1-0.dll', False), + ('api-ms-win-eventing-provider-l1-1-0.dll', False)] for debug_file, is_optional in debug_files: full_path = os.path.join(win_sdk_dir, 'Debuggers', target_cpu, debug_file) if not os.path.exists(full_path): @@ -418,7 +420,7 @@ def _CopyDebugger(target_dir, target_cpu): # TODO(crbug.com/773476): remove version requirement. raise Exception('%s not found in "%s"\r\nYou must install the ' '"Debugging Tools for Windows" feature from the Windows' - ' 10 SDK.' + ' 10 SDK, the 10.0.19041.0 version.' % (debug_file, full_path)) target_path = os.path.join(target_dir, debug_file) _CopyRuntimeImpl(target_path, full_path) @@ -438,12 +440,11 @@ def _GetDesiredVsToolchainHashes(): * //docs/windows_build_instructions.md mentions of VS or Windows SDK. Keeps the document consistent with the toolchain version. """ - # VS 2019 Update 9 (16.3.29324.140) with 10.0.18362 SDK, 10.0.17763 version of - # Debuggers, and 10.0.17134 version of d3dcompiler_47.dll, with ARM64 - # libraries and UWP support. + # VS 2019 16.61 with 10.0.19041 SDK, and 10.0.17134 version of + # d3dcompiler_47.dll, with ARM64 libraries and UWP support. # See go/chromium-msvc-toolchain for instructions about how to update the # toolchain. - toolchain_hash = '9ff60e43ba91947baca460d0ca3b1b980c3a2c23' + toolchain_hash = 'a687d8e2e4114d9015eb550e1b156af21381faac' # Third parties that do not have access to the canonical toolchain can map # canonical toolchain version to their own toolchain versions. toolchain_hash_mapping_key = 'GYP_MSVS_HASH_%s' % toolchain_hash diff --git a/build/win/BUILD.gn b/build/win/BUILD.gn index e4902041a0d506..d449f592519daf 100644 --- a/build/win/BUILD.gn +++ b/build/win/BUILD.gn @@ -79,6 +79,7 @@ if (is_win) { "$root_out_dir/cdb/api-ms-win-crt-string-l1-1-0.dll", "$root_out_dir/cdb/api-ms-win-crt-time-l1-1-0.dll", "$root_out_dir/cdb/api-ms-win-crt-utility-l1-1-0.dll", + "$root_out_dir/cdb/api-ms-win-downlevel-kernel32-l2-1-0.dll", "$root_out_dir/cdb/api-ms-win-eventing-provider-l1-1-0.dll", "$root_out_dir/cdb/ucrtbase.dll", ] @@ -162,6 +163,8 @@ if (is_win) { "$root_out_dir/api-ms-win-crt-string-l1-1-0.dll", "$root_out_dir/api-ms-win-crt-time-l1-1-0.dll", "$root_out_dir/api-ms-win-crt-utility-l1-1-0.dll", + "$root_out_dir/api-ms-win-downlevel-kernel32-l2-1-0.dll", + "$root_out_dir/api-ms-win-eventing-provider-l1-1-0.dll", ] if (!is_debug) { data += [ "$root_out_dir/ucrtbase.dll" ]