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

Side by Side Diff: webkit/build/webkit_version.py

Issue 14096010: Remove Chromium dependency on WebCore/Configurations/Version.xcconfig file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove a bogus comment Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | webkit/user_agent/webkit_user_agent.gypi » ('j') | 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 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 '''Reads the Webkit Version.xcconfig file looking for MAJOR_VERSION and 6 '''Emits a webkit_version.h header file with
7 MINOR_VERSION, emitting them into a webkit_version.h header file as
8 WEBKIT_MAJOR_VERSION and WEBKIT_MINOR_VERSION macros. 7 WEBKIT_MAJOR_VERSION and WEBKIT_MINOR_VERSION macros.
9 ''' 8 '''
10 9
11 import os 10 import os
12 import re 11 import re
13 import sys 12 import sys
14 13
15 # Get the full path of the current script which would be something like 14 # Get the full path of the current script which would be something like
16 # src/webkit/build/webkit_version.py and navigate backwards twice to strip the 15 # src/webkit/build/webkit_version.py and navigate backwards twice to strip the
17 # last two path components to get to the srcroot. 16 # last two path components to get to the srcroot.
18 # This is to ensure that the script can load the lastchange module by updating 17 # This is to ensure that the script can load the lastchange module by updating
19 # the sys.path variable with the desired location. 18 # the sys.path variable with the desired location.
20 path = os.path.dirname(os.path.realpath(__file__)) 19 path = os.path.dirname(os.path.realpath(__file__))
21 path = os.path.dirname(os.path.dirname(path)) 20 path = os.path.dirname(os.path.dirname(path))
22 path = os.path.join(path, 'build', 'util') 21 path = os.path.join(path, 'build', 'util')
23 22
24 sys.path.insert(0, path) 23 sys.path.insert(0, path)
25 import lastchange 24 import lastchange
26 25
27 def ReadVersionFile(fname):
28 '''Reads the Webkit Version.xcconfig file looking for MAJOR_VERSION and
29 MINOR_VERSION. This function doesn't attempt to support the full syntax
30 of xcconfig files.'''
31 re_major = re.compile('MAJOR_VERSION\s*=\s*(\d+).*')
32 re_minor = re.compile('MINOR_VERSION\s*=\s*(\d+).*')
33 major = -1
34 minor = -1
35 f = open(fname, 'rb')
36 line = "not empty"
37 while line and not (major >= 0 and minor >= 0):
38 line = f.readline()
39 if major == -1:
40 match = re_major.match(line)
41 if match:
42 major = int(match.group(1))
43 continue
44 if minor == -1:
45 match = re_minor.match(line)
46 if match:
47 minor = int(match.group(1))
48 continue
49 assert(major >= 0 and minor >= 0)
50 return (major, minor)
51 26
52 27 def GetWebKitRevision(webkit_src_dir):
53 def GetWebKitRevision(webkit_dir, version_file):
54 """Get the WebKit revision, in the form 'trunk@1234'.""" 28 """Get the WebKit revision, in the form 'trunk@1234'."""
55 29
56 # "svn info" tells us what we want, but third_party/WebKit does *not*
57 # point at the upstream repo. So instead we run svn info on the directory
58 # containing the versioning file (which is some subdirectory of WebKit).
59 version_file_dir = os.path.dirname(version_file)
60 version_info = lastchange.FetchVersionInfo( 30 version_info = lastchange.FetchVersionInfo(
61 default_lastchange=None, 31 default_lastchange=None,
62 directory=os.path.join(webkit_dir, version_file_dir), 32 directory=webkit_src_dir,
63 directory_regex_prior_to_src_url='webkit') 33 directory_regex_prior_to_src_url='webkit')
64 34
65 if version_info.url == None: 35 if version_info.url == None:
66 version_info.url = 'Unknown URL' 36 version_info.url = 'Unknown URL'
67 version_info.url = version_info.url.strip('/') 37 version_info.url = version_info.url.strip('/')
68 38
69 if version_info.revision == None: 39 if version_info.revision == None:
70 version_info.revision = '0' 40 version_info.revision = '0'
71 41
72 return "%s@%s" % (version_info.url, version_info.revision) 42 return "%s@%s" % (version_info.url, version_info.revision)
73 43
74 44
75 def EmitVersionHeader(webkit_dir, version_file, output_dir): 45 def EmitVersionHeader(webkit_src_dir, output_dir):
76 '''Given webkit's version file, emit a header file that we can use from 46 '''Emit a header file that we can use from within webkit_glue.cc.'''
77 within webkit_glue.cc.
78 '''
79 47
80 # See .gypi file for discussion of this workaround for the version file. 48 # These are hard-coded from when we forked Blink. Presumably these
81 assert version_file[0] == '/' 49 # would be better in a header somewhere.
darin (slow to review) 2013/04/17 04:53:49 yes, it'd be good to get rid of all of this build-
82 version_file = version_file[1:] 50 major, minor = (537, 36)
83 51 webkit_revision = GetWebKitRevision(webkit_src_dir)
84 major, minor = ReadVersionFile(os.path.join(webkit_dir, version_file))
85
86 webkit_revision = GetWebKitRevision(webkit_dir, version_file)
87 52
88 fname = os.path.join(output_dir, "webkit_version.h") 53 fname = os.path.join(output_dir, "webkit_version.h")
89 f = open(fname, 'wb') 54 f = open(fname, 'wb')
90 template = """// webkit_version.h 55 template = """// webkit_version.h
91 // generated from %s 56 // generated from %s
92 57
93 #define WEBKIT_VERSION_MAJOR %d 58 #define WEBKIT_VERSION_MAJOR %d
94 #define WEBKIT_VERSION_MINOR %d 59 #define WEBKIT_VERSION_MINOR %d
95 #define WEBKIT_SVN_REVISION "%s" 60 #define WEBKIT_SVN_REVISION "%s"
96 """ % (version_file, major, minor, webkit_revision) 61 """ % (webkit_src_dir, major, minor, webkit_revision)
97 f.write(template) 62 f.write(template)
98 f.close() 63 f.close()
99 return 0 64 return 0
100 65
101 66
102 def main(): 67 def main():
103 return EmitVersionHeader(*sys.argv[1:]) 68 return EmitVersionHeader(*sys.argv[1:])
104 69
105 70
106 if __name__ == "__main__": 71 if __name__ == "__main__":
107 sys.exit(main()) 72 sys.exit(main())
OLDNEW
« no previous file with comments | « no previous file | webkit/user_agent/webkit_user_agent.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698