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

Side by Side Diff: build/mac/tweak_info_plist.py

Issue 2044893002: Fix version format used on iOS by build/mac/tweak_info_plist.py. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 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 | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # 7 #
8 # Xcode supports build variable substitutions and CPP; sadly, that doesn't work 8 # Xcode supports build variable substitutions and CPP; sadly, that doesn't work
9 # because: 9 # because:
10 # 10 #
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 """ 79 """
80 if not overrides: 80 if not overrides:
81 return version 81 return version
82 version_values = version.split(separator) 82 version_values = version.split(separator)
83 for i, (key, value) in enumerate(zip(keys, version_values)): 83 for i, (key, value) in enumerate(zip(keys, version_values)):
84 if key in overrides: 84 if key in overrides:
85 version_values[i] = overrides[key] 85 version_values[i] = overrides[key]
86 return separator.join(version_values) 86 return separator.join(version_values)
87 87
88 88
89 def _AddVersionKeys(plist, version=None, overrides=None): 89 def _GetVersion(version_format, values, overrides=None):
90 """Generates a version number according to |version_format| using the values
91 from |values| or |overrides| if given."""
92 print version_format, values, overrides
Olivier 2016/06/07 14:51:24 des bugs ?
sdefresne 2016/06/07 14:57:36 Good catch. Done.
93 result = version_format
94 for key in values:
95 if overrides and key in overrides:
96 value = overrides[key]
97 else:
98 value = values[key]
99 print 'result = %r.replace(\'@%%s@\' %% %r, %r)' % (result, key, value)
Olivier 2016/06/07 14:51:24 ditto
sdefresne 2016/06/07 14:57:36 Done.
100 result = result.replace('@%s@' % key, value)
101 print result
Olivier 2016/06/07 14:51:24 ditto
sdefresne 2016/06/07 14:57:36 Done.
102 return result
103
104
105 def _AddVersionKeys(
106 plist, version_format_for_key, version=None, overrides=None):
90 """Adds the product version number into the plist. Returns True on success and 107 """Adds the product version number into the plist. Returns True on success and
91 False on error. The error will be printed to stderr.""" 108 False on error. The error will be printed to stderr."""
92 if version: 109 if not version:
93 match = re.match('\d+\.\d+\.(\d+\.\d+)$', version)
94 if not match:
95 print >>sys.stderr, 'Invalid version string specified: "%s"' % version
96 return False
97
98 full_version = match.group(0)
99 bundle_version = match.group(1)
100
101 else:
102 # Pull in the Chrome version number. 110 # Pull in the Chrome version number.
103 VERSION_TOOL = os.path.join(TOP, 'build/util/version.py') 111 VERSION_TOOL = os.path.join(TOP, 'build/util/version.py')
104 VERSION_FILE = os.path.join(TOP, 'chrome/VERSION') 112 VERSION_FILE = os.path.join(TOP, 'chrome/VERSION')
113 (stdout, retval) = _GetOutput([
114 VERSION_TOOL, '-f', VERSION_FILE,
115 '-t', '@MAJOR@.@MINOR@.@BUILD@.@PATCH@'])
105 116
106 (stdout, retval1) = _GetOutput([VERSION_TOOL, '-f', VERSION_FILE, '-t', 117 # If the command finished with a non-zero return code, then report the
107 '@MAJOR@.@MINOR@.@BUILD@.@PATCH@']) 118 # error up.
108 full_version = _ApplyVersionOverrides( 119 if retval != 0:
109 stdout.rstrip(), ('MAJOR', 'MINOR', 'BUILD', 'PATCH'), overrides)
110
111 (stdout, retval2) = _GetOutput([VERSION_TOOL, '-f', VERSION_FILE, '-t',
112 '@BUILD@.@PATCH@'])
113 bundle_version = _ApplyVersionOverrides(
114 stdout.rstrip(), ('BUILD', 'PATCH'), overrides)
115
116 # If either of the two version commands finished with non-zero returncode,
117 # report the error up.
118 if retval1 or retval2:
119 return False 120 return False
120 121
121 # Add public version info so "Get Info" works. 122 version = stdout.strip()
122 plist['CFBundleShortVersionString'] = full_version
123 123
124 # Honor the 429496.72.95 limit. The maximum comes from splitting 2^32 - 1 124 # Parse the given version number, that should be in MAJOR.MINOR.BUILD.PATCH
125 # into 6, 2, 2 digits. The limitation was present in Tiger, but it could 125 # format (where each value is a number). Note that str.isdigit() returns
126 # have been fixed in later OS release, but hasn't been tested (it's easy 126 # True if the string is composed only of digits (and thus match \d+ regexp).
127 # enough to find out with "lsregister -dump). 127 groups = version.split('.')
128 # http://lists.apple.com/archives/carbon-dev/2006/Jun/msg00139.html 128 if len(groups) != 4 or not all(element.isdigit() for element in groups):
129 # BUILD will always be an increasing value, so BUILD_PATH gives us something 129 print >>sys.stderr, 'Invalid version string specified: "%s"' % version
130 # unique that meetings what LS wants. 130 return False
131 plist['CFBundleVersion'] = bundle_version 131 values = dict(zip(('MAJOR', 'MINOR', 'BUILD', 'PATCH'), groups))
132
133 for key in ('CFBundleVersion', 'CFBundleShortVersionString'):
134 plist[key] = _GetVersion(version_format_for_key[key], values, overrides)
132 135
133 # Return with no error. 136 # Return with no error.
134 return True 137 return True
135 138
136 139
137 def _DoSCMKeys(plist, add_keys): 140 def _DoSCMKeys(plist, add_keys):
138 """Adds the SCM information, visible in about:version, to property list. If 141 """Adds the SCM information, visible in about:version, to property list. If
139 |add_keys| is True, it will insert the keys, otherwise it will remove them.""" 142 |add_keys| is True, it will insert the keys, otherwise it will remove them."""
140 scm_revision = None 143 scm_revision = None
141 if add_keys: 144 if add_keys:
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 for pair in options.version_overrides: 285 for pair in options.version_overrides:
283 if not '=' in pair: 286 if not '=' in pair:
284 print >>sys.stderr, 'Invalid value for --version-overrides:', pair 287 print >>sys.stderr, 'Invalid value for --version-overrides:', pair
285 return 1 288 return 1
286 key, value = pair.split('=', 1) 289 key, value = pair.split('=', 1)
287 overrides[key] = value 290 overrides[key] = value
288 if key not in ('MAJOR', 'MINOR', 'BUILD', 'PATCH'): 291 if key not in ('MAJOR', 'MINOR', 'BUILD', 'PATCH'):
289 print >>sys.stderr, 'Unsupported key for --version-overrides:', key 292 print >>sys.stderr, 'Unsupported key for --version-overrides:', key
290 return 1 293 return 1
291 294
295 if options.platform == 'mac':
296 version_format_for_key = {
297 # Add public version info so "Get Info" works.
298 'CFBundleShortVersionString': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@',
299
300 # Honor the 429496.72.95 limit. The maximum comes from splitting 2^32 - 1
301 # into 6, 2, 2 digits. The limitation was present in Tiger, but it could
302 # have been fixed in later OS release, but hasn't been tested (it's easy
303 # enough to find out with "lsregister -dump).
304 # http://lists.apple.com/archives/carbon-dev/2006/Jun/msg00139.html
305 # BUILD will always be an increasing value, so BUILD_PATH gives us
306 # something unique that meetings what LS wants.
307 'CFBundleVersion': '@BUILD@.@PATCH@',
308 }
309 else:
310 version_format_for_key = {
311 'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@',
312 'CFBundleVersion': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@'
313 }
314
292 # Insert the product version. 315 # Insert the product version.
293 if not _AddVersionKeys(plist, version=options.version, overrides=overrides): 316 if not _AddVersionKeys(
317 plist, version_format_for_key, version=options.version,
318 overrides=overrides):
294 return 2 319 return 2
295 320
296 # Add Breakpad if configured to do so. 321 # Add Breakpad if configured to do so.
297 if options.use_breakpad: 322 if options.use_breakpad:
298 if options.branding is None: 323 if options.branding is None:
299 print >>sys.stderr, 'Use of Breakpad requires branding.' 324 print >>sys.stderr, 'Use of Breakpad requires branding.'
300 return 1 325 return 1
301 # Map gyp "OS" / gn "target_os" passed via the --platform parameter to 326 # Map gyp "OS" / gn "target_os" passed via the --platform parameter to
302 # the platform as known by breakpad. 327 # the platform as known by breakpad.
303 platform = {'mac': 'Mac', 'ios': 'iOS'}[options.platform] 328 platform = {'mac': 'Mac', 'ios': 'iOS'}[options.platform]
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 with tempfile.NamedTemporaryFile() as temp_info_plist: 361 with tempfile.NamedTemporaryFile() as temp_info_plist:
337 plistlib.writePlist(plist, temp_info_plist.name) 362 plistlib.writePlist(plist, temp_info_plist.name)
338 363
339 # Convert Info.plist to the format requested by the --format flag. Any 364 # Convert Info.plist to the format requested by the --format flag. Any
340 # format would work on Mac but iOS requires specific format. 365 # format would work on Mac but iOS requires specific format.
341 return _ConvertPlist(temp_info_plist.name, output_path, options.format) 366 return _ConvertPlist(temp_info_plist.name, output_path, options.format)
342 367
343 368
344 if __name__ == '__main__': 369 if __name__ == '__main__':
345 sys.exit(Main(sys.argv[1:])) 370 sys.exit(Main(sys.argv[1:]))
OLDNEW
« 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