Skip to content

Commit

Permalink
Reland "New toolchain for Windows 10 19041 SDK"
Browse files Browse the repository at this point in the history
This is a reland of 4a4f53a

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=<full-path-to-toolchain-dir>
>
> 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 <brucedawson@chromium.org>
> Reviewed-by: Henrik Andreasson <henrika@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Nico Weber <thakis@chromium.org>
> 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 <dcheng@chromium.org>
Reviewed-by: Jesse McKenna <jessemckenna@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#780431}
  • Loading branch information
randomascii authored and Commit Bot committed Jun 19, 2020
1 parent 0453c2b commit 424526a
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
13 changes: 7 additions & 6 deletions build/vs_toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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)
Expand All @@ -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
Expand Down
3 changes: 3 additions & 0 deletions build/win/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -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",
]
Expand Down Expand Up @@ -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" ]
Expand Down

0 comments on commit 424526a

Please sign in to comment.