python-cffi: fix cross-compilation on macOS hosts

setup.py picks the macOS-only -iwithsysroot/usr/include/ffi flag from
sys.platform, which describes the interpreter running the build rather than
the target, so cross-compiling from a macOS host hands an Apple clang flag to
the GNU cross compiler and the build fails. Use sysconfig.get_platform(),
which honours the _PYTHON_HOST_PLATFORM that python3-package.mk exports.

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
This commit is contained in:
Josef Schlehofer authored and Alexandru Ardelean committed 2026-08-09 11:42:40 +03:00
1 parent 762e3affdd
commit a8c37e36c1
2 files changed
+32 -1

No files matched your search

+1 -1
View File
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=python-cffi
PKG_VERSION:=2.0.0
PKG_RELEASE:=1
PKG_RELEASE:=2
PYPI_NAME:=cffi
PKG_HASH:=44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529
@@ -0,0 +1,31 @@
From 7a3b39e2fbbaa0511789a3231964f61f77fb28a9 Mon Sep 17 00:00:00 2001
From: Josef Schlehofer <pepe.schlehofer@gmail.com>
Date: Tue, 9 Jun 2026 04:33:35 +0000
Subject: [PATCH] setup.py: fix cross-compilation on macOS hosts
When cross-compiling for a non-macOS target (such as Linux) on a macOS host,
setup.py incorrectly detects the host platform as 'darwin' using sys.platform.
This adds the macOS-specific flag -iwithsysroot/usr/include/ffi to the compiler
arguments, which causes the cross-compiler to fail with:
powerpc-openwrt-linux-musl-gcc: error: unrecognized command-line option
'-iwithsysroot/usr/include/ffi'
By using sysconfig.get_platform().startswith('macosx') instead of 'darwin' in
sys.platform, we correctly check the target platform rather than the build host.
sysconfig.get_platform() honours _PYTHON_HOST_PLATFORM, which
python3-package.mk already exports.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
---
--- a/setup.py
+++ b/setup.py
@@ -154,7 +154,7 @@ else:
ask_supports_thread()
ask_supports_sync_synchronize()
-if 'darwin' in sys.platform:
+if sysconfig.get_platform().startswith('macosx'):
# priority is given to `pkg_config`, but always fall back on SDK's libffi.
extra_compile_args += ['-iwithsysroot/usr/include/ffi']