|
|
Created:
4 years, 10 months ago by brucedawson Modified:
4 years, 10 months ago CC:
chromium-reviews, scottmg Base URL:
https://chromium.googlesource.com/chromium/src.git@master Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionCopy the Universal CRT files to the output dirs
Chromium component builds rely on the Windows 10 Universal CRT which
must be either installed (problematic) or copied to the directory where
the executables are located. This change copies those files to the
output directories when "gclient runhooks" or "gclient sync" is run.
It also copies ucrtbase.dll to release directories, which was
previously erroneously skipped.
Note that this process doesn't happen and isn't needed when
DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed
to be installed.
This also updates msvs_dependencies.isolate so that the necessary DLLs,
include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming
machines.
TBR=thakis@chromium.org
BUG=440500
Committed: https://crrev.com/d5273ddb31a98cc84c2ec6e74ff0d8ccd5952693
Cr-Commit-Position: refs/heads/master@{#374300}
Patch Set 1 #Patch Set 2 : Pulled latest code #Patch Set 3 : Release directories also, and verbose flag #Patch Set 4 : Copy ucrtbase to release directories also #Patch Set 5 : Add DLLs to msvs_dependencies.isolate for swarming #
Total comments: 10
Patch Set 6 : CR changes and CRLF to LF fixes #
Total comments: 4
Messages
Total messages: 24 (10 generated)
Description was changed from ========== Copy the api-ms-win-*.dll files to the debug dirs Chromium debug binaries rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This copies those files to the debug directories when "gclient runhooks" or "gclient sync" is run. This isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. BUG=440500 ========== to ========== Copy the api-ms-win-*.dll files to the debug dirs Chromium debug binaries rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the debug directories when "gclient runhooks" or "gclient sync" is run. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. BUG=440500 ==========
brucedawson@chromium.org changed reviewers: + thakis@chromium.org
Description was changed from ========== Copy the api-ms-win-*.dll files to the debug dirs Chromium debug binaries rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the debug directories when "gclient runhooks" or "gclient sync" is run. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. BUG=440500 ========== to ========== Copy the api-ms-win-*.dll files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. BUG=440500 ==========
This change is necessary (I've verified that it is needed by testing on a clean Windows 7 VM) but I'm not sure if it is sufficient to fix the GPU test failures from Sunday. The addition of the verbose = True flag is needed because otherwise we get six times 40 extra print lines which is uselessly verbose. PTAL.
thakis@chromium.org changed reviewers: + scottmg@chromium.org
How does this work with swarming? Are all these dlls listed in a .isolate file?
maruel@ - can you comment on the swarming aspects of this change?
maruel@chromium.org changed reviewers: + maruel@chromium.org
Oh my, this is a fair number of "useful libraries" to carry around. You may want also to update GN build as I was told Windows support is nearing being functional. Swarming wise, it'll just work. It's a trivial amount of additional data so it won't have any material impact on performance. https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py File build/vs_toolchain.py (right): https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:155: def _CopyRuntimeImpl(target, source, verbose = True): verbose=True https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:195: ucrt_src_dir = os.path.join(source_dir, "api-ms-win-*.dll") single quote https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:198: file_part = os.path.split(ucrt_src_file)[1] os.path.basename() https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:200: _CopyRuntimeImpl(ucrt_dst_file, ucrt_src_file, verbose = False) remove "verbose = "
https://codereview.chromium.org/1676943002/diff/80001/build/config/win/msvs_d... File build/config/win/msvs_dependencies.isolate (right): https://codereview.chromium.org/1676943002/diff/80001/build/config/win/msvs_d... build/config/win/msvs_dependencies.isolate:83: ['OS=="win" and msvs_version==2015 and component=="shared_library" and (CONFIGURATION_NAME=="Debug or CONFIGURATION_NAME=="Release")', { target_arch=="ia32" is probably a nicer check for 32-bit builds (https://code.google.com/p/chromium/codesearch#search/&q=target_arch%20file:%5...)
It is a lot of extra DLLs to throw around. Luckily the total size of the api-ms-win-* DLLs is only about 920,000 bytes. I addressed the CR suggestions, but I have not managed a successful swarming test yet. https://codereview.chromium.org/1676943002/diff/80001/build/config/win/msvs_d... File build/config/win/msvs_dependencies.isolate (right): https://codereview.chromium.org/1676943002/diff/80001/build/config/win/msvs_d... build/config/win/msvs_dependencies.isolate:83: ['OS=="win" and msvs_version==2015 and component=="shared_library" and (CONFIGURATION_NAME=="Debug or CONFIGURATION_NAME=="Release")', { On 2016/02/08 20:19:57, Nico wrote: > target_arch=="ia32" is probably a nicer check for 32-bit builds > (https://code.google.com/p/chromium/codesearch#search/&q=target_arch%20file:%5...) Done. https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py File build/vs_toolchain.py (right): https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:155: def _CopyRuntimeImpl(target, source, verbose = True): On 2016/02/08 20:19:14, M-A Ruel wrote: > verbose=True Done. https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:195: ucrt_src_dir = os.path.join(source_dir, "api-ms-win-*.dll") On 2016/02/08 20:19:14, M-A Ruel wrote: > single quote Done. https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:198: file_part = os.path.split(ucrt_src_file)[1] On 2016/02/08 20:19:14, M-A Ruel wrote: > os.path.basename() Much better. Done. https://codereview.chromium.org/1676943002/diff/80001/build/vs_toolchain.py#n... build/vs_toolchain.py:200: _CopyRuntimeImpl(ucrt_dst_file, ucrt_src_file, verbose = False) On 2016/02/08 20:19:14, M-A Ruel wrote: > remove "verbose = " Done.
Description was changed from ========== Copy the api-ms-win-*.dll files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. BUG=440500 ========== to ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. BUG=440500 ==========
With much help from maruel@ I tested this change with swarming. The results are: Without this change I consistently get failures with component builds and successes with non-component builds (with VS 2015) as expected. With this change I reliably get successes with component builds. I tested debug, release, debug_x64, and release_x64 component builds (with VS 2015) and they all swarm successfully with this change. I also manually inspected the files that were uploaded and confirmed that the ucrt files were only uploaded for component builds. This change should make no difference to non-VS 2015 builds. thakis@, can you take a look?
ltm
On 2016/02/09 00:16:41, M-A Ruel wrote: > ltm err, lgtm
Description was changed from ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. BUG=440500 ========== to ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. TBR=thakis@chromium.org BUG=440500 ==========
The CQ bit was checked by brucedawson@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1676943002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1676943002/100001
lgtm from me too, but two nits. ok to do these in a follow-up; more important to get 2015 landed first. https://codereview.chromium.org/1676943002/diff/100001/build/config/win/msvs_... File build/config/win/msvs_dependencies.isolate (right): https://codereview.chromium.org/1676943002/diff/100001/build/config/win/msvs_... build/config/win/msvs_dependencies.isolate:178: EMPTY LINE https://codereview.chromium.org/1676943002/diff/100001/build/vs_toolchain.py File build/vs_toolchain.py (right): https://codereview.chromium.org/1676943002/diff/100001/build/vs_toolchain.py#... build/vs_toolchain.py:202: os.path.join(source_dir, 'ucrtbase' + suffix)) shouldn't this blob be in _CopyRuntime2015() (since it's part of what that function advertises to do)? It would also help with the "all parts of a function should use a similar level of abstraction" coding guideline for _CopyRuntime
https://codereview.chromium.org/1676943002/diff/100001/build/config/win/msvs_... File build/config/win/msvs_dependencies.isolate (right): https://codereview.chromium.org/1676943002/diff/100001/build/config/win/msvs_... build/config/win/msvs_dependencies.isolate:178: On 2016/02/09 01:13:37, Nico wrote: > EMPTY LINE Done. In a separate CL. https://codereview.chromium.org/1676943002/diff/100001/build/vs_toolchain.py File build/vs_toolchain.py (right): https://codereview.chromium.org/1676943002/diff/100001/build/vs_toolchain.py#... build/vs_toolchain.py:202: os.path.join(source_dir, 'ucrtbase' + suffix)) On 2016/02/09 01:13:38, Nico wrote: > shouldn't this blob be in _CopyRuntime2015() (since it's part of what that > function advertises to do)? It would also help with the "all parts of a function > should use a similar level of abstraction" coding guideline for _CopyRuntime Yes, you're right. Of course, in a few weeks this will become less relevant as our move to 2015 becomes unstoppable, at which point this may deserve to be outside of the version check in this function, ready to be used in VS 2015 and 2017. Anyway, done, in a separate CL.
Message was sent while issue was closed.
Description was changed from ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. TBR=thakis@chromium.org BUG=440500 ========== to ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. TBR=thakis@chromium.org BUG=440500 ==========
Message was sent while issue was closed.
Committed patchset #6 (id:100001)
Message was sent while issue was closed.
Description was changed from ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. TBR=thakis@chromium.org BUG=440500 ========== to ========== Copy the Universal CRT files to the output dirs Chromium component builds rely on the Windows 10 Universal CRT which must be either installed (problematic) or copied to the directory where the executables are located. This change copies those files to the output directories when "gclient runhooks" or "gclient sync" is run. It also copies ucrtbase.dll to release directories, which was previously erroneously skipped. Note that this process doesn't happen and isn't needed when DEPOT_TOOLS_WIN_TOOLCHAIN=0 is set because then the UCRT is guaranteed to be installed. This also updates msvs_dependencies.isolate so that the necessary DLLs, include vcruntime140*.dll and ucrtbase*.dll, get copied to swarming machines. TBR=thakis@chromium.org BUG=440500 Committed: https://crrev.com/d5273ddb31a98cc84c2ec6e74ff0d8ccd5952693 Cr-Commit-Position: refs/heads/master@{#374300} ==========
Message was sent while issue was closed.
Patchset 6 (id:??) landed as https://crrev.com/d5273ddb31a98cc84c2ec6e74ff0d8ccd5952693 Cr-Commit-Position: refs/heads/master@{#374300} |