A pgo-extended-corpus CI toolchain task is added that is used during PGO instrumentation runs. It currently just contains the JetStream3 benchmark, but could contain other things in the future. The profilerserver.py now takes a `--extended-corpus` optional flag which should point at a pgo-extended-corpus artifact. The `pgo/index.html` page now takes a `?extendedCorpus=true` flag which indicates the corpus should be used. The android script is different and is not updated yet. The MOZ_PGO=1 configure option is extended with an additional MOZ_PGO_EXTENDED_CORPUS=1 option which opts-into the extended-corpus. It should be provided already through the fetches directory or automatically downloaded through `bootstrap_toolchain`. Differential Revision: https://phabricator.services.mozilla.com/D256645
43 lines
1011 B
Bash
Executable File
43 lines
1011 B
Bash
Executable File
#! /bin/bash -vex
|
|
|
|
set -x -e
|
|
|
|
echo "running as" $(id)
|
|
|
|
: NEED_XVFB ${NEED_XVFB:=false}
|
|
: UPLOAD_PATH ${UPLOAD_PATH:=$HOME/artifacts}
|
|
export UPLOAD_PATH
|
|
|
|
####
|
|
# Taskcluster friendly wrapper for running the profileserver
|
|
####
|
|
|
|
PGO_RUNDIR=obj-firefox/dist
|
|
export JARLOG_FILE="en-US.log"
|
|
export LLVM_PROFDATA=$MOZ_FETCHES_DIR/clang/bin/llvm-profdata
|
|
|
|
set -v
|
|
|
|
if $NEED_XVFB; then
|
|
# run XVfb in the background
|
|
. /builds/worker/scripts/xvfb.sh
|
|
|
|
cleanup() {
|
|
local rv=$?
|
|
cleanup_xvfb
|
|
exit $rv
|
|
}
|
|
trap cleanup EXIT INT
|
|
|
|
start_xvfb '1024x768x24' 2
|
|
fi
|
|
|
|
# Move our fetched firefox into objdir/dist so the jarlog entries will match
|
|
# the paths when the final PGO stage packages the build.
|
|
mkdir -p $PGO_RUNDIR
|
|
mkdir -p $UPLOAD_PATH
|
|
mv $MOZ_FETCHES_DIR/firefox $PGO_RUNDIR
|
|
./mach python build/pgo/profileserver.py --binary $PGO_RUNDIR/firefox/firefox --extended-corpus $MOZ_FETCHES_DIR/pgo-extended-corpus/
|
|
|
|
tar -acvf $UPLOAD_PATH/profdata.tar.xz merged.profdata en-US.log
|