nuttx-apps icon indicating copy to clipboard operation
nuttx-apps copied to clipboard

[FEATURE] Python on NuttX: known issues, "TO-DO" list, and general enhancements

Open tmedicci opened this issue 1 year ago • 4 comments

Is your feature request related to a problem? Please describe.

After https://github.com/apache/nuttx-apps/pull/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

  1. Python for NuttX target initially the rv-virt (RISC-V QEMU). That being said, its interpreters/python/config.site and interpreters/python/Setup.local are somehow tied with the features enabled by the boards/risc-v/qemu-rv/rv-virt/configs/cpython/defconfig. Python for NuttX depends on CONFIG_EXPERIMENTAL!
  2. Python modules are stored in pyc (byte-code format) and are loaded from a ROMFS image at startup.
  3. Environment variables like PYTHONHOME and PYTHON_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.
  • [x] Generate interpreters/python/Setup.local and interpreters/python/config.site dynamically according to the enabled configs. For instance: export ac_cv_func_pipe="yes" depends on CONFIG_PIPES being enabled.
  • [x] 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.
  • [x] 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 for riscv-none-elf-gcc (xPack GNU RISC-V Embedded GCC x86_64) 13.2.0)

Describe alternatives you've considered

No response

Verification

  • [X] I have verified before submitting the report.

tmedicci avatar Dec 09 '24 16:12 tmedicci