diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2012-01-13 18:41:42 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2012-01-13 18:41:42 (GMT) |
commit | fffbfbd3970b0b3ca2be0e7ab383b56f55ba0f57 (patch) | |
tree | a11878d7b77e29ca79cfe9041e58f57be8848d93 /Misc | |
parent | bbf53614b724e9beded57b72e1c8d9f7f1b8654a (diff) | |
download | cpython-fffbfbd3970b0b3ca2be0e7ab383b56f55ba0f57.zip cpython-fffbfbd3970b0b3ca2be0e7ab383b56f55ba0f57.tar.gz cpython-fffbfbd3970b0b3ca2be0e7ab383b56f55ba0f57.tar.bz2 |
Issue #13764: remove outdated script Misc/build.sh
Diffstat (limited to 'Misc')
-rwxr-xr-x | Misc/build.sh | 281 |
1 files changed, 0 insertions, 281 deletions
diff --git a/Misc/build.sh b/Misc/build.sh deleted file mode 100755 index ecbe579..0000000 --- a/Misc/build.sh +++ /dev/null @@ -1,281 +0,0 @@ -#!/bin/sh - -## Script to build and test the latest python from svn. It basically -## does this: -## svn up ; ./configure ; make ; make test ; make install ; cd Doc ; make -## -## Logs are kept and rsync'ed to the webhost. If there are test failure(s), -## information about the failure(s) is mailed. -## -## The user must be a member of the webmaster group locally and on webhost. -## -## This script is run on the PSF's machine as user neal via crontab. -## -## Yes, this script would probably be easier in python, but then -## there's a bootstrap problem. What if Python doesn't build? -## -## This script should be fairly clean Bourne shell, ie not too many -## bash-isms. We should try to keep it portable to other Unixes. -## Even though it will probably only run on Linux. I'm sure there are -## several GNU-isms currently (date +%s and readlink). -## -## Perhaps this script should be broken up into 2 (or more) components. -## Building doc is orthogonal to the rest of the python build/test. -## - -## FIXME: we should detect test hangs (eg, if they take more than 45 minutes) - -## FIXME: we should run valgrind -## FIXME: we should run code coverage - -## Utilities invoked in this script include: -## basename, date, dirname, expr, grep, readlink, uname -## cksum, make, mutt, rsync, svn - -## remember where did we started from -DIR=`dirname $0` -if [ "$DIR" = "" ]; then - DIR="." -fi - -## make directory absolute -DIR=`readlink -f $DIR` -FULLPATHNAME="$DIR/`basename $0`" -## we want Misc/.. -DIR=`dirname $DIR` - -## Configurable options - -FAILURE_SUBJECT="Python Regression Test Failures" -#FAILURE_MAILTO="YOUR_ACCOUNT@gmail.com" -FAILURE_MAILTO="python-checkins@python.org" -#FAILURE_CC="optional--uncomment and set to desired address" - -REMOTE_SYSTEM="neal@dinsdale.python.org" -REMOTE_DIR="/data/ftp.python.org/pub/docs.python.org/dev/py3k" -RESULT_FILE="$DIR/build/index.html" -INSTALL_DIR="/tmp/python-test-3.2/local" -RSYNC_OPTS="-C -e ssh -rlogD" - -# Always run the installed version of Python. -PYTHON=$INSTALL_DIR/bin/python - -# Python options and regression test program that should always be run. -REGRTEST_ARGS="-E $INSTALL_DIR/lib/python3.0/test/regrtest.py" - -REFLOG="build/reflog.txt.out" -# These tests are not stable and falsely report leaks sometimes. -# The entire leak report will be mailed if any test not in this list leaks. -# Note: test_XXX (none currently) really leak, but are disabled -# so we don't send spam. Any test which really leaks should only -# be listed here if there are also test cases under Lib/test/leakers. -LEAKY_TESTS="test_(asynchat|cmd_line|docxmlrpc|dumbdbm|file|ftplib|httpservers|imaplib|popen2|socket|smtplib|sys|telnetlib|threadedtempfile|threading|threadsignals|xmlrpc)" - -# These tests always fail, so skip them so we don't get false positives. -_ALWAYS_SKIP="" -ALWAYS_SKIP="-x $_ALWAYS_SKIP" - -# Skip these tests altogether when looking for leaks. These tests -# do not need to be stored above in LEAKY_TESTS too. -# test_logging causes hangs, skip it. -# KBK 21Apr09: test_httpservers causes hangs, skip for now. -LEAKY_SKIPS="-x test_compiler test_logging test_httpservers" - -# Change this flag to "yes" for old releases to only update/build the docs. -BUILD_DISABLED="no" - -## utility functions -current_time() { - date +%s -} - -update_status() { - now=`current_time` - time=`expr $now - $3` - echo "<li><a href=\"$2\">$1</a> <font size=\"-1\">($time seconds)</font></li>" >> $RESULT_FILE -} - -place_summary_first() { - testf=$1 - sed -n '/^[0-9][0-9]* tests OK\./,$p' < $testf \ - | egrep -v '\[[0-9]+ refs\]' > $testf.tmp - echo "" >> $testf.tmp - cat $testf >> $testf.tmp - mv $testf.tmp $testf -} - -count_failures () { - testf=$1 - n=`grep -ic " failed:" $testf` - if [ $n -eq 1 ] ; then - n=`grep " failed:" $testf | sed -e 's/ .*//'` - fi - echo $n -} - -mail_on_failure() { - if [ "$NUM_FAILURES" != "0" ]; then - dest=$FAILURE_MAILTO - # FAILURE_CC is optional. - if [ "$FAILURE_CC" != "" ]; then - dest="$dest -c $FAILURE_CC" - fi - if [ "x$3" != "x" ] ; then - (echo "More important issues:" - echo "----------------------" - egrep -v "$3" < $2 - echo "" - echo "Less important issues:" - echo "----------------------" - egrep "$3" < $2) - else - cat $2 - fi | mutt -s "$FAILURE_SUBJECT $1 ($NUM_FAILURES)" $dest - fi -} - -## setup -cd $DIR -make clobber > /dev/null 2>&1 -cp -p Modules/Setup.dist Modules/Setup -# But maybe there was no Makefile - we are only building docs. Clear build: -rm -rf build/ -mkdir -p build -rm -rf $INSTALL_DIR -## get the path we are building -repo_path=$(grep "url=" .svn/entries | sed -e s/\\W*url=// -e s/\"//g) - -## create results file -TITLE="Automated Python Build Results" -echo "<html>" >> $RESULT_FILE -echo " <head>" >> $RESULT_FILE -echo " <title>$TITLE</title>" >> $RESULT_FILE -echo " <meta http-equiv=\"refresh\" content=\"43200\">" >> $RESULT_FILE -echo " </head>" >> $RESULT_FILE -echo "<body>" >> $RESULT_FILE -echo "<h2>Automated Python Build Results</h2>" >> $RESULT_FILE -echo "<table>" >> $RESULT_FILE -echo " <tr>" >> $RESULT_FILE -echo " <td>Built on:</td><td>`date`</td>" >> $RESULT_FILE -echo " </tr><tr>" >> $RESULT_FILE -echo " <td>Hostname:</td><td>`uname -n`</td>" >> $RESULT_FILE -echo " </tr><tr>" >> $RESULT_FILE -echo " <td>Platform:</td><td>`uname -srmpo`</td>" >> $RESULT_FILE -echo " </tr><tr>" >> $RESULT_FILE -echo " <td>URL:</td><td>$repo_path</td>" >> $RESULT_FILE -echo " </tr>" >> $RESULT_FILE -echo "</table>" >> $RESULT_FILE -echo "<ul>" >> $RESULT_FILE - -## update, build, and test -ORIG_CHECKSUM=`cksum $FULLPATHNAME` -F=svn-update.out -start=`current_time` -svn update >& build/$F -err=$? -update_status "Updating" "$F" $start -if [ $err = 0 -a "$BUILD_DISABLED" != "yes" ]; then - ## FIXME: we should check if this file has changed. - ## If it has changed, we should re-run the script to pick up changes. - if [ "$ORIG_CHECKSUM" != "$ORIG_CHECKSUM" ]; then - exec $FULLPATHNAME $@ - fi - - F=svn-stat.out - start=`current_time` - svn stat >& build/$F - ## ignore some of the diffs - NUM_DIFFS=`egrep -vc '^. (@test|db_home|Lib/test/(regrtest\.py|db_home))$' build/$F` - update_status "svn stat ($NUM_DIFFS possibly important diffs)" "$F" $start - - F=configure.out - start=`current_time` - ./configure --prefix=$INSTALL_DIR --with-pydebug >& build/$F - err=$? - update_status "Configuring" "$F" $start - if [ $err = 0 ]; then - F=make.out - start=`current_time` - make >& build/$F - err=$? - warnings=`grep warning build/$F | egrep -vc "te?mpnam(_r|)' is dangerous,"` - update_status "Building ($warnings warnings)" "$F" $start - if [ $err = 0 ]; then - ## make install - F=make-install.out - start=`current_time` - make install >& build/$F - update_status "Installing" "$F" $start - - if [ ! -x $PYTHON ]; then - ln -s ${PYTHON}3.* $PYTHON - fi - - ## make and run basic tests - F=make-test.out - start=`current_time` - $PYTHON $REGRTEST_ARGS -W -u urlfetch >& build/$F - NUM_FAILURES=`count_failures build/$F` - place_summary_first build/$F - update_status "Testing basics ($NUM_FAILURES failures)" "$F" $start - mail_on_failure "basics" build/$F - - F=make-test-opt.out - start=`current_time` - $PYTHON -O $REGRTEST_ARGS -W -u urlfetch >& build/$F - NUM_FAILURES=`count_failures build/$F` - place_summary_first build/$F - update_status "Testing opt ($NUM_FAILURES failures)" "$F" $start - mail_on_failure "opt" build/$F - - ## run the tests looking for leaks - F=make-test-refleak.out - start=`current_time` - ## ensure that the reflog exists so the grep doesn't fail - touch $REFLOG - $PYTHON $REGRTEST_ARGS -R 4:3:$REFLOG -u network $LEAKY_SKIPS >& build/$F - LEAK_PAT="($LEAKY_TESTS|sum=0)" - NUM_FAILURES=`egrep -vc "$LEAK_PAT" $REFLOG` - place_summary_first build/$F - update_status "Testing refleaks ($NUM_FAILURES failures)" "$F" $start - mail_on_failure "refleak" $REFLOG "$LEAK_PAT" - - ## now try to run all the tests - F=make-testall.out - start=`current_time` - ## skip curses when running from cron since there's no terminal - ## skip sound since it's not setup on the PSF box (/dev/dsp) - $PYTHON $REGRTEST_ARGS -W -uall -x test_curses test_linuxaudiodev test_ossaudiodev &_ALWAYS_SKIP >& build/$F - NUM_FAILURES=`count_failures build/$F` - place_summary_first build/$F - update_status "Testing all except curses and sound ($NUM_FAILURES failures)" "$F" $start - mail_on_failure "all" build/$F - fi - fi -fi - - -## make doc -cd $DIR/Doc -F="make-doc.out" -start=`current_time` -make clean > ../build/$F 2>&1 -make checkout html >> ../build/$F 2>&1 -err=$? -update_status "Making doc" "$F" $start -if [ $err != 0 ]; then - NUM_FAILURES=1 - mail_on_failure "doc" ../build/$F -fi - -echo "</ul>" >> $RESULT_FILE -echo "</body>" >> $RESULT_FILE -echo "</html>" >> $RESULT_FILE - -## copy results -## (not used anymore, the daily build is now done directly on the server) -#chgrp -R webmaster build/html -#chmod -R g+w build/html -#rsync $RSYNC_OPTS build/html/* $REMOTE_SYSTEM:$REMOTE_DIR -#cd ../build -#rsync $RSYNC_OPTS index.html *.out $REMOTE_SYSTEM:$REMOTE_DIR/results/ |