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

Unified Diff: test/lib/TestGyp.py

Issue 9433026: Add Windows ninja to buildbot (Closed) Base URL: https://gyp.googlecode.com/svn/trunk
Patch Set: rebase Created 8 years, 10 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 | « buildbot/buildbot_run.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/lib/TestGyp.py
===================================================================
--- test/lib/TestGyp.py (revision 1232)
+++ test/lib/TestGyp.py (working copy)
@@ -410,6 +410,57 @@
return self.workpath(*result)
+def FindVisualStudioInstallation():
+ """Returns appropriate values for .build_tool and .uses_msbuild fields
+ of TestGypBase for Visual Studio.
+
+ We use the value specified by GYP_MSVS_VERSION. If not specified, we
+ search %PATH% and %PATHEXT% for a devenv.{exe,bat,...} executable.
+ Failing that, we search for likely deployment paths.
+ """
+ possible_roots = ['C:\\Program Files (x86)', 'C:\\Program Files',
+ 'E:\\Program Files (x86)', 'E:\\Program Files']
+ possible_paths = {
+ '2010': r'Microsoft Visual Studio 10.0\Common7\IDE\devenv.com',
+ '2008': r'Microsoft Visual Studio 9.0\Common7\IDE\devenv.com',
+ '2005': r'Microsoft Visual Studio 8\Common7\IDE\devenv.com'}
+ msvs_version = os.environ.get('GYP_MSVS_VERSION', 'auto')
+ build_tool = None
+ if msvs_version in possible_paths:
+ # Check that the path to the specified GYP_MSVS_VERSION exists.
+ path = possible_paths[msvs_version]
+ for r in possible_roots:
+ bt = os.path.join(r, path)
+ if os.path.exists(bt):
+ build_tool = bt
+ uses_msbuild = msvs_version >= '2010'
+ return build_tool, uses_msbuild
+ else:
+ print ('Warning: Environment variable GYP_MSVS_VERSION specifies "%s" '
+ 'but corresponding "%s" was not found.' % (msvs_version, path))
+ if build_tool:
+ # We found 'devenv' on the path, use that and try to guess the version.
+ for version, path in possible_paths.iteritems():
+ if build_tool.find(path) >= 0:
+ uses_msbuild = version >= '2010'
+ return build_tool, uses_msbuild
+ else:
+ # If not, assume not MSBuild.
+ uses_msbuild = False
+ return build_tool, uses_msbuild
+ # Neither GYP_MSVS_VERSION nor the path help us out. Iterate through
+ # the choices looking for a match.
+ for version, path in possible_paths.iteritems():
+ for r in possible_roots:
+ bt = os.path.join(r, path)
+ if os.path.exists(bt):
+ build_tool = bt
+ uses_msbuild = msvs_version >= '2010'
+ return build_tool, uses_msbuild
+ print 'Error: could not find devenv'
+ sys.exit(1)
+
+
class TestGypNinja(TestGypBase):
"""
Subclass for testing the GYP Ninja generator.
@@ -419,6 +470,18 @@
ALL = 'all'
DEFAULT = 'all'
+ def initialize_build_tool(self):
+ super(TestGypNinja, self).initialize_build_tool()
+ if sys.platform == 'win32':
+ # Compiler and linker aren't in the path by default on Windows, so we
+ # make our "build tool" be set up + run ninja.
+ devenv_path, _ = FindVisualStudioInstallation()
+ devenv_dir = os.path.split(devenv_path)[0]
+ vsvars_path = os.path.join(devenv_path, '../../Tools/vsvars32.bat')
+ vsvars_path = os.path.normpath(vsvars_path)
+ self.build_tool = os.environ.get('COMSPEC', 'cmd.exe')
+ self.helper_args = ['/c', vsvars_path, '&&', 'ninja']
+
def run_gyp(self, gyp_file, *args, **kw):
TestGypBase.run_gyp(self, gyp_file, *args, **kw)
@@ -433,6 +496,9 @@
target = 'all'
arguments.append(target)
+ if sys.platform == 'win32':
+ arguments = self.helper_args + arguments
+
kw['arguments'] = arguments
return self.run(program=self.build_tool, **kw)
@@ -492,53 +558,8 @@
build_tool_list = [None, 'devenv.com']
def initialize_build_tool(self):
- """ Initializes the Visual Studio .build_tool and .uses_msbuild parameters.
-
- We use the value specified by GYP_MSVS_VERSION. If not specified, we
- search %PATH% and %PATHEXT% for a devenv.{exe,bat,...} executable.
- Failing that, we search for likely deployment paths.
- """
super(TestGypMSVS, self).initialize_build_tool()
- possible_roots = ['C:\\Program Files (x86)', 'C:\\Program Files',
- 'E:\\Program Files (x86)', 'E:\\Program Files']
- possible_paths = {
- '2010': r'Microsoft Visual Studio 10.0\Common7\IDE\devenv.com',
- '2008': r'Microsoft Visual Studio 9.0\Common7\IDE\devenv.com',
- '2005': r'Microsoft Visual Studio 8\Common7\IDE\devenv.com'}
- msvs_version = os.environ.get('GYP_MSVS_VERSION', 'auto')
- if msvs_version in possible_paths:
- # Check that the path to the specified GYP_MSVS_VERSION exists.
- path = possible_paths[msvs_version]
- for r in possible_roots:
- bt = os.path.join(r, path)
- if os.path.exists(bt):
- self.build_tool = bt
- self.uses_msbuild = msvs_version >= '2010'
- return
- else:
- print ('Warning: Environment variable GYP_MSVS_VERSION specifies "%s" '
- 'but corresponding "%s" was not found.' % (msvs_version, path))
- if self.build_tool:
- # We found 'devenv' on the path, use that and try to guess the version.
- for version, path in possible_paths.iteritems():
- if self.build_tool.find(path) >= 0:
- self.uses_msbuild = version >= '2010'
- return
- else:
- # If not, assume not MSBuild.
- self.uses_msbuild = False
- return
- # Neither GYP_MSVS_VERSION nor the path help us out. Iterate through
- # the choices looking for a match.
- for version, path in possible_paths.iteritems():
- for r in possible_roots:
- bt = os.path.join(r, path)
- if os.path.exists(bt):
- self.build_tool = bt
- self.uses_msbuild = msvs_version >= '2010'
- return
- print 'Error: could not find devenv'
- sys.exit(1)
+ self.build_tool, self.uses_msbuild = FindVisualStudioInstallation()
def build(self, gyp_file, target=None, rebuild=False, **kw):
"""
Runs a Visual Studio build using the configuration generated
« no previous file with comments | « buildbot/buildbot_run.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698