From aae8cd3de3f289cea3db01212579913c925191e8 Mon Sep 17 00:00:00 2001 From: Lauri Tirkkonen Date: Thu, 26 Mar 2020 14:24:25 +0000 Subject: [PATCH] ScriptWriter: create more efficient /usr/bin wrappers Upstream setuptools writes scripts to /usr/bin that do insanely much stuff at runtime. https://github.com/pypa/setuptools/issues/510 Since the script entry points are already known at build time, we can just write those directly into the /usr/bin wrapper, avoiding the expensive 'pkg_resources' import at runtime. The idea is from https://github.com/ninjaaron/fast-entry_points but patched directly into the native build of setuptools here, so that all Python modules under bitbake automatically use it without needing additional build time dependencies. Upstream-Status: Pending Signed-off-by: Lauri Tirkkonen Signed-off-by: Trevor Gamblin --- setuptools/command/easy_install.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 8fba7b41..03a72714 100755 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -2023,17 +2023,12 @@ class ScriptWriter(object): """ template = textwrap.dedent(r""" - # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r - __requires__ = %(spec)r - import re import sys - from pkg_resources import load_entry_point + + from %(module)s import %(ep0)s if __name__ == '__main__': - sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0]) - sys.exit( - load_entry_point(%(spec)r, %(group)r, %(name)r)() - ) + sys.exit(%(entrypoint)s()) """).lstrip() command_spec_class = CommandSpec @@ -2068,6 +2063,9 @@ class ScriptWriter(object): for type_ in 'console', 'gui': group = type_ + '_scripts' for name, ep in dist.get_entry_map(group).items(): + module = ep.module_name + ep0 = ep.attrs[0] + entrypoint = '.'.join(ep.attrs) cls._ensure_safe_name(name) script_text = cls.template % locals() args = cls._get_script_args(type_, name, header, script_text) -- 2.24.1