Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
67 lines
2.3 KiB
Python
67 lines
2.3 KiB
Python
from distutils import log
|
|
import distutils.command.install_scripts as orig
|
|
import os
|
|
import sys
|
|
|
|
from .._path import ensure_directory
|
|
|
|
|
|
class install_scripts(orig.install_scripts):
|
|
"""Do normal script install, plus any egg_info wrapper scripts"""
|
|
|
|
def initialize_options(self):
|
|
orig.install_scripts.initialize_options(self)
|
|
self.no_ep = False
|
|
|
|
def run(self):
|
|
self.run_command("egg_info")
|
|
if self.distribution.scripts:
|
|
orig.install_scripts.run(self) # run first to set up self.outfiles
|
|
else:
|
|
self.outfiles = []
|
|
if self.no_ep:
|
|
# don't install entry point scripts into .egg file!
|
|
return
|
|
self._install_ep_scripts()
|
|
|
|
def _install_ep_scripts(self):
|
|
# Delay import side-effects
|
|
from pkg_resources import Distribution, PathMetadata
|
|
from . import easy_install as ei
|
|
|
|
ei_cmd = self.get_finalized_command("egg_info")
|
|
dist = Distribution(
|
|
ei_cmd.egg_base,
|
|
PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info),
|
|
ei_cmd.egg_name,
|
|
ei_cmd.egg_version,
|
|
)
|
|
bs_cmd = self.get_finalized_command('build_scripts')
|
|
exec_param = getattr(bs_cmd, 'executable', None)
|
|
writer = ei.ScriptWriter
|
|
if exec_param == sys.executable:
|
|
# In case the path to the Python executable contains a space, wrap
|
|
# it so it's not split up.
|
|
exec_param = [exec_param]
|
|
# resolve the writer to the environment
|
|
writer = writer.best()
|
|
cmd = writer.command_spec_class.best().from_param(exec_param)
|
|
for args in writer.get_args(dist, cmd.as_header()):
|
|
self.write_script(*args)
|
|
|
|
def write_script(self, script_name, contents, mode="t", *ignored):
|
|
"""Write an executable file to the scripts directory"""
|
|
from setuptools.command.easy_install import chmod, current_umask
|
|
|
|
log.info("Installing %s script to %s", script_name, self.install_dir)
|
|
target = os.path.join(self.install_dir, script_name)
|
|
self.outfiles.append(target)
|
|
|
|
mask = current_umask()
|
|
if not self.dry_run:
|
|
ensure_directory(target)
|
|
f = open(target, "w" + mode)
|
|
f.write(contents)
|
|
f.close()
|
|
chmod(target, 0o777 - mask)
|