![Peter Korsgaard](/assets/img/avatar_default.png)
Fixes the following security issues: - CVE-2013-1752: Change use of readline() in :class:`imaplib.IMAP4_SSL` to limit line length - CVE-2018-14647: The C accelerated _elementtree module now initializes hash randomization salt from _Py_HashSecret instead of libexpat's default CSPRNG. For more details, see the NEWS file: https://github.com/python/cpython/blob/v2.7.16/Misc/NEWS.d/2.7.16rc1.rst Refresh patches, drop now upstream package/python/0035-bpo-35746-Fix-segfault-in-ssl-s-cert-parser-GH-11569.patch and adjust hash of LICENSE file for a change of copyright years. run-tests results: 16:05:41 TestPython2 Starting 16:05:42 TestPython2 Building 16:11:26 TestPython2 Building done 16:11:32 TestPython2 Cleaning up . ---------------------------------------------------------------------- Ran 1 test in 351.905s OK Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
230 lines
7.2 KiB
Diff
230 lines
7.2 KiB
Diff
From 1522c6c00ee88eb1148d3b2021d32d819b416375 Mon Sep 17 00:00:00 2001
|
|
From: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
Date: Tue, 7 Mar 2017 22:23:14 +0100
|
|
Subject: [PATCH] Fix python-config for cross-builds
|
|
|
|
Add a backport of http://bugs.python.org/issue16235 so we can use
|
|
python-config for cross builds.
|
|
|
|
This basically replaces the python version of python-config with a
|
|
pure-shell version that's already preprocessed when installed and
|
|
doesn't depend on the sysconfig import that usually leads to bad
|
|
data/results.
|
|
|
|
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
|
|
[Bernd: rebased for Python 2.7.15]
|
|
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
[Peter: update for 2.7.16]
|
|
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
|
---
|
|
Makefile.pre.in | 13 +++---
|
|
Misc/python-config.sh.in | 102 +++++++++++++++++++++++++++++++++++++++++++++++
|
|
configure.ac | 7 +++-
|
|
3 files changed, 116 insertions(+), 6 deletions(-)
|
|
create mode 100644 Misc/python-config.sh.in
|
|
|
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
|
index c1c98ecc5a..727a92af42 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -170,7 +170,7 @@ SRCDIRS= @SRCDIRS@
|
|
SUBDIRSTOO= Include Lib Misc Demo
|
|
|
|
# Files and directories to be distributed
|
|
-CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in
|
|
+CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in Misc/python-config.sh
|
|
DISTFILES= README ChangeLog $(CONFIGFILES)
|
|
DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
|
|
DIST= $(DISTFILES) $(DISTDIRS)
|
|
@@ -403,7 +403,7 @@ LIBRARY_OBJS= \
|
|
|
|
# Default target
|
|
all: @DEF_MAKE_ALL_RULE@
|
|
-build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks
|
|
+build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks python-config
|
|
|
|
# Check that the source is clean when building out of source.
|
|
check-clean-src:
|
|
@@ -1190,10 +1190,12 @@ $(srcdir)/Lib/$(PLATDIR):
|
|
fi; \
|
|
cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen
|
|
|
|
-python-config: $(srcdir)/Misc/python-config.in
|
|
+python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh
|
|
# Substitution happens here, as the completely-expanded BINDIR
|
|
# is not available in configure
|
|
- sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config
|
|
+ sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py
|
|
+ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR}
|
|
+ sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' Misc/python-config.sh >python-config
|
|
|
|
# Install the include files
|
|
INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
|
|
@@ -1252,7 +1254,7 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
|
$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
|
|
$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
|
|
$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config
|
|
- rm python-config
|
|
+ $(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py
|
|
@if [ -s Modules/python.exp -a \
|
|
"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
|
|
echo; echo "Installing support files for building shared extension modules on AIX:"; \
|
|
@@ -1434,6 +1436,7 @@ clobber: clean profile-removal
|
|
config.cache config.log pyconfig.h Modules/config.c
|
|
-rm -rf build platform
|
|
-rm -rf $(PYTHONFRAMEWORKDIR)
|
|
+ -rm -f python-config.py python-config
|
|
|
|
# Make things extra clean, before making a distribution:
|
|
# remove all generated files, even Makefile[.pre]
|
|
diff --git a/Misc/python-config.sh.in b/Misc/python-config.sh.in
|
|
new file mode 100644
|
|
index 0000000000..10db4c12eb
|
|
--- /dev/null
|
|
+++ b/Misc/python-config.sh.in
|
|
@@ -0,0 +1,102 @@
|
|
+#!/bin/sh
|
|
+
|
|
+exit_with_usage ()
|
|
+{
|
|
+ echo "Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--configdir"
|
|
+ exit $1
|
|
+}
|
|
+
|
|
+if [ "$1" = "" ] ; then
|
|
+ exit_with_usage 1
|
|
+fi
|
|
+
|
|
+# Returns the actual prefix where this script was installed to.
|
|
+installed_prefix ()
|
|
+{
|
|
+ RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
|
|
+ if which readlink >/dev/null 2>&1 ; then
|
|
+ RESULT=$(readlink -f "$RESULT")
|
|
+ fi
|
|
+ echo $RESULT
|
|
+}
|
|
+
|
|
+prefix_build="@prefix@"
|
|
+prefix_real=$(installed_prefix "$0")
|
|
+
|
|
+# Use sed to fix paths from their built to locations to their installed to locations.
|
|
+prefix=$(echo "$prefix_build" | sed "s#$prefix_build#$prefix_real#")
|
|
+exec_prefix_build="@exec_prefix@"
|
|
+exec_prefix=$(echo "$exec_prefix_build" | sed "s#$exec_prefix_build#$prefix_real#")
|
|
+includedir=$(echo "@includedir@")
|
|
+libdir=$(echo "@libdir@" | sed "s#$prefix_build#$prefix_real#")
|
|
+CFLAGS=$(echo "@CFLAGS@" | sed "s#$prefix_build#$prefix_real#")
|
|
+VERSION="@VERSION@"
|
|
+LIBM="@LIBM@"
|
|
+LIBC="@LIBC@"
|
|
+SYSLIBS="$LIBM $LIBC"
|
|
+LIBS="@LIBS@ $SYSLIBS -lpython${VERSION}"
|
|
+BASECFLAGS="@BASECFLAGS@"
|
|
+LDLIBRARY="@LDLIBRARY@"
|
|
+LINKFORSHARED="@LINKFORSHARED@"
|
|
+OPT="@OPT@"
|
|
+PY_ENABLE_SHARED="@PY_ENABLE_SHARED@"
|
|
+LDVERSION="@LDVERSION@"
|
|
+LIBDEST=${prefix}/lib/python${VERSION}
|
|
+LIBPL=$(echo "@LIBPL@" | sed "s#$prefix_build#$prefix_real#")
|
|
+SO="@SO@"
|
|
+PYTHONFRAMEWORK="@PYTHONFRAMEWORK@"
|
|
+INCDIR="-I$includedir/python${VERSION}"
|
|
+PLATINCDIR="-I$includedir/python${VERSION}"
|
|
+
|
|
+# Scan for --help or unknown argument.
|
|
+for ARG in $*
|
|
+do
|
|
+ case $ARG in
|
|
+ --help)
|
|
+ exit_with_usage 0
|
|
+ ;;
|
|
+ --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir)
|
|
+ ;;
|
|
+ *)
|
|
+ exit_with_usage 1
|
|
+ ;;
|
|
+esac
|
|
+done
|
|
+
|
|
+for ARG in "$@"
|
|
+do
|
|
+ case "$ARG" in
|
|
+ --prefix)
|
|
+ echo "$prefix"
|
|
+ ;;
|
|
+ --exec-prefix)
|
|
+ echo "$exec_prefix"
|
|
+ ;;
|
|
+ --includes)
|
|
+ echo "$INCDIR $PLATINCDIR"
|
|
+ ;;
|
|
+ --cflags)
|
|
+ echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
|
|
+ ;;
|
|
+ --libs)
|
|
+ echo "$LIBS"
|
|
+ ;;
|
|
+ --ldflags)
|
|
+ LINKFORSHAREDUSED=
|
|
+ if [ -z "$PYTHONFRAMEWORK" ] ; then
|
|
+ LINKFORSHAREDUSED=$LINKFORSHARED
|
|
+ fi
|
|
+ LIBPLUSED=
|
|
+ if [ "$PY_ENABLE_SHARED" = "0" ] ; then
|
|
+ LIBPLUSED="-L$LIBPL"
|
|
+ fi
|
|
+ echo "$LIBPLUSED -L$libdir $LIBS $LINKFORSHAREDUSED"
|
|
+ ;;
|
|
+ --extension-suffix)
|
|
+ echo "$SO"
|
|
+ ;;
|
|
+ --configdir)
|
|
+ echo "$LIBPL"
|
|
+ ;;
|
|
+esac
|
|
+done
|
|
diff --git a/configure.ac b/configure.ac
|
|
index 13f90b3ddd..3f28ef1371 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -919,6 +919,7 @@ fi
|
|
|
|
# Other platforms follow
|
|
if test $enable_shared = "yes"; then
|
|
+ PY_ENABLE_SHARED=1
|
|
AC_DEFINE(Py_ENABLE_SHARED, 1, [Defined if Python is built as a shared library.])
|
|
case $ac_sys_system in
|
|
BeOS*)
|
|
@@ -979,6 +980,7 @@ if test $enable_shared = "yes"; then
|
|
|
|
esac
|
|
else # shared is disabled
|
|
+ PY_ENABLE_SHARED=0
|
|
case $ac_sys_system in
|
|
CYGWIN*)
|
|
BLDLIBRARY='$(LIBRARY)'
|
|
@@ -2128,6 +2130,9 @@ AC_SUBST(LDCXXSHARED)
|
|
AC_SUBST(BLDSHARED)
|
|
AC_SUBST(CCSHARED)
|
|
AC_SUBST(LINKFORSHARED)
|
|
+AC_SUBST(PY_ENABLE_SHARED)
|
|
+LIBPL="${prefix}/lib/python${VERSION}/config"
|
|
+AC_SUBST(LIBPL)
|
|
# SO is the extension of shared libraries `(including the dot!)
|
|
# -- usually .so, .sl on HP-UX, .dll on Cygwin
|
|
AC_MSG_CHECKING(SO)
|
|
@@ -4944,7 +4949,7 @@ AC_MSG_RESULT($ENSUREPIP)
|
|
AC_SUBST(ENSUREPIP)
|
|
|
|
# generate output files
|
|
-AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
|
|
+AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc Misc/python-config.sh)
|
|
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
|
|
AC_OUTPUT
|
|
|
|
--
|
|
2.11.0
|
|
|