mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 17:25:36 +00:00
e4e517faa7
--HG-- extra : rebase_source : 5aab1ed27703342fbabeadcde258f94a497de5a5
92 lines
2.6 KiB
Bash
Executable File
92 lines
2.6 KiB
Bash
Executable File
#!/bin/bash -ex
|
|
|
|
function usage() {
|
|
echo "Usage: $0 [--project <shell|browser>] <workspace-dir> flags..."
|
|
echo "flags are treated the same way as a commit message would be"
|
|
echo "(as in, they are scanned for directives just like a try: ... line)"
|
|
}
|
|
|
|
PROJECT=shell
|
|
WORKSPACE=
|
|
DO_TOOLTOOL=1
|
|
while [[ $# -gt 0 ]]; do
|
|
if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
|
|
usage
|
|
exit 0
|
|
elif [[ "$1" == "--project" ]]; then
|
|
shift
|
|
PROJECT="$1"
|
|
shift
|
|
elif [[ "$1" == "--no-tooltool" ]]; then
|
|
shift
|
|
DO_TOOLTOOL=
|
|
elif [[ -z "$WORKSPACE" ]]; then
|
|
WORKSPACE=$( cd "$1" && pwd )
|
|
shift
|
|
break
|
|
fi
|
|
done
|
|
|
|
SCRIPT_FLAGS="$@"
|
|
|
|
# Ensure all the scripts in this dir are on the path....
|
|
DIRNAME=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
|
PATH=$DIRNAME:$PATH
|
|
|
|
# Use GECKO_BASE_REPOSITORY as a signal for whether we are running in automation.
|
|
export AUTOMATION=${GECKO_BASE_REPOSITORY:+1}
|
|
|
|
: ${GECKO_DIR:=$WORKSPACE/gecko}
|
|
: ${TOOLTOOL_MANIFEST:=browser/config/tooltool-manifests/linux64/hazard.manifest}
|
|
: ${TOOLTOOL_CACHE:=$WORKSPACE/tt-cache}
|
|
: ${TOOLTOOL_REPO:=https://github.com/mozilla/build-tooltool}
|
|
|
|
if ! [ -d $GECKO_DIR ]; then
|
|
echo "GECKO_DIR must be set to a directory containing a gecko source checkout" >&2
|
|
exit 1
|
|
fi
|
|
GECKO_DIR=$( cd "$GECKO_DIR" && pwd )
|
|
|
|
# Directory to populate with tooltool-installed tools
|
|
export TOOLTOOL_DIR="$WORKSPACE"
|
|
|
|
# Directory to hold the (useless) object files generated by the analysis.
|
|
export MOZ_OBJDIR="$WORKSPACE/obj-analyzed"
|
|
mkdir -p "$MOZ_OBJDIR"
|
|
|
|
if [ -n "$DO_TOOLTOOL" ]; then
|
|
tc-vcs checkout --force-clone $WORKSPACE/tooltool $TOOLTOOL_REPO $TOOLTOOL_REPO $TOOLTOOL_REV
|
|
( cd $TOOLTOOL_DIR; python $WORKSPACE/tooltool/tooltool.py --url https://api.pub.build.mozilla.org/tooltool/ -m $GECKO_DIR/$TOOLTOOL_MANIFEST fetch -c $TOOLTOOL_CACHE )
|
|
fi
|
|
|
|
export NO_MERCURIAL_SETUP_CHECK=1
|
|
|
|
if [[ "$PROJECT" = "browser" ]]; then (
|
|
cd "$WORKSPACE"
|
|
set "$WORKSPACE"
|
|
. setup-ccache.sh
|
|
# Mozbuild config:
|
|
export MOZBUILD_STATE_PATH=$WORKSPACE/mozbuild/
|
|
# Create .mozbuild so mach doesn't complain about this
|
|
mkdir -p $MOZBUILD_STATE_PATH
|
|
) fi
|
|
. hazard-analysis.sh
|
|
|
|
build_js_shell
|
|
|
|
# Artifacts folder is outside of the cache.
|
|
mkdir -p $HOME/artifacts/ || true
|
|
|
|
function onexit () {
|
|
grab_artifacts "$WORKSPACE/analysis" "$HOME/artifacts"
|
|
}
|
|
|
|
trap onexit EXIT
|
|
|
|
configure_analysis "$WORKSPACE/analysis"
|
|
run_analysis "$WORKSPACE/analysis" "$PROJECT"
|
|
|
|
check_hazards "$WORKSPACE/analysis"
|
|
|
|
################################### script end ###################################
|