NuttX x86_64 (qemu-intel64) builds with the native host gcc, which
exposed several host-environment leaks in the CPython cross build:
- Pass the -D/-U macro flags from CFLAGS as CPPFLAGS so
preprocessor-only configure probes (Misc/platform_triplet.c) do not
see the host's __linux__ and misdetect the platform as
x86_64-linux-gnu, enabling Linux-only code such as the perf
trampoline.
- Force linux/random.h and sys/xattr.h probes to no in config.site:
NuttX provides neither, but a native toolchain resolves them against
the host /usr/include. The former drags host ioctl macros into
posixmodule, the latter enables os xattr support with no xattr
syscalls to link against.
- Disable _curses, _curses_panel, _dbm, _gdbm, _hashlib and _tkinter:
their host libraries are discovered via pkg-config when the target
compiler can compile host headers. hashlib keeps working through
the built-in HACL implementations.
- Only build _posixsubprocess when the arch has a real fork(): its
vfork() support is only an optimization and the fork() fallback path
(PyOS_BeforeFork/PyOS_AfterFork_*) is compiled unconditionally but
declared only under HAVE_FORK. This also fixes rv-virt:python,
which became vfork-only after the fork/vfork split.
Signed-off-by: raiden00pl <raiden00@railab.me>
Assisted-by: Claude Code
This commit enables using `pip` as a pre-compiled (pyc) built-in
distributed along with cpython.
Signed-off-by: Tiago Medicci <tiago.medicci@espressif.com>
The `Setup.local` and the `config.site` files are used by Python's
build system to, respectively, enable or disable Python's modules
and set/unset available functions in the target system. These files
are now set according to NuttX's configs, enabling or disabling
Python's features according to the configs set on NuttX.
2025-02-01 23:34:24 +01:00
Renamed from interpreters/python/Setup.local (Browse further)