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

Unified Diff: buildbot/buildbot_pnacl_merge.sh

Issue 7524023: New LLVM merging bots (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client/
Patch Set: '' Created 9 years, 5 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 | « buildbot/buildbot_pnacl2.sh ('k') | buildbot/buildbot_selector.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: buildbot/buildbot_pnacl_merge.sh
===================================================================
--- buildbot/buildbot_pnacl_merge.sh (revision 0)
+++ buildbot/buildbot_pnacl_merge.sh (revision 0)
@@ -0,0 +1,142 @@
+#!/bin/bash
+# Copyright (c) 2011 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -u
+set -e
+
+# Script assumed to be run in native_client/
+if [[ $(pwd) != */native_client ]]; then
+ echo 'ERROR: must be run in native_client/ directory!'
+ echo " (Current directory is $(pwd))"
+ exit 1
+fi
+
+RETCODE=0
+
+export UTMAN_BUILDBOT=true
+export UTMAN_USE_MQ=false
+export UTMAN_UPSTREAM=true
+export UTMAN_UPSTREAM_SKIP_UPDATE=true
+
+UTMAN=tools/llvm/utman.sh
+MERGE_TOOL=tools/llvm/merge-tool.sh
+SPEC2K_SCRIPT=buildbot/buildbot_spec2k.sh
+UTMAN_TEST=tools/llvm/utman-test.sh
+
+clobber() {
+ echo @@@BUILD_STEP clobber@@@
+ rm -rf scons-out compiler ../xcodebuild ../sconsbuild ../out \
+ src/third_party/nacl_sdk/arm-newlib
+ rm -rf toolchain/pnacl* toolchain/hg* toolchain/test-log
+ rm -rf ../toolchain
+ # Try to clobber /tmp/ contents to clear temporary chrome files.
+ rm -rf /tmp/.org.chromium.Chromium.*
+}
+
+show-config() {
+ echo @@@BUILD_STEP show-config@@@
+ ${UTMAN} show-config
+}
+
+build-pnacl() {
+ echo @@@BUILD_STEP compile_toolchain@@@
+ ${UTMAN} clean
+ ${UTMAN} everything-translator
+}
+
+utman-test() {
+ local testname=$1
+ echo @@@BUILD_STEP ${testname}@@@
+ ${UTMAN_TEST} ${testname} ||
+ { RETCODE=$? && echo @@@STEP_FAILURE@@@;}
+
+}
+
+# The slow-bot runs every available test on the last committed merge.
+# This includes the scons tests, chrome browser tests, and Spec2K.
+# When this bot is all green, we know the merge is in perfect condition,
+# and can safely be used in the PNaCl toolchain.
+slow-bot() {
+ clobber
+ show-config
+ ${UTMAN} hg-update-upstream
+ build-pnacl
+
+ # SCons Tests
+ utman-test test-x86-32
+ utman-test test-x86-32-pic
+ utman-test test-x86-32-browser
+ utman-test test-x86-64
+ utman-test test-x86-64-pic
+ utman-test test-x86-64-browser
+ # TODO(pdox): Enable after MC bug is fixed
+ # utman-test test-arm
+ # utman-test test-arm-pic
+
+ # Spec2K
+ CLOBBER=no ${SPEC2K_SCRIPT} pnacl-x8632
+ CLOBBER=no ${SPEC2K_SCRIPT} pnacl-x8664
+ # TODO(pdox): Enable after MC bug is fixed
+ # CLOBBER=no ${SPEC2K_SCRIPT} pnacl-arm
+}
+
+# The fast bot performs the actual merges.
+#
+# Given a new LLVM SVN revision, it performs an automatic merge,
+# compiles the toolchain, and then runs some basic tests.
+# If those tests pass, then the merge is committed.
+#
+# This bot must remain 'fast' to keep up with commits on the LLVM tree.
+# Otherwise, it becomes difficult to track which upstream revision broke
+# the merge. This is why this bot only runs a small sampling of tests.
+#
+# As a result, imperfect merges may be committed, but those will be
+# discovered by the slow-bot.
+fast-bot() {
+ clobber
+ show-config
+
+ # Disable this bot until we are merged
+ # up to the tip and all tests are passing
+ return 0
+
+ ${MERGE_TOOL} auto
+ build-pnacl
+ utman-test test-x86-32
+ utman-test test-x86-64
+ utman-test test-arm
+ # TODO(pdox): Add a few Spec2K tests
+ commit-and-push-merge
+}
+
+commit-and-push-merge() {
+ echo "@@@BUILD_STEP commit-and-push-merge@@@"
+ if [ ${RETCODE} -eq 0 ]; then
+ ${MERGE_TOOL} final-commit
+ echo "@@@STEP_SUCCESS@@@"
+ else
+ echo "Skipping due to prior failure(s)"
+ echo "@@@STEP_FAILURE@@@"
+ fi
+}
+
+if [[ $# -eq 0 ]] ; then
+ echo "you must specify a mode on the commandline:"
+ exit 1
+fi
+
+if [ "$(type -t $1)" != "function" ]; then
+ Usage
+ echo "ERROR: unknown mode '$1'." >&2
+ exit 1
+fi
+
+"$@"
+
+if [[ ${RETCODE} != 0 ]]; then
+ echo "@@@BUILD_STEP summary@@@"
+ echo There were failed stages.
+ exit ${RETCODE}
+fi
« no previous file with comments | « buildbot/buildbot_pnacl2.sh ('k') | buildbot/buildbot_selector.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698