Chromium Code Reviews| Index: win_toolchain/package_from_installed.py |
| diff --git a/win_toolchain/package_from_installed.py b/win_toolchain/package_from_installed.py |
| index e2785d722003ee44c3bc68f793fbc1bc72a441fe..42ea4aefd83a44078ba7bc4144b2838805c95438 100644 |
| --- a/win_toolchain/package_from_installed.py |
| +++ b/win_toolchain/package_from_installed.py |
| @@ -21,7 +21,9 @@ useful as the resulting zip can't be redistributed, and most will presumably |
| have a Pro license anyway). |
| """ |
| +import collections |
| import glob |
| +import json |
| import optparse |
| import os |
| import platform |
| @@ -214,15 +216,15 @@ def GenerateSetEnvCmd(target_dir): |
| ['..', '..', 'VC', 'atlmfc', 'include'], |
| ]) |
| # Common to x86 and x64 |
| - env = [ |
| + env = collections.OrderedDict([ |
| # Yuck: These two have a trailing \ character. No good way to represent this |
| # in an OS-independent way. |
| ('VSINSTALLDIR', [['..', '..\\']]), |
| ('VCINSTALLDIR', [['..', '..', 'VC\\']]), |
| ('INCLUDE', include_dirs), |
| - ] |
| + ]) |
| # x86. Always use amd64_x86 cross, not x86 on x86. |
| - env_x86 = [ |
| + env_x86 = collections.OrderedDict([ |
| ('PATH', [ |
| ['..', '..', 'win_sdk', 'bin', 'x86'], |
| ['..', '..', 'VC', 'bin', 'amd64_x86'], |
| @@ -234,9 +236,9 @@ def GenerateSetEnvCmd(target_dir): |
| ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x86'], # VS 2015 |
| ['..', '..', 'VC', 'atlmfc', 'lib'], |
| ]), |
| - ] |
| + ]) |
| # x64. |
| - env_x64 = [ |
| + env_x64 = collections.OrderedDict([ |
| ('PATH', [ |
| ['..', '..', 'win_sdk', 'bin', 'x64'], |
| ['..', '..', 'VC', 'bin', 'amd64'], |
| @@ -247,25 +249,32 @@ def GenerateSetEnvCmd(target_dir): |
| ['..', '..', 'win_sdk', 'Lib', WIN_VERSION, 'ucrt', 'x64'], # VS 2015 |
| ['..', '..', 'VC', 'atlmfc', 'lib', 'amd64'], |
| ]), |
| - ] |
| + ]) |
| def BatDirs(dirs): |
| return ';'.join(['%~dp0' + os.path.join(*d) for d in dirs]) |
| - with open(os.path.join(target_dir, r'win_sdk\bin\SetEnv.cmd'), 'w') as f: |
| + set_env_prefix = os.path.join(target_dir, r'win_sdk\bin\SetEnv') |
| + with open(set_env_prefix + '.cmd', 'w') as f: |
| f.write('@echo off\n' |
| ':: Generated by win_toolchain\\package_from_installed.py.\n') |
| - for var, dirs in env: |
| + for var, dirs in env.iteritems(): |
| f.write('set %s=%s\n' % (var, BatDirs(dirs))) |
| f.write('if "%1"=="/x64" goto x64\n') |
| - for var, dirs in env_x86: |
| + for var, dirs in env_x86.iteritems(): |
| f.write('set %s=%s%s\n' % ( |
| var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else '')) |
| f.write('goto :EOF\n') |
| f.write(':x64\n') |
| - for var, dirs in env_x64: |
| + for var, dirs in env_x64.iteritems(): |
| f.write('set %s=%s%s\n' % ( |
| var, BatDirs(dirs), ';%PATH%' if var == 'PATH' else '')) |
| + with open(set_env_prefix + '.x86.json', 'w') as f: |
|
scottmg
2016/02/18 20:11:43
Do we want 'wb' for these so that there's not \r's
Nico
2016/02/18 20:14:41
Sure, done. (In practice there are no newlines in
|
| + assert not set(env.keys()) & set(env_x86.keys()), 'dupe keys' |
| + json.dump(collections.OrderedDict(env.items() + env_x86.items()), f) |
| + with open(set_env_prefix + '.x64.json', 'w') as f: |
| + assert not set(env.keys()) & set(env_x64.keys()), 'dupe keys' |
| + json.dump(collections.OrderedDict(env.items() + env_x64.items()), f) |
| def AddEnvSetup(files): |