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

Unified Diff: tools/utils.py

Issue 22393002: First CL for removing our dependency on the checked-in binary for building (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/print_version.py ('k') | utils/compiler/create_snapshot.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/utils.py
diff --git a/tools/utils.py b/tools/utils.py
index 0abb0ed15d32240c5f8613e7612315830209f549..54a53a8646504049fb59603dde3a5b8412a4bb33 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -205,7 +205,6 @@ def GetBuildbotGSUtilPath():
return gsutil
def GetBuildMode(mode):
- global BUILD_MODES
return BUILD_MODES[mode]
@@ -214,10 +213,10 @@ def GetBuildConf(mode, arch):
ARCH_GUESS = GuessArchitecture()
BASE_DIR = os.path.abspath(os.path.join(os.curdir, '..'))
+DART_DIR = os.path.abspath(os.path.join(__file__, '..', '..'))
def GetBuildDir(host_os, target_os):
- global BUILD_ROOT
build_dir = BUILD_ROOT[host_os]
if target_os and target_os != host_os:
build_dir = os.path.join(build_dir, target_os)
@@ -233,28 +232,71 @@ def GetBaseDir():
return BASE_DIR
def GetVersion():
- dartbin = DartBinary()
- version_script = VersionScript()
- p = subprocess.Popen([dartbin, version_script], stdout = subprocess.PIPE,
- stderr = subprocess.STDOUT, shell=IsWindows())
- output, not_used = p.communicate()
- return output.strip()
+ version_tuple = ReadVersionFile()
+ if not version_tuple:
+ return None
+
+ (major, minor, build, patch) = version_tuple
+ revision = GetSVNRevision()
+ user = GetUserName()
+ # We don't add username to release builds (or any builds on the bots)
+ if user == 'chrome-bot':
+ user = ''
+
+ user_string = ''
+ revision_string = ''
+ if user:
+ user_string = '_%s' % user
+ if revision:
+ revision_string = '_r%s' % revision
+
+ return ("%s.%s.%s.%s%s%s" %
+ (major, minor, build, patch, revision_string, user_string))
+
+def GetUserName():
+ key = 'USER'
+ if sys.platform == 'win32':
+ key = 'USERNAME'
+ return os.environ.get(key, '')
+
+def ReadVersionFile():
+ version_file = os.path.join(DART_DIR, 'tools', 'VERSION')
+ try:
+ fd = open(version_file)
+ content = fd.read()
+ fd.close()
+ except:
+ print "Warning: Couldn't read VERSION file (%s)" % version_file
+ return None
+ major_match = re.search('MAJOR (\d+)', content)
+ minor_match = re.search('MINOR (\d+)', content)
+ build_match = re.search('BUILD (\d+)', content)
+ patch_match = re.search('PATCH (\d+)', content)
+ if major_match and minor_match and build_match and patch_match:
+ return (major_match.group(1), minor_match.group(1), build_match.group(1),
+ patch_match.group(1))
+ else:
+ print "Warning: VERSION file (%s) has wrong format" % version_file
+ return None
def GetSVNRevision():
+ # FIXME(kustermann): Make this work for newer SVN versions as well (where
+ # we've got only one '.svn' directory)
custom_env = dict(os.environ)
custom_env['LC_MESSAGES'] = 'en_GB'
p = subprocess.Popen(['svn', 'info'], stdout = subprocess.PIPE,
stderr = subprocess.STDOUT, shell=IsWindows(),
- env = custom_env)
- output, not_used = p.communicate()
+ env = custom_env,
+ cwd = DART_DIR)
+ output, _ = p.communicate()
revision = ParseSvnInfoOutput(output)
if revision:
return revision
# maybe the builder is using git-svn, try that
p = subprocess.Popen(['git', 'svn', 'info'], stdout = subprocess.PIPE,
- stderr = subprocess.STDOUT, shell=IsWindows())
- output, not_used = p.communicate()
+ stderr = subprocess.STDOUT, shell=IsWindows(), cwd = DART_DIR)
+ output, _ = p.communicate()
revision = ParseSvnInfoOutput(output)
if revision:
return revision
@@ -262,9 +304,9 @@ def GetSVNRevision():
return None
def ParseSvnInfoOutput(output):
- for line in output.split('\n'):
- if 'Revision' in line:
- return (line.strip().split())[1]
+ revision_match = re.search('Last Changed Rev: (\d+)', output)
+ if revision_match:
+ return revision_match.group(1)
return None
def RewritePathSeparator(path, workspace):
@@ -389,11 +431,6 @@ def Touch(name):
os.utime(name, None)
-def VersionScript():
- tools_dir = os.path.dirname(os.path.realpath(__file__))
- return os.path.join(tools_dir, 'version.dart')
-
-
def DartBinary():
tools_dir = os.path.dirname(os.path.realpath(__file__))
dart_binary_prefix = os.path.join(tools_dir, 'testing', 'bin')
« no previous file with comments | « tools/print_version.py ('k') | utils/compiler/create_snapshot.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698