#!/usr/bin/env bash
if [ -z $SAGE_EXTCODE ]; then
SAGE_EXTCODE=`${0/-valgrind} -c "from sage.env import SAGE_EXTCODE; print(SAGE_EXTCODE)"`
fi
SUPP=""
# Our python spkgs and also Debian install this file as python3.supp
PYTHON_SUPP_FILENAME="python3.supp"
for dir in "$SAGE_LOCAL/lib/valgrind" "/usr/local/lib/valgrind" "/usr/lib64/valgrind" "/usr/lib/valgrind" ; do
if [ -f "$dir"/"$PYTHON_SUPP_FILENAME" ]; then
SUPP=" --suppressions=$dir/$PYTHON_SUPP_FILENAME"
break
fi
done
if [ -z "$SUPP" ] ; then
echo "Python suppressions not found (not installed?), skipping"
fi
SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/pyalloc.supp"
SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage.supp"
SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/sage-additional.supp"
SUPP+=" --suppressions=$SAGE_EXTCODE/valgrind/valgrind-python.supp"
MEMCHECK_FLAGS="--leak-resolution=high --leak-check=full --num-callers=25 $SUPP"
if [ "$SAGE_MEMCHECK_FLAGS" ]; then
echo "Overwriting memcheck flags with: $SAGE_MEMCHECK_FLAGS"
MEMCHECK_FLAGS=$SAGE_MEMCHECK_FLAGS
else
echo "Using default flags: $MEMCHECK_FLAGS"
fi
valgrind --tool=memcheck $MEMCHECK_FLAGS sage-ipython "$@" -i