VS 2015 toolchain build is not reproducible |
||
Issue description
Every machine that tries to package the VS 2015 toolchain will get a different result. This is because nineteen bytes in this file:
c:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd
are different on every machine that gets VC++ 2015 installed on it. This means that the current toolchain has the 'fingerprint' of the VM that was used to make it.
Additionally, a VC\bin\readme.txt file was inadvertently packaged along with the toolchain.
I have code that fixes up the Windows.winmd file. However, without the readme.txt file it is impossible to reproduce our current hash. Therefore we probably need to push out a new toolchain hash, with the Windows.winmd patches (doesn't actually change the hash) and without the readme.txt file. This would also be a good time to remove the Universal Windows 10 CRT installers, and make any other cleanup changes.
It is unfortunate that this will require pushing a new toolchain to all Google employee Chrome developers.
Any thoughts?
,
Apr 26 2016
I managed to get identical results on two machines after patching the differences mentioned above. On a third machine I hit these seven additional files: '.\win_sdk\bin\x86\838060235bcd28bf40ef7532c50ee032.cab' '.\win_sdk\bin\x86\8e4755178e6b5bcba8d3538c3630b7a5.cab' '.\win_sdk\bin\x86\a35cd6c9233b6ba3da66eecaa9190436.cab' '.\win_sdk\bin\x86\b80b7321357f7c9f281536f9440dfe68.cab' '.\win_sdk\bin\x86\c2aabf6ea5c1d348ec22f3aeb92f8656.cab' '.\win_sdk\bin\x86\fe38b2fd0d440e3c6740b626f51a22fc.cab' '.\win_sdk\Catalogs\catdc86ee34899e6e0001d3395f612dccec.cat' This machine has had multiple versions of VS installed, including Update 2 RC, so presumably one of those intermediate steps led to these extra files. With those deleted, the readme copied over, and the patch in 1916983003 applied I then got consistent results.
,
May 31 2016
This bug was fixed as part of an update to the packaging script: Update toolchain packaging to support VC++ preview toolsets This change adds a --override option to the VC++ packaging script so that an arbitrary bin/include/lib containing directory can be used to package up those components of VC++. See this post for details: https://blogs.msdn.microsoft.com/vcblog/2016/02/16/try-out-the-latest-c-compiler-toolset-without-waiting-for- Typical usage is like this: package_from_installed.py 2015 --override <projdir>\packages\VisualCppTools.14.0.24109-Pre\lib\native In order to make this work the path tuple support was fixed so that the local relative path was propagated to the destination path, instead of just the file name. At the same time, the code to package up the UCRT installers was deleted because it isn't needed, and windows.winmd is filtered out because it makes consistent package creation impossible (it is different on every machine). While removing the UCRT installers I discovered nested if VS_VERSION checks. Oops. Fixed. BUG= 440500 Review-Url: https://codereview.chromium.org/1967653002 git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@300527 0039d316-1c4b-4281-b951-d872f2087c98 |
||
►
Sign in to add a comment |
||
Comment 1 by scottmg@chromium.org
, Apr 25 2016