Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(521)

Unified Diff: win_toolchain/package_from_installed.py

Issue 1967653002: Update toolchain packaging to support VC++ preview toolsets (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Code review tweaks Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: win_toolchain/package_from_installed.py
diff --git a/win_toolchain/package_from_installed.py b/win_toolchain/package_from_installed.py
index c1f5e809bdb40af6092247fa7168e0dd023d5292..7c8d7134860affdc296068c924efa283fec45d63 100644
--- a/win_toolchain/package_from_installed.py
+++ b/win_toolchain/package_from_installed.py
@@ -39,7 +39,7 @@ VS_VERSION = None
WIN_VERSION = None
-def BuildFileList():
+def BuildFileList(override_dir):
result = []
# Subset of VS corresponding roughly to VC.
@@ -49,13 +49,23 @@ def BuildFileList():
'DIA SDK/include',
'DIA SDK/lib',
'VC/atlmfc',
- 'VC/bin',
'VC/crt',
- 'VC/include',
- 'VC/lib',
'VC/redist',
]
+ if override_dir:
+ paths += [
+ (os.path.join(override_dir, 'bin'), 'VC/bin'),
+ (os.path.join(override_dir, 'include'), 'VC/include'),
+ (os.path.join(override_dir, 'lib'), 'VC/lib'),
+ ]
+ else:
+ paths += [
+ 'VC/bin',
+ 'VC/include',
+ 'VC/lib',
+ ]
+
if VS_VERSION == '2013':
paths += [
('VC/redist/x86/Microsoft.VC120.CRT', 'sys32'),
@@ -92,14 +102,18 @@ def BuildFileList():
for path in paths:
src = path[0] if isinstance(path, tuple) else path
- combined = os.path.join(vs_path, src)
+ # Note that vs_path is ignored if src is an absolute path.
+ # normpath is needed to change '/' to '\\' characters.
+ combined = os.path.normpath(os.path.join(vs_path, src))
assert os.path.exists(combined) and os.path.isdir(combined)
for root, _, files in os.walk(combined):
for f in files:
final_from = os.path.normpath(os.path.join(root, f))
if isinstance(path, tuple):
+ assert final_from.startswith(combined)
+ dest = final_from[len(combined) + 1:]
result.append(
- (final_from, os.path.normpath(os.path.join(path[1], f))))
+ (final_from, os.path.normpath(os.path.join(path[1], dest))))
else:
assert final_from.startswith(vs_path)
dest = final_from[len(vs_path) + 1:]
@@ -140,61 +154,44 @@ def BuildFileList():
result.append((combined, to))
if VS_VERSION == '2015':
- # The Windows 10 Universal C Runtime installers are needed when packaging
- # VS 2015. They can be download from here:
- # https://support.microsoft.com/en-us/kb/2999226
- # and they must be downloaded to the current user's downloads directory.
- # The versions needed are those for 64-bit Windows 7, Windows 8, and
- # Windows 8.1. The 64-bit Server 2008 R2, Server 2012, and Server 2012 R2
- # versions are identical (same name and contents).
- universal_runtime_installers = [
- 'Windows6.1-KB2999226-x64.msu',
- 'Windows8-RT-KB2999226-x64.msu',
- 'Windows8.1-KB2999226-x64.msu',
+ # Copy the x86 ucrt DLLs to all directories with 32-bit binaries that are
+ # added to the path by SetEnv.cmd, and to sys32.
+ ucrt_paths = glob.glob(os.path.join(sdk_path, r'redist\ucrt\dlls\x86\*'))
+ for ucrt_path in ucrt_paths:
+ ucrt_file = os.path.split(ucrt_path)[1]
+ for dest_dir in [ r'win_sdk\bin\x86', 'sys32' ]:
+ result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
+
+ # Copy the x64 ucrt DLLs to all directories with 64-bit binaries that are
+ # added to the path by SetEnv.cmd, and to sys64.
+ ucrt_paths = glob.glob(os.path.join(sdk_path, r'redist\ucrt\dlls\x64\*'))
+ for ucrt_path in ucrt_paths:
+ ucrt_file = os.path.split(ucrt_path)[1]
+ for dest_dir in [ r'VC\bin\amd64_x86', r'VC\bin\amd64',
+ r'win_sdk\bin\x64', 'sys64']:
+ result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
+
+ system_crt_files = [
+ # Needed to let debug binaries run.
+ 'ucrtbased.dll',
]
-
- for installer in universal_runtime_installers:
- result.append((os.path.join(os.environ['userprofile'], 'downloads',
- installer),
- os.path.join('installers', installer)))
-
- if VS_VERSION == '2015':
- # Copy the x86 ucrt DLLs to all directories with 32-bit binaries that are
- # added to the path by SetEnv.cmd, and to sys32.
- ucrt_paths = glob.glob(os.path.join(sdk_path, r'redist\ucrt\dlls\x86\*'))
- for ucrt_path in ucrt_paths:
- ucrt_file = os.path.split(ucrt_path)[1]
- for dest_dir in [ r'win_sdk\bin\x86', 'sys32' ]:
- result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
-
- # Copy the x64 ucrt DLLs to all directories with 64-bit binaries that are
- # added to the path by SetEnv.cmd, and to sys64.
- ucrt_paths = glob.glob(os.path.join(sdk_path, r'redist\ucrt\dlls\x64\*'))
- for ucrt_path in ucrt_paths:
- ucrt_file = os.path.split(ucrt_path)[1]
- for dest_dir in [ r'VC\bin\amd64_x86', r'VC\bin\amd64',
- r'win_sdk\bin\x64', 'sys64']:
- result.append((ucrt_path, os.path.join(dest_dir, ucrt_file)))
-
- system_crt_files = [
- # Needed to let debug binaries run.
- 'ucrtbased.dll',
- ]
- bitness = platform.architecture()[0]
- # When running 64-bit python the x64 DLLs will be in System32
- x64_path = 'System32' if bitness == '64bit' else 'Sysnative'
- x64_path = os.path.join(r'C:\Windows', x64_path)
- for system_crt_file in system_crt_files:
- result.append((os.path.join(r'C:\Windows\SysWOW64', system_crt_file),
- os.path.join('sys32', system_crt_file)))
- result.append((os.path.join(x64_path, system_crt_file),
- os.path.join('sys64', system_crt_file)))
+ bitness = platform.architecture()[0]
+ # When running 64-bit python the x64 DLLs will be in System32
+ x64_path = 'System32' if bitness == '64bit' else 'Sysnative'
+ x64_path = os.path.join(r'C:\Windows', x64_path)
+ for system_crt_file in system_crt_files:
+ result.append((os.path.join(r'C:\Windows\SysWOW64', system_crt_file),
+ os.path.join('sys32', system_crt_file)))
+ result.append((os.path.join(x64_path, system_crt_file),
+ os.path.join('sys64', system_crt_file)))
# Generically drop all arm stuff that we don't need, and
- # drop .msi files because we don't need installers.
+ # drop .msi files because we don't need installers, and drop windows.winmd
+ # because it is unneeded and is different on every machine.
return [(f, t) for f, t in result if 'arm\\' not in f.lower() and
'arm64\\' not in f.lower() and
- not f.lower().endswith('.msi')]
+ not f.lower().endswith('.msi') and
+ not f.lower().endswith('windows.winmd')]
def GenerateSetEnvCmd(target_dir):
@@ -329,6 +326,9 @@ def main():
parser.add_option('-d', '--dryrun', action='store_true', dest='dryrun',
default=False,
help='scan for file existence and prints statistics')
+ parser.add_option('--override', action='store', type='string',
+ dest='override_dir', default=None,
+ help='Specify alternate bin/include/lib directory')
(options, args) = parser.parse_args()
if len(args) != 1 or args[0] not in ('2013', '2015'):
@@ -336,13 +336,20 @@ def main():
parser.print_help();
return 1
+ if options.override_dir:
+ if (not os.path.exists(os.path.join(options.override_dir, 'bin')) or
+ not os.path.exists(os.path.join(options.override_dir, 'include')) or
+ not os.path.exists(os.path.join(options.override_dir, 'lib'))):
+ print 'Invalid override directory - must contain bin/include/lib dirs'
+ return 1
+
global VS_VERSION
VS_VERSION = args[0]
global WIN_VERSION
WIN_VERSION = options.winver
print 'Building file list for VS %s Windows %s...' % (VS_VERSION, WIN_VERSION)
- files = BuildFileList()
+ files = BuildFileList(options.override_dir)
AddEnvSetup(files)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698