51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
""" Modified version of build_scripts that handles building scripts from functions.
|
|
|
|
"""
|
|
from __future__ import division, absolute_import, print_function
|
|
|
|
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)
|