''' Created on 13 fevr. 2014 @author: coissac ''' from distutils import log import os from Cython.Distutils import build_ext as ori_build_ext # @UnresolvedImport from Cython.Compiler import Options as cython_options # @UnresolvedImport from distutils.errors import DistutilsSetupError class build_ext(ori_build_ext): def modifyDocScripts(self): build_dir_file=open("doc/sphinx/build_dir.txt","w") print(self.build_lib,file=build_dir_file) build_dir_file.close() def initialize_options(self): ori_build_ext.initialize_options(self) # @UndefinedVariable self.littlebigman = None self.built_files = None def finalize_options(self): ori_build_ext.finalize_options(self) # @UndefinedVariable self.set_undefined_options('littlebigman', ('littlebigman', 'littlebigman')) self.set_undefined_options('build_files', ('files', 'built_files')) self.cython_c_in_temp = 1 if self.littlebigman =='-DLITTLE_END': if self.define is None: self.define=[('LITTLE_END',None)] else: self.define.append('LITTLE_END',None) def substitute_sources(self,exe_name,sources): """ Substitutes source file name starting by an @ by the actual name of the built file (see --> build_files) """ sources = list(sources) for i in range(len(sources)): message = "%s :-> %s" % (exe_name,sources[i]) if sources[i][0]=='@': try: filename = self.built_files[sources[i][1:]] except KeyError: tmpfilename = os.path.join(self.build_temp,sources[i][1:]) if os.path.isfile (tmpfilename): filename = tmpfilename else: raise DistutilsSetupError( 'The %s filename declared in the source ' 'files of the program %s have not been ' 'built by the installation process' % (sources[i], exe_name)) sources[i]=filename log.info("%s changed to %s",message,filename) else: log.info("%s ok",message) return sources def build_extensions(self): # First, sanity-check the 'extensions' list for ext in self.extensions: ext.sources = self.substitute_sources(ext.name,ext.sources) self.check_extensions_list(self.extensions) for ext in self.extensions: log.info("%s :-> %s",ext.name,ext.sources) ext.sources = self.cython_sources(ext.sources, ext) self.build_extension(ext) def run(self): self.modifyDocScripts() for cmd_name in self.get_sub_commands(): self.run_command(cmd_name) cython_options.annotate = True ori_build_ext.run(self) # @UndefinedVariable def has_files(self): return self.distribution.has_files() def has_executables(self): return self.distribution.has_executables() sub_commands = [('build_files',has_files), ('build_cexe', has_executables) ] + \ ori_build_ext.sub_commands