Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
fffbfbd3
Commit
fffbfbd3
authored
Jan 13, 2012
by
Antoine Pitrou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #13764: remove outdated script Misc/build.sh
parent
bbf53614
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
0 additions
and
281 deletions
+0
-281
Misc/build.sh
Misc/build.sh
+0
-281
No files found.
Misc/build.sh
deleted
100755 → 0
View file @
bbf53614
#!/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/
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment