Open
Description
Is your feature request related to a problem? Please describe.
After #2879 was merged, it's time to make Python on NuttX fully usable!
This issue intends to discuss the next steps required to make it fully functional, including a "To-Do" list and any discussions on how it would evolve to support other architectures and platforms.
Initial Considerations
- Python for NuttX target initially the
rv-virt
(RISC-V QEMU). That being said, itsinterpreters/python/config.site
andinterpreters/python/Setup.local
are somehow tied with the features enabled by theboards/risc-v/qemu-rv/rv-virt/configs/cpython/defconfig
. Python for NuttX depends onCONFIG_EXPERIMENTAL
! - Python modules are stored in
pyc
(byte-code format) and are loaded from a ROMFS image at startup. - Environment variables like
PYTHONHOME
andPYTHON_BASIC_REPL
needs to be set accordingly.
Describe the solution you'd like
TO-DO list:
This is the list of the next steps to make Python's port fully functional (sorted by highest priority):
- Provide a CMake-based build: currently we can only build it using
Make
. - Generate
interpreters/python/Setup.local
andinterpreters/python/config.site
dynamically according to the enabled configs. For instance:export ac_cv_func_pipe="yes"
depends onCONFIG_PIPES
being enabled. - Create a wrapper application to automate the 1) mounting the ROMFS image with the Python's modules, 2) setting the environment variables and 3) running the
Program/python.c
app. - Support Python's socket module. This is one of the most important modules to enable Python applications with POSIX-compatible sockets .
Known Issues
- Check why enabling the optimization fails to generate coherent code for
Python/Modules/getpath.c
. Reported at https://github.com/apache/incubator-nuttx-apps/blob/efc1bf710c8be1e0f0ae5e1bf2b292f8b57076a6/interpreters/python/Makefile#L86 (valid forriscv-none-elf-gcc (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0
)
Describe alternatives you've considered
No response
Verification
- I have verified before submitting the report.
Metadata
Metadata
Assignees
Type
Projects
Status
In Progress