• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3#
4# Purpose: test all machine configurations, pydebug, refleaks, release build
5#          and release build with valgrind.
6#
7# Synopsis: ./runall-memorydebugger.sh [--all-configs64 | --all-configs32]
8#
9# Requirements: valgrind
10#
11
12# Set additional CFLAGS and LDFLAGS for ./configure
13ADD_CFLAGS=
14ADD_LDFLAGS=
15
16
17CONFIGS_64="x64 uint128 ansi64 universal"
18CONFIGS_32="ppro ansi32 ansi-legacy universal"
19
20VALGRIND="valgrind --tool=memcheck --leak-resolution=high \
21          --db-attach=yes --suppressions=Misc/valgrind-python.supp"
22
23# Get args
24case $@ in
25     *--all-configs64*)
26         CONFIGS=$CONFIGS_64
27         ;;
28     *--all-configs32*)
29         CONFIGS=$CONFIGS_32
30         ;;
31     *)
32         CONFIGS="auto"
33         ;;
34esac
35
36# gmake required
37GMAKE=`which gmake`
38if [ X"$GMAKE" = X"" ]; then
39    GMAKE=make
40fi
41
42# Pretty print configurations
43print_config ()
44{
45    len=`echo $@ | wc -c`
46    margin="#%"`expr \( 74 - $len \) / 2`"s"
47
48    echo ""
49    echo "# ========================================================================"
50    printf $margin ""
51    echo $@
52    echo "# ========================================================================"
53    echo ""
54}
55
56
57cd ..
58
59# test_decimal: refleak, regular and Valgrind tests
60for config in $CONFIGS; do
61
62        unset PYTHON_DECIMAL_WITH_MACHINE
63        libmpdec_config=$config
64        if [ X"$config" != X"auto" ]; then
65            PYTHON_DECIMAL_WITH_MACHINE=$config
66            export PYTHON_DECIMAL_WITH_MACHINE
67        else
68            libmpdec_config=""
69        fi
70
71        ############ refleak tests ###########
72        print_config "refleak tests: config=$config"
73        printf "\nbuilding python ...\n\n"
74
75        cd ../../
76        $GMAKE distclean > /dev/null 2>&1
77        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --with-pydebug > /dev/null 2>&1
78        $GMAKE | grep _decimal
79
80        printf "\n\n# ======================== refleak tests ===========================\n\n"
81        ./python -m test -uall -R 2:2 test_decimal
82
83
84        ############ regular tests ###########
85        print_config "regular tests: config=$config"
86        printf "\nbuilding python ...\n\n"
87
88        $GMAKE distclean > /dev/null 2>&1
89        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" > /dev/null 2>&1
90        $GMAKE | grep _decimal
91
92        printf "\n\n# ======================== regular tests ===========================\n\n"
93        ./python -m test -uall test_decimal
94
95
96        ########### valgrind tests ###########
97        valgrind=$VALGRIND
98        case "$config" in
99            # Valgrind has no support for 80 bit long double arithmetic.
100            ppro) valgrind= ;;
101            auto) case `uname -m` in
102                      i386|i486|i586|i686) valgrind= ;;
103                  esac
104        esac
105
106        print_config "valgrind tests: config=$config"
107        printf "\nbuilding python ...\n\n"
108        $GMAKE distclean > /dev/null 2>&1
109        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --without-pymalloc > /dev/null 2>&1
110        $GMAKE | grep _decimal
111
112        printf "\n\n# ======================== valgrind tests ===========================\n\n"
113        $valgrind ./python -m test -uall test_decimal
114
115        cd Modules/_decimal
116done
117
118# deccheck
119cd ../../
120for config in $CONFIGS; do
121
122        unset PYTHON_DECIMAL_WITH_MACHINE
123        if [ X"$config" != X"auto" ]; then
124            PYTHON_DECIMAL_WITH_MACHINE=$config
125            export PYTHON_DECIMAL_WITH_MACHINE
126        fi
127
128        ############ debug ############
129        print_config "deccheck: config=$config --with-pydebug"
130        printf "\nbuilding python ...\n\n"
131
132        $GMAKE distclean > /dev/null 2>&1
133        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --with-pydebug > /dev/null 2>&1
134        $GMAKE | grep _decimal
135
136        printf "\n\n# ========================== debug ===========================\n\n"
137        ./python Modules/_decimal/tests/deccheck.py
138
139        ########### regular ###########
140        print_config "deccheck: config=$config "
141        printf "\nbuilding python ...\n\n"
142
143        $GMAKE distclean > /dev/null 2>&1
144        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" > /dev/null 2>&1
145        $GMAKE | grep _decimal
146
147        printf "\n\n# ======================== regular ===========================\n\n"
148        ./python Modules/_decimal/tests/deccheck.py
149
150        ########### valgrind ###########
151        valgrind=$VALGRIND
152        case "$config" in
153            # Valgrind has no support for 80 bit long double arithmetic.
154            ppro) valgrind= ;;
155            auto) case `uname -m` in
156                      i386|i486|i586|i686) valgrind= ;;
157                  esac
158        esac
159
160        print_config "valgrind deccheck: config=$config "
161        printf "\nbuilding python ...\n\n"
162
163        $GMAKE distclean > /dev/null 2>&1
164        ./configure CFLAGS="$ADD_CFLAGS" LDFLAGS="$ADD_LDFLAGS" --without-pymalloc > /dev/null 2>&1
165        $GMAKE | grep _decimal
166
167        printf "\n\n# ======================== valgrind ==========================\n\n"
168        $valgrind ./python Modules/_decimal/tests/deccheck.py
169done
170
171
172
173