Chris@87
|
1 """ Modified version of build_scripts that handles building scripts from functions.
|
Chris@87
|
2
|
Chris@87
|
3 """
|
Chris@87
|
4 from __future__ import division, absolute_import, print_function
|
Chris@87
|
5
|
Chris@87
|
6 from distutils.command.build_scripts import build_scripts as old_build_scripts
|
Chris@87
|
7 from numpy.distutils import log
|
Chris@87
|
8 from numpy.distutils.misc_util import is_string
|
Chris@87
|
9
|
Chris@87
|
10 class build_scripts(old_build_scripts):
|
Chris@87
|
11
|
Chris@87
|
12 def generate_scripts(self, scripts):
|
Chris@87
|
13 new_scripts = []
|
Chris@87
|
14 func_scripts = []
|
Chris@87
|
15 for script in scripts:
|
Chris@87
|
16 if is_string(script):
|
Chris@87
|
17 new_scripts.append(script)
|
Chris@87
|
18 else:
|
Chris@87
|
19 func_scripts.append(script)
|
Chris@87
|
20 if not func_scripts:
|
Chris@87
|
21 return new_scripts
|
Chris@87
|
22
|
Chris@87
|
23 build_dir = self.build_dir
|
Chris@87
|
24 self.mkpath(build_dir)
|
Chris@87
|
25 for func in func_scripts:
|
Chris@87
|
26 script = func(build_dir)
|
Chris@87
|
27 if not script:
|
Chris@87
|
28 continue
|
Chris@87
|
29 if is_string(script):
|
Chris@87
|
30 log.info(" adding '%s' to scripts" % (script,))
|
Chris@87
|
31 new_scripts.append(script)
|
Chris@87
|
32 else:
|
Chris@87
|
33 [log.info(" adding '%s' to scripts" % (s,)) for s in script]
|
Chris@87
|
34 new_scripts.extend(list(script))
|
Chris@87
|
35 return new_scripts
|
Chris@87
|
36
|
Chris@87
|
37 def run (self):
|
Chris@87
|
38 if not self.scripts:
|
Chris@87
|
39 return
|
Chris@87
|
40
|
Chris@87
|
41 self.scripts = self.generate_scripts(self.scripts)
|
Chris@87
|
42 # Now make sure that the distribution object has this list of scripts.
|
Chris@87
|
43 # setuptools' develop command requires that this be a list of filenames,
|
Chris@87
|
44 # not functions.
|
Chris@87
|
45 self.distribution.scripts = self.scripts
|
Chris@87
|
46
|
Chris@87
|
47 return old_build_scripts.run(self)
|
Chris@87
|
48
|
Chris@87
|
49 def get_source_files(self):
|
Chris@87
|
50 from numpy.distutils.misc_util import get_script_files
|
Chris@87
|
51 return get_script_files(self.scripts)
|