mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
149
taskcluster/scripts/builder/hazard-analysis.sh
Normal file
149
taskcluster/scripts/builder/hazard-analysis.sh
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
#!/bin/bash -ex
|
||||
|
||||
[ -n "$WORKSPACE" ]
|
||||
[ -n "$MOZ_OBJDIR" ]
|
||||
[ -n "$GECKO_DIR" ]
|
||||
|
||||
HAZARD_SHELL_OBJDIR=$WORKSPACE/obj-haz-shell
|
||||
JS_SRCDIR=$GECKO_DIR/js/src
|
||||
ANALYSIS_SRCDIR=$JS_SRCDIR/devtools/rootAnalysis
|
||||
|
||||
export CC="$TOOLTOOL_DIR/gcc/bin/gcc"
|
||||
export CXX="$TOOLTOOL_DIR/gcc/bin/g++"
|
||||
|
||||
PYTHON=python2.7
|
||||
if ! which $PYTHON; then
|
||||
PYTHON=python
|
||||
fi
|
||||
|
||||
|
||||
function check_commit_msg () {
|
||||
( set +e;
|
||||
if [[ -n "$AUTOMATION" ]]; then
|
||||
hg --cwd "$GECKO_DIR" log -r. --template '{desc}\n' | grep -F -q -- "$1"
|
||||
else
|
||||
echo -- "$SCRIPT_FLAGS" | grep -F -q -- "$1"
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
if check_commit_msg "--dep"; then
|
||||
HAZ_DEP=1
|
||||
fi
|
||||
|
||||
function build_js_shell () {
|
||||
# Must unset MOZ_OBJDIR and MOZCONFIG here to prevent the build system from
|
||||
# inferring that the analysis output directory is the current objdir. We
|
||||
# need a separate objdir here to build the opt JS shell to use to run the
|
||||
# analysis.
|
||||
(
|
||||
unset MOZ_OBJDIR
|
||||
unset MOZCONFIG
|
||||
( cd $JS_SRCDIR; autoconf-2.13 )
|
||||
if [[ -z "$HAZ_DEP" ]]; then
|
||||
[ -d $HAZARD_SHELL_OBJDIR ] && rm -rf $HAZARD_SHELL_OBJDIR
|
||||
fi
|
||||
mkdir -p $HAZARD_SHELL_OBJDIR || true
|
||||
cd $HAZARD_SHELL_OBJDIR
|
||||
$JS_SRCDIR/configure --enable-optimize --disable-debug --enable-ctypes --enable-nspr-build --without-intl-api --with-ccache
|
||||
make -j4
|
||||
) # Restore MOZ_OBJDIR and MOZCONFIG
|
||||
}
|
||||
|
||||
function configure_analysis () {
|
||||
local analysis_dir
|
||||
analysis_dir="$1"
|
||||
|
||||
if [[ -z "$HAZ_DEP" ]]; then
|
||||
[ -d "$analysis_dir" ] && rm -rf "$analysis_dir"
|
||||
fi
|
||||
|
||||
mkdir -p "$analysis_dir" || true
|
||||
(
|
||||
cd "$analysis_dir"
|
||||
cat > defaults.py <<EOF
|
||||
js = "$HAZARD_SHELL_OBJDIR/dist/bin/js"
|
||||
analysis_scriptdir = "$ANALYSIS_SRCDIR"
|
||||
objdir = "$MOZ_OBJDIR"
|
||||
source = "$GECKO_DIR"
|
||||
sixgill = "$TOOLTOOL_DIR/sixgill/usr/libexec/sixgill"
|
||||
sixgill_bin = "$TOOLTOOL_DIR/sixgill/usr/bin"
|
||||
EOF
|
||||
|
||||
cat > run-analysis.sh <<EOF
|
||||
#!/bin/sh
|
||||
if [ \$# -eq 0 ]; then
|
||||
set gcTypes
|
||||
fi
|
||||
export ANALYSIS_SCRIPTDIR="$ANALYSIS_SRCDIR"
|
||||
exec "$ANALYSIS_SRCDIR/analyze.py" "\$@"
|
||||
EOF
|
||||
chmod +x run-analysis.sh
|
||||
)
|
||||
}
|
||||
|
||||
function run_analysis () {
|
||||
local analysis_dir
|
||||
analysis_dir="$1"
|
||||
local build_type
|
||||
build_type="$2"
|
||||
|
||||
if [[ -z "$HAZ_DEP" ]]; then
|
||||
[ -d $MOZ_OBJDIR ] && rm -rf $MOZ_OBJDIR
|
||||
fi
|
||||
|
||||
(
|
||||
cd "$analysis_dir"
|
||||
$PYTHON "$ANALYSIS_SRCDIR/analyze.py" --buildcommand="$GECKO_DIR/testing/mozharness/scripts/spidermonkey/build.${build_type}"
|
||||
)
|
||||
}
|
||||
|
||||
function grab_artifacts () {
|
||||
local analysis_dir
|
||||
analysis_dir="$1"
|
||||
local artifacts
|
||||
artifacts="$2"
|
||||
|
||||
(
|
||||
cd "$analysis_dir"
|
||||
ls -lah
|
||||
|
||||
# Do not error out if no files found
|
||||
shopt -s nullglob
|
||||
set +e
|
||||
for f in *.txt *.lst; do
|
||||
gzip -9 -c "$f" > "${artifacts}/$f.gz"
|
||||
done
|
||||
|
||||
# Check whether the user requested .xdb file upload in the top commit comment
|
||||
if check_commit_msg "--upload-xdbs"; then
|
||||
HAZ_UPLOAD_XDBS=1
|
||||
fi
|
||||
|
||||
if [ -n "$HAZ_UPLOAD_XDBS" ]; then
|
||||
for f in *.xdb; do
|
||||
bzip2 -c "$f" > "${artifacts}/$f.bz2"
|
||||
done
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
function check_hazards () {
|
||||
(
|
||||
set +e
|
||||
NUM_HAZARDS=$(grep -c 'Function.*has unrooted.*live across GC call' "$1"/rootingHazards.txt)
|
||||
NUM_UNSAFE=$(grep -c '^Function.*takes unsafe address of unrooted' "$1"/refs.txt)
|
||||
NUM_UNNECESSARY=$(grep -c '^Function.* has unnecessary root' "$1"/unnecessary.txt)
|
||||
|
||||
set +x
|
||||
echo "TinderboxPrint: rooting hazards<br/>$NUM_HAZARDS"
|
||||
echo "TinderboxPrint: unsafe references to unrooted GC pointers<br/>$NUM_UNSAFE"
|
||||
echo "TinderboxPrint: unnecessary roots<br/>$NUM_UNNECESSARY"
|
||||
|
||||
if [ $NUM_HAZARDS -gt 0 ]; then
|
||||
echo "TEST-UNEXPECTED-FAIL $NUM_HAZARDS hazards detected" >&2
|
||||
echo "TinderboxPrint: documentation<br/><a href='https://wiki.mozilla.org/Javascript:Hazard_Builds'>static rooting hazard analysis failures</a>, visit \"Inspect Task\" link for hazard details"
|
||||
exit 1
|
||||
fi
|
||||
)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue