| Index: tools/toolchain-try.sh
|
| diff --git a/tools/toolchain-try.sh b/tools/toolchain-try.sh
|
| index ea8f7fcdd002904a36d2d0da45e53f9899cb987e..e8f7ae12eae5f0e3a72afb7684653045ae44ee24 100755
|
| --- a/tools/toolchain-try.sh
|
| +++ b/tools/toolchain-try.sh
|
| @@ -1,42 +1,81 @@
|
| #!/bin/bash
|
| # A script to send toolchain edits in tools/SRC (in git) to toolchain trybots.
|
|
|
| -# Copyright (c) 2012 The Native Client Authors. All rights reserved.
|
| +# 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.
|
|
|
| cd "$(dirname "$0")"
|
| -source REVISIONS
|
| -if [[ ! -e "../.svn/gcl_info/changes/toolchain-try" ]] ; then
|
| - # Create randomly named CL that consumes all local SVN edits.
|
| - random_name=""
|
| - while ((${#random_name}<16)); do
|
| - random_name="$random_name$(
|
| - dd if=/dev/urandom bs=1 count=1 |
|
| - LC_ALL=C grep '[A-Za-z]')"
|
| - done
|
| - SVN_EDITOR=true gcl change "$random_name"
|
| -fi
|
| +. REVISIONS
|
| +
|
| +repos='binutils gcc glibc linux-headers-for-nacl newlib'
|
| +
|
| +trybots_glibc_only="\
|
| +nacl-toolchain-precise64-glibc\
|
| +"
|
| +trybots_glibc="\
|
| +nacl-toolchain-precise64-glibc,\
|
| +nacl-toolchain-mac-glibc,\
|
| +nacl-toolchain-win7-glibc\
|
| +"
|
| +trybots_newlib="\
|
| +nacl-toolchain-precise64-newlib,\
|
| +nacl-toolchain-mac-newlib,\
|
| +nacl-toolchain-win7-newlib\
|
| +"
|
|
|
| -# Lazily create a CL called 'toolchain-try' to contain patches to code in
|
| -# tools/SRC.
|
| -for i in binutils gcc glibc linux-headers-for-nacl newlib; do (
|
| - revname="NACL_$(echo $i | tr '[:lower:]' '[:upper:]')_COMMIT"
|
| - if [[ "$revname" = "NACL_LINUX-HEADERS-FOR-NACL_COMMIT" ]] ; then
|
| - revname="LINUX_HEADERS_FOR_NACL_COMMIT"
|
| +tmp='.git-status$$'
|
| +trap 'rm -f $tmp' 0 1 2 15
|
| +{ git status --porcelain -uno > "$tmp" &&
|
| + [ -r "$tmp" ] && [ ! -s "$tmp" ]
|
| +} || {
|
| + echo >&2 "$0: Start with a clean working directory"
|
| + exit 1
|
| +}
|
| +
|
| +test_all=
|
| +test_glibc=
|
| +test_newlib=
|
| +tryname=try
|
| +for repo in $repos; do
|
| + revname="NACL_$(echo "$repo" | tr '[:lower:]-' '[:upper:]_')_COMMIT"
|
| + patch="toolchain-try.${repo}.patch"
|
| + (cd "SRC/$repo"; git diff "${!revname}..HEAD") > $patch
|
| + if [ $? -ne 0 ]; then
|
| + echo >&2 "$0: error: update SRC/$repo first"
|
| + exit 2
|
| + fi
|
| + if [ -s "$patch" ]; then
|
| + git add "$patch"
|
| + tryname="${tryname}-${repo}-$(cd "SRC/$repo";
|
| + git rev-list -n1 --abbrev-commit HEAD)"
|
| + case "$repo" in
|
| + newlib) test_newlib=yes ;;
|
| + glibc) test_glibc=yes ;;
|
| + *) test_newlib=yes
|
| + test_glibc=yes
|
| + test_all=yes ;;
|
| + esac
|
| + else
|
| + rm -f "$patch"
|
| fi
|
| - cd "SRC/$i"
|
| - git diff "${!revname}..HEAD" > ../../"toolchain-try.$i.patch" )
|
| - svn add "toolchain-try.$i.patch"
|
| done
|
| -if [[ ! -e "../.svn/gcl_info/changes/toolchain-try" ]] ; then
|
| - SVN_EDITOR=true gcl change toolchain-try
|
| - rm "../.svn/gcl_info/changes/$random_name"
|
| -fi
|
| -BOTS=nacl-toolchain-precise64-glibc,nacl-toolchain-mac-glibc,\
|
| -nacl-toolchain-win7-glibc
|
| -if (( $# >= 1 )) ; then
|
| - gcl try toolchain-try --bot $BOTS -n "$1"
|
| +
|
| +if [ -z "$test_all" -a -z "$test_newlib" -a -n "$test_glibc" ]; then
|
| + trybots="$trybots_glibc_only"
|
| else
|
| - gcl try toolchain-try --bot $BOTS
|
| + trybots="${test_newlib:+${trybots_newlib}}\
|
| +${test_glibc:+${test_newlib:+,}${trybots_glibc}}"
|
| +fi
|
| +
|
| +if ! git rev-parse origin/master >/dev/null; then
|
| + echo >&2 "$0: error: no origin/master branch"
|
| + exit 3
|
| fi
|
| +
|
| +(set -x
|
| + git checkout -b "$tryname" origin/master
|
| + git commit -m "toolchain trybot run: $tryname"
|
| +
|
| + git try -b "$trybots"
|
| +)
|
|
|