Issue #21166: Prevent possible segfaults and other random failures of

python --generate-posix-vars in pybuilddir.txt build target by ensuring
that pybuilddir.txt is always regenerated when configure is run and
that the newly built skeleton python does not inadvertently import
modules from previously installed instances.
This commit is contained in:
Ned Deily 2014-08-22 13:32:49 -07:00
parent 0242f79051
commit fcbc246e9f
4 changed files with 20 additions and 1 deletions

View File

@ -546,8 +546,18 @@ platform: $(BUILDPYTHON) pybuilddir.txt
# Create build directory and generate the sysconfig build-time data there. # Create build directory and generate the sysconfig build-time data there.
# pybuilddir.txt contains the name of the build dir and is used for # pybuilddir.txt contains the name of the build dir and is used for
# sys.path fixup -- see Modules/getpath.c. # sys.path fixup -- see Modules/getpath.c.
# Since this step runs before shared modules are built, try to avoid bootstrap
# problems by creating a dummy pybuildstr.txt just to allow interpreter
# initialization to succeed. It will be overwritten by generate-posix-vars
# or removed in case of failure.
pybuilddir.txt: $(BUILDPYTHON) pybuilddir.txt: $(BUILDPYTHON)
$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars @echo "none" > ./pybuilddir.txt
$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\
if test $$? -ne 0 ; then \
echo "generate-posix-vars failed" ; \
rm -f ./pybuilddir.txt ; \
exit 1 ; \
fi
# Build the shared modules # Build the shared modules
# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for

View File

@ -242,6 +242,9 @@ Build
- Issue #21811: Anticipated fixes to support OS X versions > 10.9. - Issue #21811: Anticipated fixes to support OS X versions > 10.9.
- Issue #21166: Prevent possible segfaults and other random failures of
python --generate-posix-vars in pybuilddir.txt build target.
IDLE IDLE
---- ----

3
configure vendored
View File

@ -2950,6 +2950,9 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
rm -f pybuilddir.txt
if test "$cross_compiling" = yes; then if test "$cross_compiling" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python interpreter for cross build" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python interpreter for cross build" >&5
$as_echo_n "checking for python interpreter for cross build... " >&6; } $as_echo_n "checking for python interpreter for cross build... " >&6; }

View File

@ -53,6 +53,9 @@ AC_CANONICAL_HOST
AC_SUBST(build) AC_SUBST(build)
AC_SUBST(host) AC_SUBST(host)
# pybuilddir.txt will be created by --generate-posix-vars in the Makefile
rm -f pybuilddir.txt
if test "$cross_compiling" = yes; then if test "$cross_compiling" = yes; then
AC_MSG_CHECKING([for python interpreter for cross build]) AC_MSG_CHECKING([for python interpreter for cross build])
if test -z "$PYTHON_FOR_BUILD"; then if test -z "$PYTHON_FOR_BUILD"; then