#!/bin/sh
#
# testall.atom
#
# This script creates all.Counts file that can be fed to prof(1)
# to produce various basic block counting profiles.
#
# This script needs to be run at the top level of the Perl build
# directory after the "make all" and "make test" targets have been run.
#
# You will also need to have perl.pixie built,
# which means that you will also have Configured with -Doptimize=-g.
#
# After the script has been run (this will take several minutes)
# you will have a file called all.Counts, which contains the cumulative
# basic block counting results over the whole Perl test suite.
# You can produce various reports using prof(1);
#
# prof -pixie -all -L. perl all.Counts
# prof -pixie -heavy -all -L. perl all.Counts
# prof -pixie -invocations -all -L. perl all.Counts
# prof -pixie -lines -all -L. perl all.Counts
# prof -pixie -testcoverage -all -L. perl all.Counts
# prof -pixie -zero -all -L. perl all.Counts
#
# io/openpid and op/fork core on me, I don't know why and haven't
# taken a look yet.
#
# jhi@iki.fi
#
if test ! -f /usr/bin/atom
then
echo "$0: no /usr/bin/atom"
exit 1
fi
if test ! -f perl; then echo "$0: no perl"; exit 1; fi
if test ! -f perl.pixie; then echo "$0: no perl.pixie; exit 1; fi
if test ! -f t/perl; then echo "$0: no t/perl; exit 1; fi
LD_LIBRARY_PATH=`pwd`
export LD_LIBRARY_PATH
cd t || exit 1
ln -sf ../perl.pixie .
if test $# = 0; then
the_t=`echo base/*.t comp/*.t cmd/*.t run/*.t io/*.t; echo op/*.t uni/*.t pod/*.t x2p/*.t; find ../ext ../lib -name '*.t' -print`
else
the_t=$@
fi
PERL_DESTRUCT_LEVEL=2
export PERL_DESTRUCT_LEVEL
PERL_CORE=1
export PERL_CORE
rm -f all.Counts
for t in $the_t
do
case "$t" in
ext/*|lib/*) t=../$t ;;
t/*) t=`echo $t|sed 's:^t/::'` ;;
esac
echo $t|sed 's:\.t$::'
sw=''
case "`head -1 $t|egrep -e '^#.* -.*T'`" in
*-*T*) sw="$sw -T" ;;
esac
case "`head -1 $t|egrep -e '^#.* -.*t'`" in
*-*t*) sw="$sw -t" ;;
esac
./perl.pixie -I../lib $sw $t > /dev/null
if cd ..
then
if test -f all.Counts
then
prof -pixie -merge new.Counts -L. -incobj libperl.so perl t/perl.Counts all.Counts
mv new.Counts all.Counts
else
mv t/perl.Counts all.Counts
fi
cd t
fi
done
exit 0
|