]> granicus.if.org Git - python/commitdiff
[Patch #641685] setup.py contained code for finding libraries, instead
authorAndrew M. Kuchling <amk@amk.ca>
Wed, 27 Nov 2002 13:43:46 +0000 (13:43 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Wed, 27 Nov 2002 13:43:46 +0000 (13:43 +0000)
   of using the CCompiler.find_library_file() provided by the Distutils.
   This patch fixes it to use the Distutils method at the cost of some
   additional glue.

(The duplication resulted in the SSL module not being automatically
built on Macs; the Distutils knew that shared libraries on OS X have a
.dylib extension, but the setup.py code didn't.)

setup.py

index 12cbf2c4cedb9c12d95f921697d89a963b8e57bb..1240ed989f348108b90e4f3bec540f8c44a2c4f5 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -48,14 +48,30 @@ def find_file(filename, std_dirs, paths):
     return None
 
 def find_library_file(compiler, libname, std_dirs, paths):
-    filename = compiler.library_filename(libname, lib_type='shared')
-    result = find_file(filename, std_dirs, paths)
-    if result is not None: return result
-
-    filename = compiler.library_filename(libname, lib_type='static')
-    result = find_file(filename, std_dirs, paths)
-    return result
-
+    result = compiler.find_library_file(std_dirs + paths, libname)
+    if result is None:
+        return None
+
+    # Check whether the found file is in one of the standard directories
+    dirname = os.path.dirname(result)
+    for p in std_dirs:
+        # Ensure path doesn't end with path separator
+        if p.endswith(os.sep):
+            p = p.strip(os.sep)
+        if p == dirname:
+            return [ ]
+
+    # Otherwise, it must have been in one of the additional directories,
+    # so we have to figure out which one.
+    for p in paths:
+        # Ensure path doesn't end with path separator
+        if p.endswith(os.sep):
+            p = p.strip(os.sep)
+        if p == dirname:
+            return [p]
+    else:
+        assert False, "Internal error: Path not found in std_dirs or paths"
+        
 def module_enabled(extlist, modname):
     """Returns whether the module 'modname' is present in the list
     of extensions 'extlist'."""