blob: 9dc50eba7bc5f6fc1bfd0593dadada966373939d [file] [log] [blame]
#!/bin/bash
set -e
set -x
SCRIPTS_DIR="$(readlink -f $(dirname $0)/../..)"
if [ -f "$PROPERTIES_FILE" ]; then
PYTHON="/tools/python/bin/python"
[ -x $PYTHON ] || PYTHON="${PYTHON}2.7"
[ -x $PYTHON ] || PYTHON=$(which python2.7)
[ -x $PYTHON ] || PYTHON=python
JSONTOOL="$PYTHON $SCRIPTS_DIR/buildfarm/utils/jsontool.py"
builder=$($JSONTOOL -k properties.buildername $PROPERTIES_FILE)
slavename=$($JSONTOOL -k properties.slavename $PROPERTIES_FILE)
master=$($JSONTOOL -k properties.master $PROPERTIES_FILE)
branch=$($JSONTOOL -k properties.branch $PROPERTIES_FILE)
REVISION=$($JSONTOOL -k properties.revision $PROPERTIES_FILE)
BRANCHES_JSON=$SCRIPTS_DIR/buildfarm/maintenance/production-branches.json
HG_REPO=$($JSONTOOL -k ${branch}.repo $BRANCHES_JSON)
HG_BUNDLE="http://ftp.mozilla.org/pub/mozilla.org/firefox/bundles/${branch}.hg"
builddir=$(basename $(readlink -f .))
# Clobbering
if [ -z "$CLOBBERER_URL" ]; then
export CLOBBERER_URL="https://api.pub.build.mozilla.org/clobberer/lastclobber"
fi
(cd $SCRIPTS_DIR/../..
$PYTHON $SCRIPTS_DIR/clobberer/clobberer.py -s scripts -s $(basename $PROPERTIES_FILE) \
$CLOBBERER_URL $branch "$builder" $builddir $slavename $master)
# Purging
(cd $SCRIPTS_DIR/..
$PYTHON -u $SCRIPTS_DIR/buildfarm/maintenance/purge_builds.py \
-s 8 -n info -n 'rel-*' -n 'tb-rel-*' -n $builddir)
fi
if [ -z "$HG_REPO" ]; then
export HG_REPO="https://hg.mozilla.org/mozilla-central"
export HG_BUNDLE="https://ftp.mozilla.org/pub/mozilla.org/firefox/bundles/mozilla-central.hg"
fi
if [ -z "$REVISION" ]; then
export REVISION="default"
fi
$PYTHON $SCRIPTS_DIR/buildfarm/utils/retry.py -s 1 -r 5 -t 3660 \
$PYTHON $SCRIPTS_DIR/buildfarm/utils/hgtool.py --rev $REVISION \
--bundle $HG_BUNDLE $HG_REPO src || exit 2
# Put our short revisions into the properties directory for consumption by buildbot.
if [ ! -d properties ]; then
mkdir properties
fi
pushd src; GOT_REVISION=`hg parent --template={node} | cut -c1-12`; popd
echo "revision: $GOT_REVISION" > properties/revision
echo "got_revision: $GOT_REVISION" > properties/got_revision
if [ -f src/build/valgrind/valgrind.sh ]; then
bash src/build/valgrind/valgrind.sh
exit $?
fi
srcdir=$PWD/src
objdir=${MOZ_OBJDIR-objdir}
# If the objdir is a relative path, it is relative to the srcdir.
case "$objdir" in
/*)
;;
*)
objdir="$srcdir/$objdir"
;;
esac
if [ ! -d $objdir ]; then
mkdir $objdir
fi
cd $objdir
if [ "`uname -m`" = "x86_64" ]; then
export LD_LIBRARY_PATH=/tools/gcc-4.5-0moz3/installed/lib64
_arch=64
else
export LD_LIBRARY_PATH=/tools/gcc-4.5-0moz3/installed/lib
_arch=32
fi
# Note: an exit code of 2 turns the job red on TBPL.
MOZCONFIG=$srcdir/browser/config/mozconfigs/linux${_arch}/valgrind make -f $srcdir/client.mk configure || exit 2
make -j4 || exit 2
make package || exit 2
# We need to set MOZBUILD_STATE_PATH so that |mach| skips its first-run
# initialization step and actually runs the |valgrind-test| command.
export MOZBUILD_STATE_PATH=.
# |mach valgrind-test|'s exit code will be 1 (which turns the job orange on
# TBPL) if Valgrind finds errors, and 2 (which turns the job red) if something
# else goes wrong, such as Valgrind crashing.
python2.7 $srcdir/mach valgrind-test
exit $?