Skip to content

Commit

Permalink
Switch to full 17763 SDK, including new d3dcompiler_47.dll
Browse files Browse the repository at this point in the history
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}
  • Loading branch information
randomascii authored and Commit Bot committed Feb 5, 2019
1 parent 9b24b70 commit d17a7e3
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 35 deletions.
5 changes: 2 additions & 3 deletions build/vs_toolchain.py
Original file line number Diff line number Diff line change
Expand Up @@ -367,9 +367,8 @@ def _GetDesiredVsToolchainHashes():
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
Expand Down
6 changes: 4 additions & 2 deletions build/win/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,12 @@ if (is_win) {
}

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 {
Expand Down
2 changes: 2 additions & 0 deletions chrome/installer/mini_installer/chrome.release
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ chrome_proxy.exe: %(ChromeDir)s\
#
# 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\
Expand All @@ -36,6 +37,7 @@ nacl_irt_x86_64.nexe: %(VersionDir)s\
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
Expand Down
30 changes: 0 additions & 30 deletions chrome/tools/build/win/create_installer_archive.py
Original file line number Diff line number Diff line change
Expand Up @@ -435,36 +435,6 @@ def CopyIfChanged(src, target_dir):
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."""
Expand Down

0 comments on commit d17a7e3

Please sign in to comment.