extract FQ module name from distutils
authorStefan Behnel <scoder@users.berlios.de>
Mon, 30 Jul 2007 20:18:23 +0000 (22:18 +0200)
committerStefan Behnel <scoder@users.berlios.de>
Mon, 30 Jul 2007 20:18:23 +0000 (22:18 +0200)
Cython/Compiler/Main.py
Cython/Distutils/build_ext.py

index f665323ee4d4b896bbe902424ee504e27c306b62..ec705046b1e1d911c5c331d8172110265a321fca 100644 (file)
@@ -153,7 +153,7 @@ class Context:
         name, _ = os.path.splitext(tail)
         return name
 
-    def compile(self, source, options = None):
+    def compile(self, source, options = None, full_module_name = None):
         # Compile a Pyrex implementation file in this context
         # and return a CompilationResult.
         if not options:
@@ -161,7 +161,8 @@ class Context:
         result = CompilationResult()
         cwd = os.getcwd()
 
-        full_module_name, _ = os.path.splitext(source.replace('/', '.'))
+        if full_module_name is None:
+            full_module_name, _ = os.path.splitext(source.replace('/', '.'))
 
         source = os.path.join(cwd, source)
         
@@ -263,7 +264,8 @@ class CompilationResult:
         self.extension_file = None
 
 
-def compile(source, options = None, c_compile = 0, c_link = 0):
+def compile(source, options = None, c_compile = 0, c_link = 0,
+            full_module_name = None):
     """
     compile(source, options = default_options)
     
@@ -278,7 +280,7 @@ def compile(source, options = None, c_compile = 0, c_link = 0):
     if c_link:
         options.obj_only = 0
     context = Context(options.include_path)
-    return context.compile(source, options)
+    return context.compile(source, options, full_module_name)
 
 #------------------------------------------------------------------------
 #
index bca8b9ff95a9481aaece23a69da0813941daec87..6b775e7e0ff34b10471a5246090f475717f0a992 100644 (file)
@@ -37,8 +37,12 @@ class build_ext (distutils.command.build_ext.build_ext):
         if not self.extensions:
             return
 
+        if extension is not None:
+            module_name = extension.name
+        else:
+            module_name = None
+
         # collect the names of the source (.pyx) files
-        pyx_sources = []
         pyx_sources = [source for source in sources if source.endswith('.pyx')]
         other_sources = [source for source in sources if not source.endswith('.pyx')]
 
@@ -50,14 +54,14 @@ class build_ext (distutils.command.build_ext.build_ext):
                 source = pyx
                 target = replace_suffix(source, suffix)
                 if newer(source, target) or self.force:
-                    self.cython_compile(source)
+                    self.cython_compile(source, module_name)
 
         return [replace_suffix(src, suffix) for src in pyx_sources] + other_sources
 
-    def cython_compile(self, source):
+    def cython_compile(self, source, module_name):
         options = CompilationOptions(default_options,
             include_path = self.include_dirs)
-        result = compile(source, options)
+        result = compile(source, options, full_module_name=module_name)
         if result.num_errors <> 0:
             sys.exit(1)