]> granicus.if.org Git - python/commitdiff
- Issue #15234: For BerkelyDB and Sqlite, only add the found library and
authordoko@ubuntu.com <doko@ubuntu.com>
Thu, 17 Apr 2014 15:52:48 +0000 (17:52 +0200)
committerdoko@ubuntu.com <doko@ubuntu.com>
Thu, 17 Apr 2014 15:52:48 +0000 (17:52 +0200)
  include directories if they aren't already being searched. This avoids
  an explicit runtime library dependency.

Misc/NEWS
setup.py

index 1c4a80339e92a2bb4e51e55d040a1a626c636a03..36322c237356bfc9dd74a10c5c3a7b54f53c0a90 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -167,6 +167,10 @@ IDLE
 Build
 -----
 
+- Issue #15234: For BerkelyDB and Sqlite, only add the found library and
+  include directories if they aren't already being searched. This avoids
+  an explicit runtime library dependency.
+
 - Issue #20644: OS X installer build support for documentation build changes
   in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin.
 
index 26db7637255238ddfa73693a098b98dafcba0834..c0bb513296ed4f1e2815b22ce35be57210764f27 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1022,8 +1022,16 @@ class PyBuildExt(build_ext):
             if db_setup_debug:
                 print("bsddb using BerkeleyDB lib:", db_ver, dblib)
                 print("bsddb lib dir:", dblib_dir, " inc dir:", db_incdir)
-            db_incs = [db_incdir]
             dblibs = [dblib]
+            # Only add the found library and include directories if they aren't
+            # already being searched. This avoids an explicit runtime library
+            # dependency.
+            if db_incdir in inc_dirs:
+                db_incs = None
+            else:
+                db_incs = [db_incdir]
+            if dblib_dir[0] in lib_dirs:
+                dblib_dir = None
         else:
             if db_setup_debug: print("db: no appropriate library found")
             db_incs = None
@@ -1134,6 +1142,9 @@ class PyBuildExt(build_ext):
             # can end up with a bad search path order.
             if sqlite_incdir not in self.compiler.include_dirs:
                 include_dirs.append(sqlite_incdir)
+            # avoid a runtime library path for a system library dir
+            if sqlite_libdir and sqlite_libdir[0] in lib_dirs:
+                sqlite_libdir = None
             exts.append(Extension('_sqlite3', sqlite_srcs,
                                   define_macros=sqlite_defines,
                                   include_dirs=include_dirs,
@@ -1202,7 +1213,7 @@ class PyBuildExt(build_ext):
                                 libraries = gdbm_libs)
                             break
                 elif cand == "bdb":
-                    if db_incs is not None:
+                    if dblibs:
                         if dbm_setup_debug: print("building dbm using bdb")
                         dbmext = Extension('_dbm', ['_dbmmodule.c'],
                                            library_dirs=dblib_dir,