[zorg] r343630 - Switch svn update to https and improve revision picking for forced builds
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 2 13:42:48 PDT 2018
Author: rnk
Date: Tue Oct 2 13:42:48 2018
New Revision: 343630
URL: http://llvm.org/viewvc/llvm-project?rev=343630&view=rev
Log:
Switch svn update to https and improve revision picking for forced builds
If we don't pick a single revision up front for our multiple checkouts,
it's possible to end up with version skew, and builds may fail. Prevent
this by doing a single 'svn info' call up front and parse the revision
out.
Modified:
zorg/trunk/zorg/buildbot/builders/annotated/annotated_builder.py
Modified: zorg/trunk/zorg/buildbot/builders/annotated/annotated_builder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/annotated/annotated_builder.py?rev=343630&r1=343629&r2=343630&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/annotated/annotated_builder.py (original)
+++ zorg/trunk/zorg/buildbot/builders/annotated/annotated_builder.py Tue Oct 2 13:42:48 2018
@@ -228,7 +228,7 @@ class AnnotatedBuilder:
self.report_step_exception(e)
raise
- def update_sources(self, source_dir, projects, revision=None, svn='svn'):
+ def update_sources(self, source_dir, projects, revision, svn='svn'):
self.report_build_step('update-sources')
self.halt_on_failure()
try:
@@ -237,17 +237,13 @@ class AnnotatedBuilder:
path = source_dir
elif not os.path.isabs(path):
path = pjoin(source_dir, path)
- util.report(
- "Updating %s at %s from %s" % (project, util.shquote(path), uri))
- if not revision:
- revision_args = []
- else:
- revision_args = ['-r', revision]
+ util.report("Updating %s to %s at %s from %s" %
+ (project, revision, util.shquote(path), uri))
if os.path.exists(pjoin(path, '.svn')):
- cmd = [svn, 'up'] + revision_args
+ cmd = [svn, 'up', '-r', revision]
else:
util.mkdirp(path)
- cmd = [svn, 'co'] + revision_args + [uri, '.']
+ cmd = [svn, 'co', '-r', revision, uri, '.']
util.report_run_cmd(cmd, cwd=path)
except Exception as e:
self.report_step_exception(e)
@@ -290,7 +286,7 @@ class AnnotatedBuilder:
check_stages = [True] * stages
if extra_cmake_args is None:
extra_cmake_args = []
- if revision is None:
+ if not revision:
revision = os.environ.get('BUILDBOT_REVISION')
if stage1_extra_cmake_args is None:
stage1_extra_cmake_args = extra_cmake_args
@@ -306,11 +302,28 @@ class AnnotatedBuilder:
stage1_extra_cmake_args += ['-DCMAKE_C_COMPILER=cl',
'-DCMAKE_CXX_COMPILER=cl']
+ if not revision:
+ cmd = ['svn', 'info', 'https://llvm.org/svn/llvm-project/']
+ try:
+ svninfo = subprocess.check_output(cmd)
+ except subprocess.CalledProcessError as e:
+ util.report("Failed to get most recent SVN rev: " + str(e))
+ return 1
+ m = svninfo.match('^Revision: ([0-9]+)$')
+ if m:
+ revision = m.group(1)
+ else:
+ util.report("Failed to find svn revision in svn info output:\n"
+ + svninfo)
+ return 1
+ if not revision.isdigit():
+ util.report("SVN revision %s is not a positive integer" % (revision,))
+
# Update sources.
cwd = os.getcwd()
source_dir = pjoin(cwd, 'llvm.src')
build_dir = pjoin(cwd, 'build')
- svn_uri_pattern = 'http://llvm.org/svn/llvm-project/%s/trunk'
+ svn_uri_pattern = 'https://llvm.org/svn/llvm-project/%s/trunk'
projects = []
projects.append(('llvm', None, svn_uri_pattern % ('llvm',)))
projects.append(
@@ -319,7 +332,7 @@ class AnnotatedBuilder:
for p in ['lld']:
projects.append((p, pjoin('tools', p), svn_uri_pattern % (p,)))
- self.update_sources(source_dir, projects, revision=revision)
+ self.update_sources(source_dir, projects, revision)
# Build and check stages.
self.build_and_check_stages(
More information about the llvm-commits
mailing list