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

Unified Diff: dartium_tools/buildbot_annotated_steps.py

Issue 239993009: Revert accidental dartium code push (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dartium_tools/build.py ('k') | dartium_tools/export_overrides.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dartium_tools/buildbot_annotated_steps.py
diff --git a/dartium_tools/buildbot_annotated_steps.py b/dartium_tools/buildbot_annotated_steps.py
deleted file mode 100755
index ed090c0415e63c5be43abb0fcb600ec514764b1b..0000000000000000000000000000000000000000
--- a/dartium_tools/buildbot_annotated_steps.py
+++ /dev/null
@@ -1,374 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) 2011 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-"""Chromium buildbot steps
-
-Run the Dart layout tests.
-"""
-
-import os
-import platform
-import re
-import shutil
-import socket
-import subprocess
-import sys
-import imp
-
-BUILDER_NAME = 'BUILDBOT_BUILDERNAME'
-REVISION = 'BUILDBOT_REVISION'
-BUILDER_PATTERN = (r'^dartium-(mac|lucid64|lucid32|win)'
- r'-(full|inc|debug)(-ninja)?(-(be|dev|stable|integration))?$')
-
-if platform.system() == 'Windows':
- GSUTIL = 'e:/b/build/scripts/slave/gsutil.bat'
-else:
- GSUTIL = '/b/build/scripts/slave/gsutil'
-ACL = 'public-read'
-GS_SITE = 'gs://'
-GS_URL = 'https://sandbox.google.com/storage/'
-GS_DIR = 'dartium-archive'
-LATEST = 'latest'
-CONTINUOUS = 'continuous'
-
-REVISION_FILE = 'chrome/browser/ui/webui/dartvm_revision.h'
-
-# Add dartium tools and build/util to python path.
-SRC_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-TOOLS_PATH = os.path.join(SRC_PATH, 'dartium_tools')
-DART_PATH = os.path.join(SRC_PATH, 'dart')
-BUILD_UTIL_PATH = os.path.join(SRC_PATH, 'build/util')
-# We limit testing on drt since it takes a long time to run
-DRT_FILTER = 'html'
-
-
-sys.path.extend([TOOLS_PATH, BUILD_UTIL_PATH])
-import archive
-import utils
-
-bot_utils = imp.load_source('bot_utils',
- os.path.join(DART_PATH, 'tools', 'bots', 'bot_utils.py'))
-
-def DartArchiveFile(local_path, remote_path, create_md5sum=False):
- # Copy it to the new unified gs://dart-archive bucket
- # TODO(kustermann/ricow): Remove all the old archiving code, once everything
- # points to the new location
- gsutil = bot_utils.GSUtil()
- gsutil.upload(local_path, remote_path, public=True)
- if create_md5sum:
- # 'local_path' may have a different filename than 'remote_path'. So we need
- # to make sure the *.md5sum file contains the correct name.
- assert '/' in remote_path and not remote_path.endswith('/')
- mangled_filename = remote_path[remote_path.rfind('/') + 1:]
- local_md5sum = bot_utils.CreateChecksumFile(local_path, mangled_filename)
- gsutil.upload(local_md5sum, remote_path + '.md5sum', public=True)
-
-def UploadDartiumVariant(revision, name, channel, arch, mode, zip_file):
- name = name.replace('drt', 'content_shell')
- system = sys.platform
-
- namer = bot_utils.GCSNamer(channel, bot_utils.ReleaseType.RAW)
- remote_path = namer.dartium_variant_zipfilepath(revision, name, system, arch,
- mode)
- DartArchiveFile(zip_file, remote_path, create_md5sum=True)
- return remote_path
-
-def ExecuteCommand(cmd):
- """Execute a command in a subprocess.
- """
- print 'Executing: ' + ' '.join(cmd)
- try:
- pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- (output, error) = pipe.communicate()
- if pipe.returncode != 0:
- print 'Execution failed: ' + str(error)
- return (pipe.returncode, output)
- except:
- import traceback
- print 'Execution raised exception:', traceback.format_exc()
- return (-1, '')
-
-
-# TODO: Instead of returning a tuple we should make a class with these fields.
-def GetBuildInfo():
- """Returns a tuple (name, dart_revision, version, mode, arch, channel,
- is_full) where:
- - name: A name for the build - the buildbot host if a buildbot.
- - dart_revision: The dart revision.
- - version: A version string corresponding to this build.
- - mode: 'Debug' or 'Release'
- - arch: target architecture
- - channel: the channel this build is happening on
- - is_full: True if this is a full build.
- """
- os.chdir(SRC_PATH)
-
- name = None
- version = None
- mode = 'Release'
-
- # Populate via builder environment variables.
- name = os.environ[BUILDER_NAME]
-
- # We need to chdir() to src/dart in order to get the correct revision number.
- with utils.ChangedWorkingDirectory(DART_PATH):
- dart_tools_utils = imp.load_source('dart_tools_utils',
- os.path.join('tools', 'utils.py'))
- dart_revision = dart_tools_utils.GetSVNRevision()
-
- version = dart_revision + '.0'
- is_incremental = '-inc' in name
- is_win_ninja = 'win-inc-ninja' in name
- is_full = False
-
- pattern = re.match(BUILDER_PATTERN, name)
- assert pattern
- arch = 'x64' if pattern.group(1) == 'lucid64' else 'ia32'
- if pattern.group(2) == 'debug':
- mode = 'Debug'
- is_full = pattern.group(2) == 'full'
- channel = pattern.group(5)
- if not channel:
- channel = 'be'
-
- # Fall back if not on builder.
- if not name:
- name = socket.gethostname().split('.')[0]
-
- return (name, dart_revision, version, mode, arch, channel, is_full,
- is_incremental, is_win_ninja)
-
-
-def RunDartTests(mode, component, suite, arch, checked, test_filter=None,
- is_win_ninja=False):
- """Runs the Dart WebKit Layout tests.
- """
- cmd = [sys.executable]
- script = os.path.join(TOOLS_PATH, 'test.py')
- cmd.append(script)
- cmd.append('--buildbot')
- cmd.append('--mode=' + mode)
- cmd.append('--component=' + component)
- cmd.append('--suite=' + suite)
- cmd.append('--arch=' + arch)
- cmd.append('--' + checked)
- cmd.append('--no-show-results')
-
- if is_win_ninja:
- cmd.append('--win-ninja-build')
-
- if test_filter:
- cmd.append('--test-filter=' + test_filter)
-
- status = subprocess.call(cmd)
- if status != 0:
- print '@@@STEP_FAILURE@@@'
- return status
-
-
-def UploadDartTestsResults(layout_test_results_dir, name, version,
- component, checked):
- """Uploads test results to google storage.
- """
- print ('@@@BUILD_STEP archive %s_layout_%s_tests results@@@' %
- (component, checked))
- dir_name = os.path.dirname(layout_test_results_dir)
- base_name = os.path.basename(layout_test_results_dir)
- cwd = os.getcwd()
- os.chdir(dir_name)
-
- archive_name = 'layout_test_results.zip'
- archive.ZipDir(archive_name, base_name)
-
- target = '/'.join([GS_DIR, 'layout-test-results', name, component + '-' +
- checked + '-' + version + '.zip'])
- status = UploadArchive(os.path.abspath(archive_name), GS_SITE + target)
- os.remove(archive_name)
- if status == 0:
- print ('@@@STEP_LINK@download@' + GS_URL + target + '@@@')
- else:
- print '@@@STEP_FAILURE@@@'
- os.chdir(cwd)
-
-
-def ListArchives(pattern):
- """List the contents in Google storage matching the file pattern.
- """
- cmd = [GSUTIL, 'ls', pattern]
- (status, output) = ExecuteCommand(cmd)
- if status != 0:
- return []
- return output.split(os.linesep)
-
-
-def RemoveArchives(archives):
- """Remove the list of archives in Google storage.
- """
- for archive in archives:
- if archive.find(GS_SITE) == 0:
- cmd = [GSUTIL, 'rm', archive.rstrip()]
- (status, _) = ExecuteCommand(cmd)
- if status != 0:
- return status
- return 0
-
-
-def UploadArchive(source, target):
- """Upload an archive zip file to Google storage.
- """
-
- # Upload file.
- cmd = [GSUTIL, 'cp', source, target]
- (status, output) = ExecuteCommand(cmd)
- if status != 0:
- return status
- print 'Uploaded: ' + output
-
- # Set ACL.
- if ACL is not None:
- cmd = [GSUTIL, 'setacl', ACL, target]
- (status, output) = ExecuteCommand(cmd)
- return status
-
-
-def main():
- (dartium_bucket, dart_revision, version, mode, arch, channel,
- is_full, is_incremental, is_win_ninja) = GetBuildInfo()
- drt_bucket = dartium_bucket.replace('dartium', 'drt')
- chromedriver_bucket = dartium_bucket.replace('dartium', 'chromedriver')
-
- def archiveAndUpload(archive_latest=False):
- print '@@@BUILD_STEP dartium_generate_archive@@@'
- cwd = os.getcwd()
- dartium_archive = dartium_bucket + '-' + version
- drt_archive = drt_bucket + '-' + version
- chromedriver_archive = chromedriver_bucket + '-' + version
- dartium_zip, drt_zip, chromedriver_zip = \
- archive.Archive(SRC_PATH, mode, dartium_archive,
- drt_archive, chromedriver_archive,
- is_win_ninja=is_win_ninja)
- status = upload('dartium', dartium_bucket, os.path.abspath(dartium_zip),
- archive_latest=archive_latest)
- if status == 0:
- status = upload('drt', drt_bucket, os.path.abspath(drt_zip),
- archive_latest=archive_latest)
- if status == 0:
- status = upload('chromedriver', chromedriver_bucket,
- os.path.abspath(chromedriver_zip),
- archive_latest=archive_latest)
- os.chdir(cwd)
- if status != 0:
- print '@@@STEP_FAILURE@@@'
- return status
-
- def upload(module, bucket, zip_file, archive_latest=False):
- status = 0
-
- # We archive to the new location on all builders except for -inc builders.
- if not is_incremental:
- print '@@@BUILD_STEP %s_upload_archive_new @@@' % module
- # We archive the full builds to gs://dart-archive/
- revision = 'latest' if archive_latest else dart_revision
- remote_path = UploadDartiumVariant(revision, module, channel, arch,
- mode.lower(), zip_file)
- print '@@@STEP_LINK@download@' + remote_path + '@@@'
-
- # We archive to the old locations only for bleeding_edge builders
- if channel == 'be':
- _, filename = os.path.split(zip_file)
- if not archive_latest:
- target = '/'.join([GS_DIR, bucket, filename])
- print '@@@BUILD_STEP %s_upload_archive@@@' % module
- status = UploadArchive(zip_file, GS_SITE + target)
- print '@@@STEP_LINK@download@' + GS_URL + target + '@@@'
- else:
- print '@@@BUILD_STEP %s_upload_latest@@@' % module
- # Clear latest for this build type.
- old = '/'.join([GS_DIR, LATEST, bucket + '-*'])
- old_archives = ListArchives(GS_SITE + old)
-
- # Upload the new latest and remove unnecessary old ones.
- target = GS_SITE + '/'.join([GS_DIR, LATEST, filename])
- status = UploadArchive(zip_file, target)
- if status == 0:
- RemoveArchives(
- [iarch for iarch in old_archives if iarch != target])
- else:
- print 'Upload failed'
-
- # Upload unversioned name to continuous site for incremental
- # builds.
- if '-inc' in bucket:
- continuous_name = bucket[:bucket.find('-inc')]
- target = GS_SITE + '/'.join([GS_DIR, CONTINUOUS,
- continuous_name + '.zip'])
- status = UploadArchive(zip_file, target)
-
- print ('@@@BUILD_STEP %s_upload_archive is over (status = %s)@@@' %
- (module, status))
-
- return status
-
- def test(component, suite, checked, test_filter=None):
- """Test a particular component (e.g., dartium or frog).
- """
- print '@@@BUILD_STEP %s_%s_%s_tests@@@' % (component, suite, checked)
- sys.stdout.flush()
- layout_test_results_dir = os.path.join(SRC_PATH, 'webkit', mode,
- 'layout-test-results')
- shutil.rmtree(layout_test_results_dir, ignore_errors=True)
- status = RunDartTests(mode, component, suite, arch, checked,
- test_filter=test_filter, is_win_ninja=is_win_ninja)
-
- if suite == 'layout' and status != 0:
- UploadDartTestsResults(layout_test_results_dir, dartium_bucket, version,
- component, checked)
- return status
-
- result = 0
-
- # Archive to the revision bucket unless integration build
- if channel != 'integration':
- result = archiveAndUpload(archive_latest=False)
-
- # On dev/stable we archive to the latest bucket as well
- if channel != 'be':
- result = archiveAndUpload(archive_latest=True) or result
-
- # Run layout tests
- if mode == 'Release' or platform.system() != 'Darwin':
- result = test('drt', 'layout', 'unchecked') or result
- result = test('drt', 'layout', 'checked') or result
-
- # Run dartium tests
- result = test('dartium', 'core', 'unchecked') or result
- result = test('dartium', 'core', 'checked') or result
-
- # Run ContentShell tests
- # NOTE: We don't run ContentShell tests on dartium-*-inc builders to keep
- # cycle times down.
- if not is_incremental:
- # If we run all checked tests on dartium, we restrict the number of
- # unchecked tests on drt to DRT_FILTER
- result = test('drt', 'core', 'unchecked', test_filter=DRT_FILTER) or result
- result = test('drt', 'core', 'checked') or result
-
- # On the 'be' channel, we only archive to the latest bucket if all tests ran
- # successfull.
- if result == 0 and channel == 'be':
- result = archiveAndUpload(archive_latest=True) or result
-
- # BIG HACK
- # Normal ninja clobbering does not work due to symlinks/python on windows
- # Full clobbering before building does not work since it will destroy
- # the ninja build files
- # So we basically clobber at the end here
- if is_full and platform.system() == 'Windows':
- print '@@@BUILD_STEP Dartium hackish clobber@@@'
- shutil.rmtree(os.path.join(SRC_PATH, 'out'), ignore_errors=True)
-
-if __name__ == '__main__':
- sys.exit(main())
« no previous file with comments | « dartium_tools/build.py ('k') | dartium_tools/export_overrides.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698