mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
Fix cross-compiling by searching the right lib and include directories
We were previously searching the `{sys.prefix}/lib` and `{sys.prefix}/include` directories unconditionally. This is problematic when cross-compiling, as it does not take account of any sysroot where alternative libraries and headers are located. Adding `-I/usr/include` causes the build to explode, at least when cross-compiling from 64-bit to 32-bit. Python does not officially support cross-compiling, but Gentoo achieves this by modifying the sysconfig variables like `LIBDIR` and `INCLUDEDIR` with great results. Assuming "lib" is bad. 64-bit Linux systems often use lib64, putting 32-bit libraries under lib. You cannot assume that either though, as pure 64-bit Linux systems may just use lib instead. Things get even stranger on RISC-V. The value of `sys.prefix` changes when using a virtualenv. Dependencies may be installed here, so it does make sense to continue supporting this case, even if it is incompatible with cross-compiling. Unlike regular environments, "lib" is generally used for libraries, although a lib64 symlink may also be present.
This commit is contained in:
parent
e9453a7b88
commit
774d7a570d
13
setup.py
13
setup.py
|
@ -15,6 +15,7 @@ import shutil
|
||||||
import struct
|
import struct
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import sysconfig
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from setuptools import Extension, setup
|
from setuptools import Extension, setup
|
||||||
|
@ -504,8 +505,16 @@ class pil_build_ext(build_ext):
|
||||||
for d in os.environ[k].split(os.path.pathsep):
|
for d in os.environ[k].split(os.path.pathsep):
|
||||||
_add_directory(library_dirs, d)
|
_add_directory(library_dirs, d)
|
||||||
|
|
||||||
_add_directory(library_dirs, os.path.join(sys.prefix, "lib"))
|
_add_directory(
|
||||||
_add_directory(include_dirs, os.path.join(sys.prefix, "include"))
|
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
|
# add platform directories
|
||||||
|
|
Loading…
Reference in New Issue
Block a user