| #!/bin/bash -x |
| |
| # git fetch "https://go.googlesource.com/go" refs/changes/61/196661/3 && git checkout FETCH_HEAD |
| |
| if [ $# -lt 1 ] ; then |
| echo cmpcl.sh "refs/changes/<nn>/<cl>/<patch>" "bent-options" |
| exit 1 |
| fi |
| |
| if [ ${1:0:1} = "-" ] ; then |
| echo "First parameter should be a git tag or branch" |
| exit 1 |
| fi |
| |
| cl="$1" |
| shift |
| |
| ROOT=`pwd` |
| export ROOT cl |
| |
| # perflock is not always available |
| PERFLOCK=`which perflock` |
| |
| # N is number of benchmarks, B is number of builds |
| # Can override these with -N= and -a= on command line. |
| N=15 |
| B=1 |
| |
| # Adjust N, B, define NUMACTL, set GOMAXPROCS, as necessary. |
| if [ -e ./localfix ] ; then |
| . ./localfix |
| fi |
| |
| cd "${ROOT}" |
| |
| if [ -e go-old ] ; then |
| rm -rf go-old |
| fi |
| |
| git clone https://go.googlesource.com/go go-old |
| if [ $? != 0 ] ; then |
| echo git clone https://go.googlesource.com/go go-old FAILED |
| exit 1 |
| fi |
| cd go-old/src |
| git fetch "https://go.googlesource.com/go" "${cl}" |
| if [ $? != 0 ] ; then |
| echo git fetch "https://go.googlesource.com/go" "${cl}" failed |
| exit 1 |
| fi |
| git checkout FETCH_HEAD^1 |
| if [ $? != 0 ] ; then |
| echo git checkout FETCH_HEAD^1 failed |
| exit 1 |
| fi |
| ./make.bash |
| if [ $? != 0 ] ; then |
| echo BASE make.bash FAILED |
| exit 1 |
| fi |
| oldtag=`git log -n 1 --format='%h'` |
| export oldtag |
| |
| cd "${ROOT}" |
| |
| if [ -e go-new ] ; then |
| rm -rf go-new |
| fi |
| git clone https://go.googlesource.com/go go-new |
| if [ $? != 0 ] ; then |
| echo git clone go-new failed |
| exit 1 |
| fi |
| cd go-new/src |
| |
| git fetch "https://go.googlesource.com/go" "${cl}" |
| if [ $? != 0 ] ; then |
| echo git fetch "https://go.googlesource.com/go" "${cl}" failed |
| exit 1 |
| fi |
| git checkout FETCH_HEAD |
| if [ $? != 0 ] ; then |
| echo git checkout FETCH_HEAD failed |
| exit 1 |
| fi |
| |
| ./make.bash |
| if [ $? != 0 ] ; then |
| echo make.bash failed |
| exit 1 |
| fi |
| newtag=`git log -n 1 --format='%h'` |
| export newtag |
| |
| cd "${ROOT}" |
| GOARCH="${BENTARCH}" ${NUMACTL} ${PERFLOCK} bent -v -N=${N} -a=${B} -L=bentjobs.log -C=configurations-cmpjob.toml "$@" |
| RUN=`tail -1 bentjobs.log | awk -c '{print $1}'` |
| |
| cd bench |
| STAMP="stamp-$$" |
| export STAMP |
| echo "suite: bent-cmp-cl" >> ${STAMP} |
| echo "bentstamp: ${RUN}" >> "${STAMP}" |
| echo "oldtag: ${oldtag}" >> "${STAMP}" |
| echo "newtag: ${newtag}" >> "${STAMP}" |
| |
| oldlog="old-${oldtag}" |
| newlog="new-${newtag}" |
| |
| cat "${RUN}.Old.build" > "${oldlog}" |
| cat "${RUN}.New.build" > "${newlog}" |
| egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.Old.stdout" >> "${oldlog}" |
| egrep '^(Benchmark|[-_a-zA-Z0-9]+:)' "${RUN}.New.stdout" >> "${newlog}" |
| cat "${RUN}.Old.{benchsize,benchdwarf}" >> "${oldlog}" |
| cat "${RUN}.New.{benchsize,benchdwarf}" >> "${newlog}" |
| benchsave -header "${STAMP}" "${oldlog}" "${newlog}" |
| rm "${STAMP}" |