diff mbox series

[v2,1/1] package/micropython: add support for manifest.py in the configuration

Message ID 20240212021255.246556-1-abiliojr@gmail.com
State New
Headers show
Series [v2,1/1] package/micropython: add support for manifest.py in the configuration | expand

Commit Message

Abilio Marques Feb. 12, 2024, 2:12 a.m. UTC
Micropython can embed packages an modules as frozen bytecode. What code
gets built this way can be defined by means of a "manifest.py" file.

This commit exposes the variable FROZEN_MANIFEST to Buildroot users
through a new variable called BR2_PACKAGE_MICROPYTHON_MANIFEST.

Please check Micropython's documentation for more information:
https://docs.micropython.org/en/latest/reference/manifest.html

We only support freezing of modules from micropython-lib. Freezing
arbitrary modules would require some handling of absoulte paths, and
a guarantee that the files be available before micropython is built,
which is considered a bit too complex; an interested party can
provide such support in the future.

Signed-off-by: Abilio Marques <abiliojr@gmail.com>
---
 package/micropython/Config.in      | 17 +++++++++++++++++
 package/micropython/micropython.mk |  5 +++++
 2 files changed, 22 insertions(+)
diff mbox series

Patch

diff --git a/package/micropython/Config.in b/package/micropython/Config.in
index 26a00baab0..6b99cfd2ff 100644
--- a/package/micropython/Config.in
+++ b/package/micropython/Config.in
@@ -17,6 +17,23 @@  config BR2_PACKAGE_MICROPYTHON_LIB
 	help
 	  Core Python libraries ported to MicroPython.
 
+config BR2_PACKAGE_MICROPYTHON_MANIFEST
+	string "Path to a manifest.py file"
+	help
+	  MicroPython allows Python code to be “frozen” as bytecode
+	  into its binary, as an alternative to loading code from
+	  the filesystem. 
+
+	  A list of "frozen" modules can be provided using a "manifest.py"
+	  file. You can set the path to such file using this variable.
+
+	  See MicroPython's documentation for more information on how to
+	  use the file.
+
+	  Note: in Buildroot, only modules provided with micropython-lib
+      can be frozen with a manifest; freezing arbitrary files is
+	  currently not supported.
+
 endif # BR2_PACKAGE_MICROPYTHON
 
 comment "micropython needs a toolchain w/ threads, dynamic library"
diff --git a/package/micropython/micropython.mk b/package/micropython/micropython.mk
index 125a0edcfb..5a2c136547 100644
--- a/package/micropython/micropython.mk
+++ b/package/micropython/micropython.mk
@@ -43,6 +43,11 @@  else
 MICROPYTHON_MAKE_OPTS += MICROPY_PY_FFI=0
 endif
 
+ifneq ($(BR2_PACKAGE_MICROPYTHON_MANIFEST),"")
+MICROPYTHON_MAKE_OPTS += \
+	FROZEN_MANIFEST=$(BR2_PACKAGE_MICROPYTHON_MANIFEST)
+endif
+
 define MICROPYTHON_BUILD_CMDS
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/mpy-cross
 	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \