diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2014-12-28 21:54:53 +0100 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2015-01-02 19:30:17 +0100 |
commit | c24c874810054cb0185807fe797d92056207bbbe (patch) | |
tree | b9c296f3c00a98b0c97b673de9dad441e606c030 /package/python3/011-support-library-path-old-compilers.patch | |
parent | 144e21f203cf88c1768488d08e201e9579db857e (diff) | |
download | buildroot-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.patch | 54 |
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 |