![Thomas Petazzoni](/assets/img/avatar_default.png)
Now that the cpython project has a nice Github repository, with tags, it's much nicer to handle the stack of Python patches with Git. The python3 package patches had already been converted, but not the python package patches. Therefore, this commit does the move. There is no functional change, only reformatting of the patches. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: Yegor Yefremov <yegorslists@googlemail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
226 lines
7 KiB
Diff
226 lines
7 KiB
Diff
From e5b0d225f4343e82791cb80e4e0c01a9b49eeff4 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>
|
|
---
|
|
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 33b994d..beb0837 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -171,7 +171,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)
|
|
@@ -431,7 +431,7 @@ LIBRARY_OBJS= \
|
|
|
|
# Default target
|
|
all: @DEF_MAKE_ALL_RULE@
|
|
-build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks
|
|
+build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks python-config
|
|
|
|
# Compile a binary with profile guided optimization.
|
|
profile-opt:
|
|
@@ -1179,10 +1179,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)
|
|
@@ -1241,7 +1243,7 @@ libainstall: all 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:"; \
|
|
@@ -1426,6 +1428,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 0000000..10db4c1
|
|
--- /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 5d4232f..183a903 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -905,6 +905,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*)
|
|
@@ -965,6 +966,7 @@ if test $enable_shared = "yes"; then
|
|
|
|
esac
|
|
else # shared is disabled
|
|
+ PY_ENABLE_SHARED=0
|
|
case $ac_sys_system in
|
|
CYGWIN*)
|
|
BLDLIBRARY='$(LIBRARY)'
|
|
@@ -2096,6 +2098,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)
|
|
@@ -4818,7 +4823,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.7.4
|
|
|