mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-12 19:36:45 +01:00
62 lines
2.3 KiB
Diff
62 lines
2.3 KiB
Diff
From 774d7a570d9f76903de3c3267512b8a7d252c21e Mon Sep 17 00:00:00 2001
|
|
From: James Le Cuirot <chewi@gentoo.org>
|
|
Date: Fri, 22 Dec 2023 22:38:27 +0000
|
|
Subject: [PATCH] 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.
|
|
---
|
|
setup.py | 13 +++++++++++--
|
|
1 file changed, 11 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/setup.py b/setup.py
|
|
index 1bf0bcff558..07163d001fc 100755
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -15,6 +15,7 @@
|
|
import struct
|
|
import subprocess
|
|
import sys
|
|
+import sysconfig
|
|
import warnings
|
|
|
|
from setuptools import Extension, setup
|
|
@@ -504,8 +505,16 @@ def build_extensions(self):
|
|
for d in os.environ[k].split(os.path.pathsep):
|
|
_add_directory(library_dirs, d)
|
|
|
|
- _add_directory(library_dirs, os.path.join(sys.prefix, "lib"))
|
|
- _add_directory(include_dirs, os.path.join(sys.prefix, "include"))
|
|
+ _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
|