From d32fb4da510c91ba3596fad8d3d73074b1b287ac Mon Sep 17 00:00:00 2001 From: James Hilliard Date: Sun, 18 Oct 2026 12:37:23 -0600 Subject: [PATCH] Skip Python installation paths for build-tree Python --- docs/releasenotes/13.1.0.rst | 8 ++++++++ setup.py | 24 ++++++++++++++---------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/docs/releasenotes/13.1.0.rst b/docs/releasenotes/13.1.0.rst index 140bcbe3115..88db2af1282 100644 --- a/docs/releasenotes/13.1.0.rst +++ b/docs/releasenotes/13.1.0.rst @@ -54,3 +54,11 @@ Blurring I;16 images :py:class:`~PIL.ImageFilter.GaussianBlur` and :py:class:`~PIL.ImageFilter.BoxBlur` now support I;16, I;16L, I;16B and I;16N images. + +Respect Python build-tree configuration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When building against a Python build tree, Pillow now skips the extra library and +include directory lookups based on Python's installation prefix. This avoids +adding unprefixed installation paths in cross-compilation environments. Builds +against an installed Python retain the existing lookups. diff --git a/setup.py b/setup.py index 2d02cf129ca..7de22bb78eb 100644 --- a/setup.py +++ b/setup.py @@ -572,16 +572,20 @@ def build_extensions(self) -> None: for d in os.environ[k].split(os.path.pathsep): _add_directory(library_dirs, d) - _add_directory( - library_dirs, - (sys.prefix == sys.base_prefix and sysconfig.get_config_var("LIBDIR")) - or os.path.join(sys.prefix, "lib"), - ) - _add_directory( - include_dirs, - (sys.prefix == sys.base_prefix and sysconfig.get_config_var("INCLUDEDIR")) - or os.path.join(sys.prefix, "include"), - ) + if not sysconfig.is_python_build(): + _add_directory( + library_dirs, + (sys.prefix == sys.base_prefix and sysconfig.get_config_var("LIBDIR")) + or os.path.join(sys.prefix, "lib"), + ) + _add_directory( + include_dirs, + ( + sys.prefix == sys.base_prefix + and sysconfig.get_config_var("INCLUDEDIR") + ) + or os.path.join(sys.prefix, "include"), + ) # # add platform directories