build_scripts.py 1.6 KB

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