Commit e5a2a7bd authored by Stefan Behnel's avatar Stefan Behnel

extract FQ module name from distutils

parent 2026e80b
...@@ -153,7 +153,7 @@ class Context: ...@@ -153,7 +153,7 @@ class Context:
name, _ = os.path.splitext(tail) name, _ = os.path.splitext(tail)
return name 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 # Compile a Pyrex implementation file in this context
# and return a CompilationResult. # and return a CompilationResult.
if not options: if not options:
...@@ -161,6 +161,7 @@ class Context: ...@@ -161,6 +161,7 @@ class Context:
result = CompilationResult() result = CompilationResult()
cwd = os.getcwd() cwd = os.getcwd()
if full_module_name is None:
full_module_name, _ = os.path.splitext(source.replace('/', '.')) full_module_name, _ = os.path.splitext(source.replace('/', '.'))
source = os.path.join(cwd, source) source = os.path.join(cwd, source)
...@@ -263,7 +264,8 @@ class CompilationResult: ...@@ -263,7 +264,8 @@ class CompilationResult:
self.extension_file = None 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) compile(source, options = default_options)
...@@ -278,7 +280,7 @@ def compile(source, options = None, c_compile = 0, c_link = 0): ...@@ -278,7 +280,7 @@ def compile(source, options = None, c_compile = 0, c_link = 0):
if c_link: if c_link:
options.obj_only = 0 options.obj_only = 0
context = Context(options.include_path) context = Context(options.include_path)
return context.compile(source, options) return context.compile(source, options, full_module_name)
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
......
...@@ -37,8 +37,12 @@ class build_ext (distutils.command.build_ext.build_ext): ...@@ -37,8 +37,12 @@ class build_ext (distutils.command.build_ext.build_ext):
if not self.extensions: if not self.extensions:
return return
if extension is not None:
module_name = extension.name
else:
module_name = None
# collect the names of the source (.pyx) files # collect the names of the source (.pyx) files
pyx_sources = []
pyx_sources = [source for source in sources if source.endswith('.pyx')] pyx_sources = [source for source in sources if source.endswith('.pyx')]
other_sources = [source for source in sources if not 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): ...@@ -50,14 +54,14 @@ class build_ext (distutils.command.build_ext.build_ext):
source = pyx source = pyx
target = replace_suffix(source, suffix) target = replace_suffix(source, suffix)
if newer(source, target) or self.force: 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 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, options = CompilationOptions(default_options,
include_path = self.include_dirs) include_path = self.include_dirs)
result = compile(source, options) result = compile(source, options, full_module_name=module_name)
if result.num_errors <> 0: if result.num_errors <> 0:
sys.exit(1) sys.exit(1)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment