diff options
Diffstat (limited to 'meta/recipes-devtools/python/python3-pip')
3 files changed, 217 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch new file mode 100644 index 0000000000..d6c27b8461 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip/0001-change-shebang-to-python3.patch @@ -0,0 +1,115 @@ +From dca973830d4eee3e0f79e61237c44a9dd8201641 Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <trevor.gamblin@windriver.com> +Date: Tue, 22 Jun 2021 12:31:46 -0400 +Subject: [PATCH] change shebang to python3 + +Upstream-Status: Inappropriate (OE-specific) + +Despite no longer supporting python2, some files in the pip source refer +to "python" instead of "python3", so patch them as needed to ensure that +they correctly reference the python3 binary. + +Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com> + +--- + src/pip/_vendor/chardet/langbulgarianmodel.py | 2 +- + src/pip/_vendor/chardet/langgreekmodel.py | 2 +- + src/pip/_vendor/chardet/langhebrewmodel.py | 2 +- + src/pip/_vendor/chardet/langhungarianmodel.py | 2 +- + src/pip/_vendor/chardet/langrussianmodel.py | 2 +- + src/pip/_vendor/chardet/langthaimodel.py | 2 +- + src/pip/_vendor/chardet/langturkishmodel.py | 2 +- + src/pip/_vendor/chardet/metadata/languages.py | 2 +- + src/pip/_vendor/requests/certs.py | 2 +- + 9 files changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/pip/_vendor/chardet/langbulgarianmodel.py b/src/pip/_vendor/chardet/langbulgarianmodel.py +index e963a50..97ea6ce 100644 +--- a/src/pip/_vendor/chardet/langbulgarianmodel.py ++++ b/src/pip/_vendor/chardet/langbulgarianmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langgreekmodel.py b/src/pip/_vendor/chardet/langgreekmodel.py +index d99528e..4a127ea 100644 +--- a/src/pip/_vendor/chardet/langgreekmodel.py ++++ b/src/pip/_vendor/chardet/langgreekmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langhebrewmodel.py b/src/pip/_vendor/chardet/langhebrewmodel.py +index 484c652..676c1a7 100644 +--- a/src/pip/_vendor/chardet/langhebrewmodel.py ++++ b/src/pip/_vendor/chardet/langhebrewmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langhungarianmodel.py b/src/pip/_vendor/chardet/langhungarianmodel.py +index bbc5cda..042eae7 100644 +--- a/src/pip/_vendor/chardet/langhungarianmodel.py ++++ b/src/pip/_vendor/chardet/langhungarianmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langrussianmodel.py b/src/pip/_vendor/chardet/langrussianmodel.py +index 5594452..564b02e 100644 +--- a/src/pip/_vendor/chardet/langrussianmodel.py ++++ b/src/pip/_vendor/chardet/langrussianmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langthaimodel.py b/src/pip/_vendor/chardet/langthaimodel.py +index 9a37db5..c974879 100644 +--- a/src/pip/_vendor/chardet/langthaimodel.py ++++ b/src/pip/_vendor/chardet/langthaimodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/langturkishmodel.py b/src/pip/_vendor/chardet/langturkishmodel.py +index 43f4230..7e710c3 100644 +--- a/src/pip/_vendor/chardet/langturkishmodel.py ++++ b/src/pip/_vendor/chardet/langturkishmodel.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + from pip._vendor.chardet.sbcharsetprober import SingleByteCharSetModel +diff --git a/src/pip/_vendor/chardet/metadata/languages.py b/src/pip/_vendor/chardet/metadata/languages.py +index 3237d5a..aa2ec7c 100644 +--- a/src/pip/_vendor/chardet/metadata/languages.py ++++ b/src/pip/_vendor/chardet/metadata/languages.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + """ + Metadata about languages used by our model training code for our +diff --git a/src/pip/_vendor/requests/certs.py b/src/pip/_vendor/requests/certs.py +index 06a594e..bfa7839 100644 +--- a/src/pip/_vendor/requests/certs.py ++++ b/src/pip/_vendor/requests/certs.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/env python3 + # -*- coding: utf-8 -*- + + """ diff --git a/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch new file mode 100644 index 0000000000..920e22bc02 --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip/no_shebang_mangling.patch @@ -0,0 +1,28 @@ +Patch pip to disable shebang mangling and also force the python executable +to be python3 from the environment when building anything for the target +(or nativesdk). This avoids incorrect interpreter paths in the target scripts. + +Upstream-Status: Inappropriate [OE specific config] + +Index: pip-22.0.3/src/pip/_vendor/distlib/scripts.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_vendor/distlib/scripts.py ++++ pip-22.0.3/src/pip/_vendor/distlib/scripts.py +@@ -135,6 +135,8 @@ class ScriptMaker(object): + See also: http://www.in-ulm.de/~mascheck/various/shebang/#length + https://hg.mozilla.org/mozilla-central/file/tip/mach + """ ++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ: ++ return b'#!/usr/bin/env python3' + if os.name != 'posix': + simple_shebang = True + else: +@@ -340,7 +342,7 @@ class ScriptMaker(object): + return + + match = FIRST_LINE_RE.match(first_line.replace(b'\r\n', b'\n')) +- if match: ++ if False: + adjust = True + post_interp = match.group(1) or b'' + diff --git a/meta/recipes-devtools/python/python3-pip/reproducible.patch b/meta/recipes-devtools/python/python3-pip/reproducible.patch new file mode 100644 index 0000000000..538bb94f7a --- /dev/null +++ b/meta/recipes-devtools/python/python3-pip/reproducible.patch @@ -0,0 +1,74 @@ +Pip installed wheels are not reproducible currently. The direct_url +files encode an installation path and the installed wheels compile +the python files at their location, not their final install location +which is incorrect. + +To fix this, simply disable the direct_urls and pass the "root" to +the python compile function to strip that path out of the compiled +files. + +A version of this patch, perhaps stripping root from the direct_urls +may be something that could be considered by upstream. + +Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> + +Upstream-Status: Pending + +Index: pip-22.0.3/src/pip/_internal/req/req_install.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_internal/req/req_install.py ++++ pip-22.0.3/src/pip/_internal/req/req_install.py +@@ -758,7 +758,9 @@ class InstallRequirement: + if self.is_wheel: + assert self.local_file_path + direct_url = None +- if self.editable: ++ if '_PYTHON_SYSCONFIGDATA_NAME' in os.environ: ++ direct_url = None ++ elif self.editable: + direct_url = direct_url_for_editable(self.unpacked_source_directory) + elif self.original_link: + direct_url = direct_url_from_link( +@@ -775,6 +777,7 @@ class InstallRequirement: + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=self.user_supplied, ++ root=root, + ) + self.install_succeeded = True + return +Index: pip-22.0.3/src/pip/_internal/operations/install/wheel.py +=================================================================== +--- pip-22.0.3.orig/src/pip/_internal/operations/install/wheel.py ++++ pip-22.0.3/src/pip/_internal/operations/install/wheel.py +@@ -436,6 +436,7 @@ def _install_wheel( + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, ++ root: str = None, + ) -> None: + """Install a wheel. + +@@ -612,7 +613,7 @@ def _install_wheel( + with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + for path in pyc_source_file_paths(): +- success = compileall.compile_file(path, force=True, quiet=True) ++ success = compileall.compile_file(path, force=True, quiet=True, stripdir=root) + if success: + pyc_path = pyc_output_path(path) + assert os.path.exists(pyc_path) +@@ -723,6 +724,7 @@ def install_wheel( + warn_script_location: bool = True, + direct_url: Optional[DirectUrl] = None, + requested: bool = False, ++ root: str = None, + ) -> None: + with ZipFile(wheel_path, allowZip64=True) as z: + with req_error_context(req_description): +@@ -735,4 +737,5 @@ def install_wheel( + warn_script_location=warn_script_location, + direct_url=direct_url, + requested=requested, ++ root=root, + ) |