58 lines
1.4 KiB
Bash
58 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
source $(dirname "$0")/tools.sh
|
|
|
|
# Clone NSPR if needed.
|
|
if [ ! -d "nspr" ]; then
|
|
hg_clone https://hg.mozilla.org/projects/nspr ./nspr default
|
|
|
|
if [[ -f nss/nspr.patch && "$ALLOW_NSPR_PATCH" == "1" ]]; then
|
|
pushd nspr
|
|
cat ../nss/nspr.patch | patch -p1
|
|
popd
|
|
fi
|
|
fi
|
|
|
|
# Build.
|
|
cd nss
|
|
make nss_build_all
|
|
|
|
# What we want to scan.
|
|
# key: directory to scan
|
|
# value: number of errors expected in that directory
|
|
declare -A scan=( \
|
|
[lib/base]=0 \
|
|
[lib/certdb]=0 \
|
|
[lib/certhigh]=0 \
|
|
[lib/ckfw]=0 \
|
|
[lib/crmf]=0 \
|
|
[lib/cryptohi]=0 \
|
|
[lib/dev]=0 \
|
|
[lib/freebl]=0 \
|
|
[lib/nss]=0 \
|
|
[lib/ssl]=0 \
|
|
[lib/util]=0 \
|
|
)
|
|
|
|
# remove .OBJ directories to force a rebuild of just the select few
|
|
for i in "${!scan[@]}"; do
|
|
find "$i" -name "*.OBJ" -exec rm -rf {} \+
|
|
done
|
|
|
|
# run scan-build (only building affected directories)
|
|
scan-build-5.0 -o /home/worker/artifacts --use-cc=$CC --use-c++=$CCC make nss_build_all && cd ..
|
|
|
|
# print errors we found
|
|
set +v +x
|
|
STATUS=0
|
|
for i in "${!scan[@]}"; do
|
|
n=$(grep -Rn "$i" /home/worker/artifacts/*/report-*.html | wc -l)
|
|
if [ $n -ne ${scan[$i]} ]; then
|
|
STATUS=1
|
|
echo "$(date '+%T') WARNING - TEST-UNEXPECTED-FAIL: $i contains $n scan-build errors"
|
|
elif [ $n -ne 0 ]; then
|
|
echo "$(date '+%T') WARNING - TEST-EXPECTED-FAIL: $i contains $n scan-build errors"
|
|
fi
|
|
done
|
|
exit $STATUS
|