From d6f26d9394b8132412505cc45fdf4e9644ee9473 Mon Sep 17 00:00:00 2001 From: Tzu-ping Chung Date: Thu, 23 Sep 2021 05:30:00 +0800 Subject: [PATCH] Kill location warning for Python in source tree --- news/10270.removal.rst | 2 ++ src/pip/_internal/locations/__init__.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 news/10270.removal.rst diff --git a/news/10270.removal.rst b/news/10270.removal.rst new file mode 100644 index 00000000000..1a63672a836 --- /dev/null +++ b/news/10270.removal.rst @@ -0,0 +1,2 @@ +Suppress location mismatch warnings when pip is invoked from a Python source +tree, so ``ensurepip`` does not emit warnings on CPython ``make install``. diff --git a/src/pip/_internal/locations/__init__.py b/src/pip/_internal/locations/__init__.py index 7d5491d20ad..dba182d7578 100644 --- a/src/pip/_internal/locations/__init__.py +++ b/src/pip/_internal/locations/__init__.py @@ -303,6 +303,18 @@ def get_scheme( if skip_msys2_mingw_bug: continue + # CPython's POSIX install script invokes pip (via ensurepip) against the + # interpreter located in the source tree, not the install site. This + # triggers special logic in sysconfig that's not present in distutils. + # https://github.com/python/cpython/blob/8c21941ddaf/Lib/sysconfig.py#L178-L194 + skip_cpython_build = ( + sysconfig.is_python_build(check_home=True) + and not WINDOWS + and k in ("headers", "include", "platinclude") + ) + if skip_cpython_build: + continue + warning_contexts.append((old_v, new_v, f"scheme.{k}")) if not warning_contexts: