summaryrefslogtreecommitdiffstats
path: root/package/python3/011-support-library-path-old-compilers.patch
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2014-12-28 21:54:53 +0100
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-01-02 19:30:17 +0100
commitc24c874810054cb0185807fe797d92056207bbbe (patch)
treeb9c296f3c00a98b0c97b673de9dad441e606c030 /package/python3/011-support-library-path-old-compilers.patch
parent144e21f203cf88c1768488d08e201e9579db857e (diff)
downloadbuildroot-c24c874810054cb0185807fe797d92056207bbbe.tar.gz
buildroot-c24c874810054cb0185807fe797d92056207bbbe.zip
python3: rename patches to the new convention
Note that we don't use completely sequential numbers, because patches below 100 are used to address cross-compilation issues in Python 3, while patches above 100 are used to make more Python 3 modules configurable. [Thomas: fixup commit log.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Diffstat (limited to 'package/python3/011-support-library-path-old-compilers.patch')
-rw-r--r--package/python3/011-support-library-path-old-compilers.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/package/python3/011-support-library-path-old-compilers.patch b/package/python3/011-support-library-path-old-compilers.patch
new file mode 100644
index 0000000000..296e9febb9
--- /dev/null
+++ b/package/python3/011-support-library-path-old-compilers.patch
@@ -0,0 +1,54 @@
+python3: do not rely only on LIBRARY_PATH for old compilers
+
+The cross-compilation improvements integrated in Python rely on the
+compiler exposing a line starting with LIBRARY_PATH when called with
+-E -v. This is used by Python setup.py to find the installation
+locations of libraries.
+
+However, this LIBRARY_PATH line is not shown by very old compilers,
+such as the gcc 4.2.x compiler used on the AVR32 architecture. This
+causes libraries installed in the sysroot, such as libffi, to not be
+detected by the setup.py script.
+
+To fix this problem, this patch adds addtional logic to setup.py,
+which consists in deriving the library paths from the sysroot
+location, if no LIBRARY_PATH field was found.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/setup.py
+===================================================================
+--- a/setup.py
++++ b/setup.py
+@@ -427,6 +427,7 @@
+ in_incdirs = False
+ inc_dirs = []
+ lib_dirs = []
++ compiler_has_library_path = False
+ try:
+ if ret >> 8 == 0:
+ with open(tmpfile) as fp:
+@@ -438,6 +439,7 @@
+ elif line.startswith("End of search list"):
+ in_incdirs = False
+ elif is_gcc and line.startswith("LIBRARY_PATH"):
++ compiler_has_library_path = True
+ for d in line.strip().split("=")[1].split(":"):
+ d = os.path.normpath(d)
+ if '/gcc/' not in d:
+@@ -449,6 +451,15 @@
+ finally:
+ os.unlink(tmpfile)
+
++ if not compiler_has_library_path:
++ ret = os.system("%s -print-file-name=libc.a | sed -r -e 's:(usr/)?lib(32|64)?/([^/]*/)?libc\.a::' >%s" % (gcc, tmpfile))
++ with open(tmpfile) as fp:
++ line = fp.readline().strip()
++ add_dir_to_list(self.compiler.library_dirs,
++ os.path.join(line, "usr", "lib"))
++ add_dir_to_list(self.compiler.library_dirs,
++ os.path.join(line, "lib"))
++
+ def detect_modules(self):
+ # Ensure that /usr/local is always used, but the local build
+ # directories (i.e. '.' and 'Include') must be first. See issue
OpenPOWER on IntegriCloud