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

Side by Side Diff: pylib/gyp/generator/msvs.py

Issue 1188553003: MSVS: Normalize paths against gyp directory. (Closed) Base URL: http://chromium.googlesource.com/external/gyp@master
Patch Set: With git add of new file Created 5 years, 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | test/msvs/filters/gyptest-filters-2010.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import copy 5 import copy
6 import ntpath 6 import ntpath
7 import os 7 import os
8 import posixpath 8 import posixpath
9 import re 9 import re
10 import subprocess 10 import subprocess
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 domain_match = domain_re.search(config) 127 domain_match = domain_re.search(config)
128 if domain_match: 128 if domain_match:
129 domain = domain_match.group(1) 129 domain = domain_match.group(1)
130 cached_domain = domain 130 cached_domain = domain
131 cached_username = username 131 cached_username = username
132 return (cached_domain, cached_username) 132 return (cached_domain, cached_username)
133 133
134 fixpath_prefix = None 134 fixpath_prefix = None
135 135
136 136
137 def _NormalizedSource(source): 137 def _NormalizedSource(source, curdir=None):
138 """Normalize the path. 138 """Normalize the path.
139 139
140 But not if that gets rid of a variable, as this may expand to something 140 But not if that gets rid of a variable, as this may expand to something
141 larger than one directory. 141 larger than one directory.
142 142
143 Arguments: 143 Arguments:
144 source: The path to be normalize.d 144 source: The path to be normalized
145 curdir: Current direcory to normalize against (optional)
145 146
146 Returns: 147 Returns:
147 The normalized path. 148 The normalized path.
148 """ 149 """
149 normalized = os.path.normpath(source) 150 normalized = os.path.normpath(source)
151 if curdir:
152 normalized = os.path.normpath(os.path.join(curdir, normalized))
153 normalized = os.path.relpath(normalized, curdir)
150 if source.count('$') == normalized.count('$'): 154 if source.count('$') == normalized.count('$'):
151 source = normalized 155 source = normalized
152 return source 156 return source
153 157
154 158
155 def _FixPath(path): 159 def _FixPath(path, curdir = None):
scottmg 2015/06/15 23:04:00 no spaces here (sorry, I know it's annoying)
Jamie Madill 2015/06/15 23:08:37 Done.
156 """Convert paths to a form that will make sense in a vcproj file. 160 """Convert paths to a form that will make sense in a vcproj file.
157 161
158 Arguments: 162 Arguments:
159 path: The path to convert, may contain / etc. 163 path: The path to convert, may contain / etc.
164 curdir: Current directory of path (optional)
160 Returns: 165 Returns:
161 The path with all slashes made into backslashes. 166 The path with all slashes made into backslashes.
162 """ 167 """
163 if fixpath_prefix and path and not os.path.isabs(path) and not path[0] == '$': 168 if fixpath_prefix and path and not os.path.isabs(path) and not path[0] == '$':
164 path = os.path.join(fixpath_prefix, path) 169 path = os.path.join(fixpath_prefix, path)
165 path = path.replace('/', '\\') 170 path = path.replace('/', '\\')
166 path = _NormalizedSource(path) 171 path = _NormalizedSource(path, curdir)
167 if path and path[-1] == '\\': 172 if path and path[-1] == '\\':
168 path = path[:-1] 173 path = path[:-1]
169 return path 174 return path
170 175
171 176
172 def _FixPaths(paths): 177 def _FixPaths(paths, curdir=None):
173 """Fix each of the paths of the list.""" 178 """Fix each of the paths of the list."""
174 return [_FixPath(i) for i in paths] 179 return [_FixPath(i, curdir) for i in paths]
175 180
176 181
177 def _ConvertSourcesToFilterHierarchy(sources, prefix=None, excluded=None, 182 def _ConvertSourcesToFilterHierarchy(sources, prefix=None, excluded=None,
178 list_excluded=True, msvs_version=None): 183 list_excluded=True, msvs_version=None):
179 """Converts a list split source file paths into a vcproj folder hierarchy. 184 """Converts a list split source file paths into a vcproj folder hierarchy.
180 185
181 Arguments: 186 Arguments:
182 sources: A list of source file paths split. 187 sources: A list of source file paths split.
183 prefix: A list of source file path layers meant to apply to each of sources. 188 prefix: A list of source file path layers meant to apply to each of sources.
184 excluded: A set of excluded files. 189 excluded: A set of excluded files.
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 A trio of (list of sources, list of excluded sources, 1477 A trio of (list of sources, list of excluded sources,
1473 path of excluded IDL file) 1478 path of excluded IDL file)
1474 """ 1479 """
1475 # Exclude excluded sources coming into the generator. 1480 # Exclude excluded sources coming into the generator.
1476 excluded_sources.update(OrderedSet(spec.get('sources_excluded', []))) 1481 excluded_sources.update(OrderedSet(spec.get('sources_excluded', [])))
1477 # Add excluded sources into sources for good measure. 1482 # Add excluded sources into sources for good measure.
1478 sources.update(excluded_sources) 1483 sources.update(excluded_sources)
1479 # Convert to proper windows form. 1484 # Convert to proper windows form.
1480 # NOTE: sources goes from being a set to a list here. 1485 # NOTE: sources goes from being a set to a list here.
1481 # NOTE: excluded_sources goes from being a set to a list here. 1486 # NOTE: excluded_sources goes from being a set to a list here.
1482 sources = _FixPaths(sources) 1487 sources = _FixPaths(sources, _FixPath(gyp_dir))
1483 # Convert to proper windows form. 1488 # Convert to proper windows form.
1484 excluded_sources = _FixPaths(excluded_sources) 1489 excluded_sources = _FixPaths(excluded_sources)
1485 1490
1486 excluded_idl = _IdlFilesHandledNonNatively(spec, sources) 1491 excluded_idl = _IdlFilesHandledNonNatively(spec, sources)
1487 1492
1488 precompiled_related = _GetPrecompileRelatedFiles(spec) 1493 precompiled_related = _GetPrecompileRelatedFiles(spec)
1489 # Find the excluded ones, minus the precompiled header related ones. 1494 # Find the excluded ones, minus the precompiled header related ones.
1490 fully_excluded = [i for i in excluded_sources if i not in precompiled_related] 1495 fully_excluded = [i for i in excluded_sources if i not in precompiled_related]
1491 1496
1492 # Convert to folders and the right slashes. 1497 # Convert to folders and the right slashes.
(...skipping 1935 matching lines...) Expand 10 before | Expand all | Expand 10 after
3428 action_spec.extend( 3433 action_spec.extend(
3429 # TODO(jeanluc) 'Document' for all or just if as_sources? 3434 # TODO(jeanluc) 'Document' for all or just if as_sources?
3430 [['FileType', 'Document'], 3435 [['FileType', 'Document'],
3431 ['Command', command], 3436 ['Command', command],
3432 ['Message', description], 3437 ['Message', description],
3433 ['Outputs', outputs] 3438 ['Outputs', outputs]
3434 ]) 3439 ])
3435 if additional_inputs: 3440 if additional_inputs:
3436 action_spec.append(['AdditionalInputs', additional_inputs]) 3441 action_spec.append(['AdditionalInputs', additional_inputs])
3437 actions_spec.append(action_spec) 3442 actions_spec.append(action_spec)
OLDNEW
« no previous file with comments | « no previous file | test/msvs/filters/gyptest-filters-2010.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698