changeset: 92196:e52d85f2e284 branch: 3.4 parent: 92188:d99014320220 user: Ned Deily date: Fri Aug 22 13:32:49 2014 -0700 files: Makefile.pre.in Misc/NEWS configure configure.ac description: 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. diff -r d99014320220 -r e52d85f2e284 Makefile.pre.in --- a/Makefile.pre.in Fri Aug 22 20:52:15 2014 +0300 +++ b/Makefile.pre.in Fri Aug 22 13:32:49 2014 -0700 @@ -546,8 +546,18 @@ # Create build directory and generate the sysconfig build-time data there. # pybuilddir.txt contains the name of the build dir and is used for # 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) - $(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 # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for diff -r d99014320220 -r e52d85f2e284 Misc/NEWS --- a/Misc/NEWS Fri Aug 22 20:52:15 2014 +0300 +++ b/Misc/NEWS Fri Aug 22 13:32:49 2014 -0700 @@ -242,6 +242,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 ---- diff -r d99014320220 -r e52d85f2e284 configure --- a/configure Fri Aug 22 20:52:15 2014 +0300 +++ b/configure Fri Aug 22 13:32:49 2014 -0700 @@ -2950,6 +2950,9 @@ +# pybuilddir.txt will be created by --generate-posix-vars in the Makefile +rm -f pybuilddir.txt + if test "$cross_compiling" = yes; then { $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; } diff -r d99014320220 -r e52d85f2e284 configure.ac --- a/configure.ac Fri Aug 22 20:52:15 2014 +0300 +++ b/configure.ac Fri Aug 22 13:32:49 2014 -0700 @@ -53,6 +53,9 @@ AC_SUBST(build) 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 AC_MSG_CHECKING([for python interpreter for cross build]) if test -z "$PYTHON_FOR_BUILD"; then