summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2014-08-22 13:36:30 -0700
committerNed Deily <nad@acm.org>2014-08-22 13:36:30 -0700
commit682c04c70c9af6df68cacce47c2f0d18c31dd443 (patch)
tree469f3df0be598966ce411ee98cdbfbaf49141ec0
parentd0aeda8f0ffbe4a7de9b492de9713d672dc8592d (diff)
parentfcbc246e9f02cc780970defbcfa01767b7e3a3c6 (diff)
downloadcpython-git-682c04c70c9af6df68cacce47c2f0d18c31dd443.tar.gz
Issue #21166: merge from 3.4
-rw-r--r--Makefile.pre.in12
-rw-r--r--Misc/NEWS3
-rwxr-xr-xconfigure3
-rw-r--r--configure.ac3
4 files changed, 20 insertions, 1 deletions
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 848cf95338..0a58b72275 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -553,8 +553,18 @@ platform: $(BUILDPYTHON) pybuilddir.txt
# 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 --git a/Misc/NEWS b/Misc/NEWS
index bdc53c6a76..da1fc32ac8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -825,6 +825,9 @@ Build
- 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.
+
C API
-----
diff --git a/configure b/configure
index c5ad543c6e..c4c5b7be6c 100755
--- a/configure
+++ b/configure
@@ -2954,6 +2954,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
{ $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 --git a/configure.ac b/configure.ac
index 193c99cd7f..086bdd4e48 100644
--- a/configure.ac
+++ b/configure.ac
@@ -53,6 +53,9 @@ AC_CANONICAL_HOST
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