Switch to full 17763 SDK, including new d3dcompiler_47.dll
The new (10.0.17763.0) version of d3dcompiler_47.dll contains various
bug fixes which we want to ship. We initially avoided upgrading it with
the rest of the SDK because it depends on the universal Windows 10 CRT
(UCRT) which some Windows 7 machines lack. This caused test failures on
some bots and would cause failures on some customer machines.
This change updates how we package isolates so that they always include
the UCRT, to avoid test failures. It also ships api-ms-win-*.dll and
ucrtbase*.dll in mini_installer.exe so that the UCRT will be shipped to
customers. The size increase to mini_installer.exe for this is about
400,000 bytes.
This change also deletes an unused function (_read_configuration_from_gn)
from create_installer_archive.py that sent me down an incorrect path
while investigating fixes.
The toolchain package is the same as the one used when landing
crrev.com/c/1401403 except that the 17763 version of d3dcompiler_47.dll
was retained. See that CL for full instructions on creating the
toolchain package.
Bug: 920704
Change-Id: I9cb7a7ed5cb75d04962fc64869d26b12617c0463
Reviewed-on: https://chromium-review.googlesource.com/c/1450414
Reviewed-by: Greg Thompson <grt@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#629193}diff --git a/build/vs_toolchain.py b/build/vs_toolchain.py
index 1ab7be5..83b5e25d 100755
--- a/build/vs_toolchain.py
+++ b/build/vs_toolchain.py
@@ -367,9 +367,8 @@
to build with."""
env_version = GetVisualStudioVersion()
if env_version == '2017':
- # VS 2017 Update 9 (15.9.3) with 10.0.17763.132 SDK, 10.0.17134 version of
- # d3dcompiler_47.dll, with ARM64 libraries.
- toolchain_hash = '818a152b3f1da991c1725d85be19a0f27af6bab4'
+ # VS 2017 Update 9 (15.9.3) with 10.0.17763.132 SDK with ARM64 libraries.
+ toolchain_hash = 'e04af53255fe13c130e9cfde7d9ac861b9fb674a'
# 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 12d61c86..99871f8 100644
--- a/build/win/BUILD.gn
+++ b/build/win/BUILD.gn
@@ -82,10 +82,12 @@
}
group("runtime_libs") {
- if (is_component_build) {
+ if (is_component_build || current_cpu != "arm64") {
# Copy the VS runtime DLLs into the isolate so that they don't have to be
# preinstalled on the target machine. The debug runtimes have a "d" at
- # the end.
+ # the end. The UCRT files are needed for all non-arm64 builds because
+ # d3dcompiler_47.dll depends on them and they are missing on some Windows
+ # 7 machines.
if (is_debug) {
vcrt_suffix = "d"
} else {
diff --git a/chrome/installer/mini_installer/chrome.release b/chrome/installer/mini_installer/chrome.release
index bdf0219..a29cd7d 100644
--- a/chrome/installer/mini_installer/chrome.release
+++ b/chrome/installer/mini_installer/chrome.release
@@ -18,6 +18,7 @@
#
# Chrome version dir entries, sorted alphabetically.
#
+api-ms-win-*.dll: %(VersionDir)s\
chrome.dll: %(VersionDir)s\
chrome_100_percent.pak: %(VersionDir)s\
chrome_child.dll: %(VersionDir)s\
@@ -36,6 +37,7 @@
natives_blob.bin: %(VersionDir)s\
notification_helper.exe: %(VersionDir)s\
resources.pak: %(VersionDir)s\
+ucrtbase*.dll: %(VersionDir)s\
v8_context_snapshot.bin: %(VersionDir)s\
#
# Sub directories living in the version dir
diff --git a/chrome/tools/build/win/create_installer_archive.py b/chrome/tools/build/win/create_installer_archive.py
index be9c38d..b16b16bd 100755
--- a/chrome/tools/build/win/create_installer_archive.py
+++ b/chrome/tools/build/win/create_installer_archive.py
@@ -435,36 +435,6 @@
shutil.copyfile(src, dest)
-# Taken and modified from:
-# third_party\blink\tools\blinkpy\web_tests\port\factory.py
-def _read_configuration_from_gn(build_dir):
- """Return the configuration to used based on args.gn, if possible."""
- path = os.path.join(build_dir, 'args.gn')
- if not os.path.exists(path):
- path = os.path.join(build_dir, 'toolchain.ninja')
- if not os.path.exists(path):
- # This does not appear to be a GN-based build directory, so we don't
- # know how to interpret it.
- return None
-
- # toolchain.ninja exists, but args.gn does not; this can happen when
- # `gn gen` is run with no --args.
- return 'Debug'
-
- args = open(path).read()
- for l in args.splitlines():
- # See the original of this function and then gn documentation for why this
- # regular expression is correct:
- # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/reference.md#GN-build-language-grammar
- m = re.match('^\s*is_debug\s*=\s*false(\s*$|\s*#.*$)', l)
- if m:
- return 'Release'
-
- # if is_debug is set to anything other than false, or if it
- # does not exist at all, we should use the default value (True).
- return 'Debug'
-
-
def ParseDLLsFromDeps(build_dir, runtime_deps_file):
"""Parses the runtime_deps file and returns the set of DLLs in it, relative
to build_dir."""