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