summaryrefslogtreecommitdiffstats
path: root/package/python3/python3-008-no-rpath.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/python3/python3-008-no-rpath.patch')
-rw-r--r--package/python3/python3-008-no-rpath.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/package/python3/python3-008-no-rpath.patch b/package/python3/python3-008-no-rpath.patch
new file mode 100644
index 000000000..cdeec22ce
--- /dev/null
+++ b/package/python3/python3-008-no-rpath.patch
@@ -0,0 +1,51 @@
+Remove runtime library paths
+
+For some extensions (sqlite and dbm), Python setup.py script
+hardcode a runtime path (rpath) into the extension. However, this
+runtime path is incorrect (because it points to the location of the
+library directory on the development machine) and useless (because on
+the target, all useful libraries are in a standard directory searched
+by the dynamic loader). For those reasons, we just get rid of the
+runtime paths in cross-compilation mode.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ setup.py | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+Index: Python-3.3.0/setup.py
+===================================================================
+--- Python-3.3.0.orig/setup.py
++++ Python-3.3.0/setup.py
+@@ -1134,11 +1134,15 @@
+ # can end up with a bad search path order.
+ if sqlite_incdir not in self.compiler.include_dirs:
+ include_dirs.append(sqlite_incdir)
++ if cross_compiling:
++ sqlite_runtime_libdir = None
++ else:
++ sqlite_runtime_libdir = sqlite_libdir
+ exts.append(Extension('_sqlite3', sqlite_srcs,
+ define_macros=sqlite_defines,
+ include_dirs=include_dirs,
+ library_dirs=sqlite_libdir,
+- runtime_library_dirs=sqlite_libdir,
++ runtime_library_dirs=sqlite_runtime_libdir,
+ extra_link_args=sqlite_extra_link_args,
+ libraries=["sqlite3",]))
+ else:
+@@ -1205,9 +1209,13 @@
+ elif cand == "bdb":
+ if db_incs is not None:
+ if dbm_setup_debug: print("building dbm using bdb")
++ if cross_compiling:
++ dblib_runtime_libdir = None
++ else:
++ dblib_runtime_libdir = dblib_dir
+ dbmext = Extension('_dbm', ['_dbmmodule.c'],
+ library_dirs=dblib_dir,
+- runtime_library_dirs=dblib_dir,
++ runtime_library_dirs=dblib_runtime_libdir,
+ include_dirs=db_incs,
+ define_macros=[
+ ('HAVE_BERKDB_H', None),