[Python-checkins] r41941 - in sandbox/trunk/setuptools: setuptools/__init__.py setuptools/command/build_ext.py setuptools/extension.py tests/shlib_test/setup.py

phillip.eby python-checkins at python.org
Fri Jan 6 20:57:38 CET 2006


Author: phillip.eby
Date: Fri Jan  6 20:57:36 2006
New Revision: 41941

Modified:
   sandbox/trunk/setuptools/setuptools/__init__.py
   sandbox/trunk/setuptools/setuptools/command/build_ext.py
   sandbox/trunk/setuptools/setuptools/extension.py
   sandbox/trunk/setuptools/tests/shlib_test/setup.py
Log:
SharedLibrary -> Library.  For now, Windows libs get built as shared, 
and other platforms get static.  :(


Modified: sandbox/trunk/setuptools/setuptools/__init__.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/__init__.py	(original)
+++ sandbox/trunk/setuptools/setuptools/__init__.py	Fri Jan  6 20:57:36 2006
@@ -1,5 +1,5 @@
 """Extensions to the 'distutils' for large or complex distributions"""
-from setuptools.extension import Extension, SharedLibrary
+from setuptools.extension import Extension, Library
 from setuptools.dist import Distribution, Feature, _get_unpatched
 import distutils.core, setuptools.command
 from setuptools.depends import Require

Modified: sandbox/trunk/setuptools/setuptools/command/build_ext.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/command/build_ext.py	(original)
+++ sandbox/trunk/setuptools/setuptools/command/build_ext.py	Fri Jan  6 20:57:36 2006
@@ -7,7 +7,7 @@
 
 import os, sys
 from distutils.file_util import copy_file
-from setuptools.extension import SharedLibrary
+from setuptools.extension import Library
 from distutils.ccompiler import new_compiler
 from distutils.sysconfig import customize_compiler
 
@@ -52,7 +52,7 @@
         for ext in self.shlibs:
             if self.get_ext_fullname(ext.name)==fullname:
                 fn, ext = os.path.splitext(filename)
-                return self.shlib_compiler.library_filename(fn,'shared')
+                return self.shlib_compiler.library_filename(fn,libtype)
         return filename
 
     def initialize_options(self):
@@ -63,7 +63,7 @@
     def finalize_options(self):
         _build_ext.finalize_options(self)
         self.shlibs = [ext for ext in self.extensions or ()
-                        if isinstance(ext,SharedLibrary)]
+                        if isinstance(ext,Library)]
         if self.shlibs:
             self.setup_shlib_compiler()
             self.library_dirs.append(self.build_lib)
@@ -71,7 +71,7 @@
     def build_extension(self, ext):
         _compiler = self.compiler
         try:
-            if isinstance(ext,SharedLibrary):
+            if isinstance(ext,Library):
                 self.compiler = self.shlib_compiler
             _build_ext.build_extension(self,ext)
         finally:
@@ -107,22 +107,11 @@
         if self.link_objects is not None:
             compiler.set_link_objects(self.link_objects)
 
-        # hack so distutils' build_extension() builds a shared lib instead
-        #
-        def link_shared_object(self, objects, output_libname, output_dir=None,
-            libraries=None, library_dirs=None, runtime_library_dirs=None,
-            export_symbols=None, debug=0, extra_preargs=None,
-            extra_postargs=None, build_temp=None, target_lang=None
-        ):  self.link(
-                self.SHARED_LIBRARY, objects, output_libname,
-                output_dir, libraries, library_dirs, runtime_library_dirs,
-                export_symbols, debug, extra_preargs, extra_postargs,
-                build_temp, target_lang
-            )
+        # hack so distutils' build_extension() builds a library instead
         compiler.link_shared_object = link_shared_object.__get__(compiler)
 
     def get_export_symbols(self, ext):
-        if isinstance(ext,SharedLibrary):
+        if isinstance(ext,Library):
             return ext.export_symbols
         return _build_ext.get_export_symbols(self,ext)
         
@@ -132,33 +121,44 @@
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+if os.name=='nt':
+    # Build shared libraries on Windows
+    libtype = 'shared'
+    def link_shared_object(self, objects, output_libname, output_dir=None,
+        libraries=None, library_dirs=None, runtime_library_dirs=None,
+        export_symbols=None, debug=0, extra_preargs=None,
+        extra_postargs=None, build_temp=None, target_lang=None
+    ):  self.link(
+            self.SHARED_LIBRARY, objects, output_libname,
+            output_dir, libraries, library_dirs, runtime_library_dirs,
+            export_symbols, debug, extra_preargs, extra_postargs,
+            build_temp, target_lang
+        )
+else:
+    # Build static libraries everywhere else
+    libtype = 'static'
+    def link_shared_object(self, objects, output_libname, output_dir=None,
+        libraries=None, library_dirs=None, runtime_library_dirs=None,
+        export_symbols=None, debug=0, extra_preargs=None,
+        extra_postargs=None, build_temp=None, target_lang=None
+    ):
+        # XXX we need to either disallow these attrs on Library instances,
+        #     or warn/abort here if set, or something...
+        #libraries=None, library_dirs=None, runtime_library_dirs=None,
+        #export_symbols=None, extra_preargs=None, extra_postargs=None,
+        #build_temp=None
+
+        assert output_dir is None   # distutils build_ext doesn't pass this       
+        output_dir,filename = os.path.split(output_libname)
+        basename, ext = os.path.splitext(filename)
+        if self.library_filename("x").startswith('lib'):
+            # strip 'lib' prefix; this is kludgy if some platform uses
+            # a different prefix
+            basename = basename[3:] 
+
+        self.create_static_lib(
+            objects, basename, output_dir, debug, target_lang
+        )
 
 
 

Modified: sandbox/trunk/setuptools/setuptools/extension.py
==============================================================================
--- sandbox/trunk/setuptools/setuptools/extension.py	(original)
+++ sandbox/trunk/setuptools/setuptools/extension.py	Fri Jan  6 20:57:36 2006
@@ -25,8 +25,8 @@
                     sources.append(s)
             self.sources = sources
 
-class SharedLibrary(Extension):
-    """Just like a regular Extension, but built as a shared library instead"""
+class Library(Extension):
+    """Just like a regular Extension, but built as a library instead"""
 
 import sys, distutils.core, distutils.extension
 distutils.core.Extension = Extension

Modified: sandbox/trunk/setuptools/tests/shlib_test/setup.py
==============================================================================
--- sandbox/trunk/setuptools/tests/shlib_test/setup.py	(original)
+++ sandbox/trunk/setuptools/tests/shlib_test/setup.py	Fri Jan  6 20:57:36 2006
@@ -1,9 +1,9 @@
-from setuptools import setup, Extension, SharedLibrary
+from setuptools import setup, Extension, Library
 
 setup(
     name="shlib_test",
     ext_modules = [
-        SharedLibrary("hellolib", ["hellolib.c"]),
+        Library("hellolib", ["hellolib.c"]),
         Extension("hello", ["hello.pyx"], libraries=["hellolib"])
     ],
     test_suite="test_hello.HelloWorldTest",


More information about the Python-checkins mailing list