| 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), |