blob: 3422dceaab67ced27329907efda568a3844ab853 [file] [log] [blame]
Remove runtime library paths
For some extensions (bsddb, 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 | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
Index: Python-2.7.2/setup.py
===================================================================
--- Python-2.7.2.orig/setup.py
+++ Python-2.7.2/setup.py
@@ -997,6 +997,12 @@
print "bsddb lib dir:", dblib_dir, " inc dir:", db_incdir
db_incs = [db_incdir]
dblibs = [dblib]
+
+ if os.environ.get('CROSS_COMPILING') == 'yes':
+ bsddb_runtime_library_dir = None
+ else:
+ bsddb_runtime_library_dir = dblib_dir
+
# We add the runtime_library_dirs argument because the
# BerkeleyDB lib we're linking against often isn't in the
# system dynamic library search path. This is usually
@@ -1006,7 +1012,7 @@
exts.append(Extension('_bsddb', ['_bsddb.c'],
depends = ['bsddb.h'],
library_dirs=dblib_dir,
- runtime_library_dirs=dblib_dir,
+ runtime_library_dirs=bsddb_runtime_library_dir,
include_dirs=db_incs,
libraries=dblibs))
else:
@@ -1112,12 +1118,17 @@
else:
sqlite_extra_link_args = ()
+ if os.environ.get('CROSS_COMPILING') == 'yes':
+ sqlite_runtime_library_dirs = None
+ else:
+ sqlite_runtime_library_dirs = sqlite_libdir
+
exts.append(Extension('_sqlite3', sqlite_srcs,
define_macros=sqlite_defines,
include_dirs=["Modules/_sqlite",
sqlite_incdir],
library_dirs=sqlite_libdir,
- runtime_library_dirs=sqlite_libdir,
+ runtime_library_dirs=sqlite_runtime_library_dirs,
extra_link_args=sqlite_extra_link_args,
libraries=["sqlite3",]))
else:
@@ -1218,9 +1229,13 @@
elif cand == "bdb":
if db_incs is not None:
print "building dbm using bdb"
+ if os.environ.get('CROSS_COMPILING') == 'yes':
+ db_runtime_library_dir = None
+ else:
+ db_runtime_library_dir = dblib_dir
dbmext = Extension('dbm', ['dbmmodule.c'],
library_dirs=dblib_dir,
- runtime_library_dirs=dblib_dir,
+ runtime_library_dirs=db_runtime_library_dir,
include_dirs=db_incs,
define_macros=[
('HAVE_BERKDB_H', None),