summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-22 00:41:52 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-22 00:41:52 +0000
commit5193d537d7a68cb5bf50bacc9e42437d6faf66d5 (patch)
tree1143832c0529dd6c6584f6e2b79b3c681b3e110b /webkit
parent0a318c63fa078d29641b505c2f44ee76c7e773dc (diff)
downloadchromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.zip
chromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.tar.gz
chromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.tar.bz2
webkit: expose webkit branch and revision number in about pages
- Change lastchange.py to work in other directories and to provide SVN URL. - Use lastchange.py in place where we generate WebKit versioning info. - Include branch@revision string in glue API. BUG=41264 TEST=compiles Review URL: http://codereview.chromium.org/6354014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72245 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rwxr-xr-xwebkit/build/webkit_version.py44
-rw-r--r--webkit/glue/user_agent.cc10
-rw-r--r--webkit/glue/user_agent.h2
-rw-r--r--webkit/glue/webkit_glue.gypi16
4 files changed, 62 insertions, 10 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__":
diff --git a/webkit/glue/user_agent.cc b/webkit/glue/user_agent.cc
index 4867c27..afd1c83 100644
--- a/webkit/glue/user_agent.cc
+++ b/webkit/glue/user_agent.cc
@@ -22,8 +22,14 @@ namespace webkit_glue {
std::string GetProductVersion();
std::string GetWebKitVersion() {
- return base::StringPrintf("%d.%d", WEBKIT_VERSION_MAJOR,
- WEBKIT_VERSION_MINOR);
+ return base::StringPrintf("%d.%d (%s)",
+ WEBKIT_VERSION_MAJOR,
+ WEBKIT_VERSION_MINOR,
+ WEBKIT_SVN_REVISION);
+}
+
+std::string GetWebKitRevision() {
+ return WEBKIT_SVN_REVISION;
}
std::string BuildOSCpuInfo() {
diff --git a/webkit/glue/user_agent.h b/webkit/glue/user_agent.h
index 3d1f788..62c8324 100644
--- a/webkit/glue/user_agent.h
+++ b/webkit/glue/user_agent.h
@@ -19,7 +19,7 @@ void BuildUserAgent(bool mimic_windows, std::string* result);
// Builds a User-agent compatible string that describes the OS and CPU type.
std::string BuildOSCpuInfo();
-// Returns the WebKit version (major.minor).
+// Returns the WebKit version, in the form "major.minor (branch@revision)".
std::string GetWebKitVersion();
} // namespace webkit_glue
diff --git a/webkit/glue/webkit_glue.gypi b/webkit/glue/webkit_glue.gypi
index b6a8c6a..eec99bf 100644
--- a/webkit/glue/webkit_glue.gypi
+++ b/webkit/glue/webkit_glue.gypi
@@ -120,13 +120,23 @@
{
'action_name': 'webkit_version',
'inputs': [
- '../build/webkit_version.py',
- '<(webkit_src_dir)/Source/WebCore/Configurations/Version.xcconfig',
+ '<(script)',
+ '<(webkit_src_dir)<(version_file)',
+ '../../build/util/lastchange.py', # Used by the script.
],
'outputs': [
'<(INTERMEDIATE_DIR)/webkit_version.h',
],
- 'action': ['python', '<@(_inputs)', '<(INTERMEDIATE_DIR)'],
+ 'action': ['python', '<(script)', '<(webkit_src_dir)',
+ '<(version_file)', '<(INTERMEDIATE_DIR)'],
+ 'variables': {
+ 'script': '../build/webkit_version.py',
+ # version_file is a relative path from |webkit_src_dir| to
+ # the version file. But gyp will eat the variable unless
+ # it looks like an absolute path, so write it like one and
+ # then use it carefully above.
+ 'version_file': '/Source/WebCore/Configurations/Version.xcconfig',
+ },
},
],
'include_dirs': [