diff options
Diffstat (limited to 'webkit/build/webkit_version.py')
-rwxr-xr-x | webkit/build/webkit_version.py | 44 |
1 files changed, 40 insertions, 4 deletions
diff --git a/webkit/build/webkit_version.py b/webkit/build/webkit_version.py index 9f8fbab..5811072 100755 --- a/webkit/build/webkit_version.py +++ b/webkit/build/webkit_version.py @@ -12,6 +12,9 @@ import os import re import sys +sys.path.insert(0, '../../build/util') +import lastchange + def ReadVersionFile(fname): '''Reads the Webkit Version.xcconfig file looking for MAJOR_VERSION and MINOR_VERSION. This function doesn't attempt to support the full syntax @@ -37,11 +40,43 @@ def ReadVersionFile(fname): assert(major >= 0 and minor >= 0) return (major, minor) -def EmitVersionHeader(version_file, output_dir): +def GetWebKitRevision(webkit_dir, version_file): + """Get the WebKit revision, in the form 'trunk@1234'.""" + + # "svn info" tells us what we want, but third_party/WebKit does *not* + # point at the upstream repo. So instead we run svn info on the directory + # containing the versioning file (which is some subdirectory of WebKit), + # then strip that path back off of the resulting URL. + version_file_dir = os.path.dirname(version_file) + version_info = lastchange.FetchVersionInfo( + default_lastchange=None, + directory=os.path.join(webkit_dir, version_file_dir)) + + # Now compute the real WebKit URL by stripping off the version file + # directory from the URL we get out of version_info. + # Further, we want to strip off the "http://svn..." from the left. + # This is the root URL from the repository. + assert version_info.url.startswith(version_info.root) + assert version_info.url.endswith(version_file_dir) + webkit_url = version_info.url[len(version_info.root):-len(version_file_dir)] + webkit_url = webkit_url.strip('/') + + return "%s@%s" % (webkit_url, version_info.revision) + + +def EmitVersionHeader(webkit_dir, version_file, output_dir): '''Given webkit's version file, emit a header file that we can use from within webkit_glue.cc. ''' - (major, minor) = ReadVersionFile(version_file) + + # See .gypi file for discussion of this workaround for the version file. + assert version_file[0] == '/' + version_file = version_file[1:] + + major, minor = ReadVersionFile(os.path.join(webkit_dir, version_file)) + + webkit_revision = GetWebKitRevision(webkit_dir, version_file) + fname = os.path.join(output_dir, "webkit_version.h") f = open(fname, 'wb') template = """// webkit_version.h @@ -49,12 +84,13 @@ def EmitVersionHeader(version_file, output_dir): #define WEBKIT_VERSION_MAJOR %d #define WEBKIT_VERSION_MINOR %d -""" % (version_file, major, minor) +#define WEBKIT_SVN_REVISION "%s" +""" % (version_file, major, minor, webkit_revision) f.write(template) f.close() def main(): - EmitVersionHeader(sys.argv[1], sys.argv[2]) + EmitVersionHeader(*sys.argv[1:]) if __name__ == "__main__": |