]> code.ossystems Code Review - openembedded-core.git/blob
7e931c845c868cbebead1e18002e64dd8953b75c
[openembedded-core.git] /
1 From aae8cd3de3f289cea3db01212579913c925191e8 Mon Sep 17 00:00:00 2001
2 From: Lauri Tirkkonen <lauri.tirkkonen.ext@nokia.com>
3 Date: Thu, 26 Mar 2020 14:24:25 +0000
4 Subject: [PATCH] ScriptWriter: create more efficient /usr/bin wrappers
5
6 Upstream setuptools writes scripts to /usr/bin that do insanely much
7 stuff at runtime. https://github.com/pypa/setuptools/issues/510
8
9 Since the script entry points are already known at build time, we can
10 just write those directly into the /usr/bin wrapper, avoiding the
11 expensive 'pkg_resources' import at runtime. The idea is from
12 https://github.com/ninjaaron/fast-entry_points but patched directly into
13 the native build of setuptools here, so that all Python modules under
14 bitbake automatically use it without needing additional build time
15 dependencies.
16
17 Upstream-Status: Pending
18
19 Signed-off-by: Lauri Tirkkonen <lauri.tirkkonen.ext@nokia.com>
20 Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
21 ---
22  setuptools/command/easy_install.py | 14 ++++++--------
23  1 file changed, 6 insertions(+), 8 deletions(-)
24
25 diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
26 index 8fba7b41..03a72714 100755
27 --- a/setuptools/command/easy_install.py
28 +++ b/setuptools/command/easy_install.py
29 @@ -2023,17 +2023,12 @@ class ScriptWriter(object):
30      """
31  
32      template = textwrap.dedent(r"""
33 -        # EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
34 -        __requires__ = %(spec)r
35 -        import re
36          import sys
37 -        from pkg_resources import load_entry_point
38 +
39 +        from %(module)s import %(ep0)s
40  
41          if __name__ == '__main__':
42 -            sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
43 -            sys.exit(
44 -                load_entry_point(%(spec)r, %(group)r, %(name)r)()
45 -            )
46 +            sys.exit(%(entrypoint)s())
47      """).lstrip()
48  
49      command_spec_class = CommandSpec
50 @@ -2068,6 +2063,9 @@ class ScriptWriter(object):
51          for type_ in 'console', 'gui':
52              group = type_ + '_scripts'
53              for name, ep in dist.get_entry_map(group).items():
54 +                module = ep.module_name
55 +                ep0 = ep.attrs[0]
56 +                entrypoint = '.'.join(ep.attrs)
57                  cls._ensure_safe_name(name)
58                  script_text = cls.template % locals()
59                  args = cls._get_script_args(type_, name, header, script_text)
60 -- 
61 2.24.1
62