141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org#!/bin/bash 241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# Copyright 2013 the V8 project authors. All rights reserved. 341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# Redistribution and use in source and binary forms, with or without 441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# modification, are permitted provided that the following conditions are 541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# met: 641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# 741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# * Redistributions of source code must retain the above copyright 841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# notice, this list of conditions and the following disclaimer. 941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# * Redistributions in binary form must reproduce the above 1041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# copyright notice, this list of conditions and the following 1141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# disclaimer in the documentation and/or other materials provided 1241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# with the distribution. 1341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# * Neither the name of Google Inc. nor the names of its 1441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# contributors may be used to endorse or promote products derived 1541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# from this software without specific prior written permission. 1641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# 1741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 2941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 3041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Global variable definitions 3141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 3241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgDEPS_STRING='"v8_revision":' 3341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgINFO=tools/v8-info.sh 3441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 3541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgV8="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" 3641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 3741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Function definitions 3841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 3941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgusage() { 4041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgcat << EOF 4141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgusage: $0 OPTIONS 4241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 4341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgRun in chromium/src to get information about V8 rolls. 4441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 4541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgOPTIONS: 4641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org -h Show this message. 4741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org -n Number of rolls to print information about. 4841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org -s Chromium git hash to start printing V8 information about. 4941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgEOF 5041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 5141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 5241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_line() { 5341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org git show $1:DEPS | grep -n $DEPS_STRING | cut -d":" -f1 5441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 5541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 5641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_info() { 5741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org git blame -L$(v8_line $1),+1 $1 DEPS | grep $DEPS_STRING 5841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 5941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 6041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_svn() { 6141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org sed -e 's/^.*"\([0-9]\+\)",$/\1/' 6241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 6341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 6441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_roll() { 6541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org cut -d" " -f1 6641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 6741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 6841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgfind_rev() { 6941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org git svn find-rev $1 7041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 7141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 7241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgmsg() { 7341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org msg=$(git log --format="%h %ci %ce" -1 $1) 7441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org h=$(echo $msg | cut -d" " -f1) 7541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org d=$(echo $msg | cut -d" " -f2) 7641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org t=$(echo $msg | cut -d" " -f3) 7741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org a=$(echo $msg | cut -d" " -f5) 7841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org a1=$(echo $a | cut -d"@" -f1) 7941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org a2=$(echo $a | cut -d"@" -f2) 8041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org echo $h $d $t $a1@$a2 8141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 8241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 8341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgv8_revision() { 8441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org cd $V8 8541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org $INFO -v $1 8641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 8741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 8841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgrolls() { 8941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org roll=$2 9041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org for i in $(seq 1 $1); do 9141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org info=$(v8_info $roll) 9241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org roll=$(echo $info | v8_roll $roll) 9341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org trunk=$(echo $info | v8_svn $roll) 9441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org echo "$(v8_revision $trunk) $trunk $(find_rev $roll) $(msg $roll)" 9541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org roll=$roll^1 9641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org done 9741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org} 9841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 9941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org########## Option parsing 10041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 10141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgREVISIONS=1 10241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgSTART=HEAD 10341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 10441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgwhile getopts ":hn:s:" OPTION ; do 10541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org case $OPTION in 10641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org h) usage 10741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org exit 0 10841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org ;; 10941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org n) REVISIONS=$OPTARG 11041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org ;; 11141728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org s) START=$OPTARG 11241728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org ;; 11341728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org ?) echo "Illegal option: -$OPTARG" 11441728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org usage 11541728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org exit 1 11641728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org ;; 11741728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org esac 11841728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgdone 11941728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.org 12041728483f231e098a8dd85f109b5a30e6ccc3c39danno@chromium.orgrolls $REVISIONS $START 121