diff options
Diffstat (limited to 'meta/recipes-devtools/python/python3-installer/interpreter.patch')
-rw-r--r-- | meta/recipes-devtools/python/python3-installer/interpreter.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3-installer/interpreter.patch b/meta/recipes-devtools/python/python3-installer/interpreter.patch new file mode 100644 index 0000000000..7906769b90 --- /dev/null +++ b/meta/recipes-devtools/python/python3-installer/interpreter.patch | |||
@@ -0,0 +1,71 @@ | |||
1 | From 74fe171fa4a25c120607e9f8450cbdfee675c959 Mon Sep 17 00:00:00 2001 | ||
2 | From: Ross Burton <ross.burton@arm.com> | ||
3 | Date: Mon, 14 Mar 2022 14:39:22 +0000 | ||
4 | Subject: [PATCH] python3-installer: add installer module | ||
5 | |||
6 | Let us override the hashbang directly (possibly upstreamable), and don't | ||
7 | play games with hashbangs: for now assume that even hashbangs with spaces | ||
8 | are simple (assume the spaces are only used to separate arguments) and | ||
9 | we don't have long hashbangs. | ||
10 | |||
11 | Upstream-Status: Inappropriate | ||
12 | Signed-off-by: Ross Burton <ross.burton@arm.com> | ||
13 | |||
14 | --- | ||
15 | src/installer/__main__.py | 9 ++++++++- | ||
16 | src/installer/scripts.py | 15 +-------------- | ||
17 | 2 files changed, 9 insertions(+), 15 deletions(-) | ||
18 | |||
19 | diff --git a/src/installer/__main__.py b/src/installer/__main__.py | ||
20 | index 51014b9..38de286 100644 | ||
21 | --- a/src/installer/__main__.py | ||
22 | +++ b/src/installer/__main__.py | ||
23 | @@ -30,6 +30,13 @@ def _get_main_parser() -> argparse.ArgumentParser: | ||
24 | type=str, | ||
25 | help="override prefix to install packages to", | ||
26 | ) | ||
27 | + parser.add_argument( | ||
28 | + "--interpreter", | ||
29 | + "-i", | ||
30 | + type=str, | ||
31 | + default=sys.executable, | ||
32 | + help=f"interpreter (defaults to {sys.executable})", | ||
33 | + ) | ||
34 | parser.add_argument( | ||
35 | "--compile-bytecode", | ||
36 | action="append", | ||
37 | @@ -86,7 +93,7 @@ def _main(cli_args: Sequence[str], program: Optional[str] = None) -> None: | ||
38 | with WheelFile.open(args.wheel) as source: | ||
39 | destination = SchemeDictionaryDestination( | ||
40 | scheme_dict=_get_scheme_dict(source.distribution, prefix=args.prefix), | ||
41 | - interpreter=sys.executable, | ||
42 | + interpreter=args.interpreter, | ||
43 | script_kind=get_launcher_kind(), | ||
44 | bytecode_optimization_levels=bytecode_levels, | ||
45 | destdir=args.destdir, | ||
46 | diff --git a/src/installer/scripts.py b/src/installer/scripts.py | ||
47 | index 7e3c8fc..ba6ed5a 100644 | ||
48 | --- a/src/installer/scripts.py | ||
49 | +++ b/src/installer/scripts.py | ||
50 | @@ -59,20 +59,7 @@ def _build_shebang(executable: str, forlauncher: bool) -> bytes: | ||
51 | https://bitbucket.org/pypa/distlib/src/58cd5c6/distlib/scripts.py#lines-124 | ||
52 | """ | ||
53 | executable_bytes = executable.encode("utf-8") | ||
54 | - if forlauncher: # The launcher can just use the command as-is. | ||
55 | - return b"#!" + executable_bytes | ||
56 | - if _is_executable_simple(executable_bytes): | ||
57 | - return b"#!" + executable_bytes | ||
58 | - | ||
59 | - # Shebang support for an executable with a space in it is under-specified | ||
60 | - # and platform-dependent, so we use a clever hack to generate a script to | ||
61 | - # run in ``/bin/sh`` that should work on all reasonably modern platforms. | ||
62 | - # Read the following message to understand how the hack works: | ||
63 | - # https://github.com/pradyunsg/installer/pull/4#issuecomment-623668717 | ||
64 | - | ||
65 | - quoted = shlex.quote(executable).encode("utf-8") | ||
66 | - # I don't understand a lick what this is trying to do. | ||
67 | - return b"#!/bin/sh\n'''exec' " + quoted + b' "$0" "$@"\n' + b"' '''" | ||
68 | + return b"#!" + executable_bytes | ||
69 | |||
70 | |||
71 | class InvalidScript(ValueError): | ||