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

Unified Diff: pylib/gyp/generator/msvs.py

Issue 10306013: MSVS: Fix to ensure that actions are re-run when the action command changes (Closed) Base URL: http://git.chromium.org/external/gyp.git@master
Patch Set: Tidy Created 8 years, 8 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 | test/actions-args-change/gyptest-all.py » ('j') | test/actions-args-change/gyptest-all.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pylib/gyp/generator/msvs.py
diff --git a/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py
index c61142ea9748f9e6975d8cfb8ee3898be5c3983b..1c8da9b8eeb24feb2356d8e16157a9f56150cbe4 100644
--- a/pylib/gyp/generator/msvs.py
+++ b/pylib/gyp/generator/msvs.py
@@ -878,8 +878,8 @@ def _GenerateMSVSProject(project, options, version, generator_flags):
# Get directory project file is in.
project_dir = os.path.split(project.path)[0]
- gyp_path = _NormalizedSource(project.build_file)
- relative_path_of_gyp_file = gyp.common.RelativePath(gyp_path, project_dir)
+ relative_path_of_vcproj_file = \
+ gyp.common.RelativePath(project.path, project_dir)
config_type = _GetMSVSConfigurationType(spec, project.build_file)
for config_name, config in spec['configurations'].iteritems():
@@ -905,7 +905,7 @@ def _GenerateMSVSProject(project, options, version, generator_flags):
_AddToolFilesToMSVS(p, spec)
_HandlePreCompiledHeaders(p, sources, spec)
- _AddActions(actions_to_add, spec, relative_path_of_gyp_file)
+ _AddActions(actions_to_add, spec, relative_path_of_vcproj_file)
_AddCopies(actions_to_add, spec)
_WriteMSVSUserFile(project.path, version, spec)
@@ -1441,13 +1441,17 @@ def _HandlePreCompiledHeaders(p, sources, spec):
DisableForSourceTree(sources)
-def _AddActions(actions_to_add, spec, relative_path_of_gyp_file):
+def _AddActions(actions_to_add, spec, relative_path_of_project_file):
# Add actions.
actions = spec.get('actions', [])
for a in actions:
cmd = _BuildCommandLineForRule(spec, a, has_input_path=False)
- # Attach actions to the gyp file if nothing else is there.
- inputs = a.get('inputs') or [relative_path_of_gyp_file]
+ # We mark the project file as a dependency of the action so that
+ # when the action's command changes, the action will get re-run
+ # even if no other input files change. However, this will re-run
+ # unchanged actions unnecessarily when the project file changes.
+ # TODO(mseaborn): Detect changes at a finer granularity.
+ inputs = a.get('inputs') + [relative_path_of_project_file]
# Add the action.
_AddActionStep(actions_to_add,
inputs=inputs,
@@ -2892,9 +2896,6 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
if msbuildproj_dir and not os.path.exists(msbuildproj_dir):
os.makedirs(msbuildproj_dir)
# Prepare list of sources and excluded sources.
- gyp_path = _NormalizedSource(project.build_file)
- relative_path_of_gyp_file = gyp.common.RelativePath(gyp_path, project_dir)
-
gyp_file = os.path.split(project.build_file)[1]
sources, excluded_sources = _PrepareListOfSources(spec, gyp_file)
# Add rules.
@@ -2912,7 +2913,7 @@ def _GenerateMSBuildProject(project, options, version, generator_flags):
project_dir, sources,
excluded_sources,
list_excluded))
- _AddActions(actions_to_add, spec, project.build_file)
+ _AddActions(actions_to_add, spec, project.path)
jeanluc1 2012/05/02 23:13:52 I'm not sure if there's a reason why MSVS uses rel
Mark Seaborn 2012/05/02 23:38:32 I have no idea. I don't have MSVS 2010 installed
jeanluc1 2012/05/02 23:50:24 If the 2010 trybot is happy, that's sufficient for
_AddCopies(actions_to_add, spec)
# NOTE: this stanza must appear after all actions have been decided.
« no previous file with comments | « no previous file | test/actions-args-change/gyptest-all.py » ('j') | test/actions-args-change/gyptest-all.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698