50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								""" Modified version of build_scripts that handles building scripts from functions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								from distutils.command.build_scripts import build_scripts as old_build_scripts
							 | 
						||
| 
								 | 
							
								from numpy.distutils import log
							 | 
						||
| 
								 | 
							
								from numpy.distutils.misc_util import is_string
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class build_scripts(old_build_scripts):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def generate_scripts(self, scripts):
							 | 
						||
| 
								 | 
							
								        new_scripts = []
							 | 
						||
| 
								 | 
							
								        func_scripts = []
							 | 
						||
| 
								 | 
							
								        for script in scripts:
							 | 
						||
| 
								 | 
							
								            if is_string(script):
							 | 
						||
| 
								 | 
							
								                new_scripts.append(script)
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                func_scripts.append(script)
							 | 
						||
| 
								 | 
							
								        if not func_scripts:
							 | 
						||
| 
								 | 
							
								            return new_scripts
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        build_dir = self.build_dir
							 | 
						||
| 
								 | 
							
								        self.mkpath(build_dir)
							 | 
						||
| 
								 | 
							
								        for func in func_scripts:
							 | 
						||
| 
								 | 
							
								            script = func(build_dir)
							 | 
						||
| 
								 | 
							
								            if not script:
							 | 
						||
| 
								 | 
							
								                continue
							 | 
						||
| 
								 | 
							
								            if is_string(script):
							 | 
						||
| 
								 | 
							
								                log.info("  adding '%s' to scripts" % (script,))
							 | 
						||
| 
								 | 
							
								                new_scripts.append(script)
							 | 
						||
| 
								 | 
							
								            else:
							 | 
						||
| 
								 | 
							
								                [log.info("  adding '%s' to scripts" % (s,)) for s in script]
							 | 
						||
| 
								 | 
							
								                new_scripts.extend(list(script))
							 | 
						||
| 
								 | 
							
								        return new_scripts
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def run (self):
							 | 
						||
| 
								 | 
							
								        if not self.scripts:
							 | 
						||
| 
								 | 
							
								            return
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        self.scripts = self.generate_scripts(self.scripts)
							 | 
						||
| 
								 | 
							
								        # Now make sure that the distribution object has this list of scripts.
							 | 
						||
| 
								 | 
							
								        # setuptools' develop command requires that this be a list of filenames,
							 | 
						||
| 
								 | 
							
								        # not functions.
							 | 
						||
| 
								 | 
							
								        self.distribution.scripts = self.scripts
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return old_build_scripts.run(self)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    def get_source_files(self):
							 | 
						||
| 
								 | 
							
								        from numpy.distutils.misc_util import get_script_files
							 | 
						||
| 
								 | 
							
								        return get_script_files(self.scripts)
							 |