[Buildroot] [PATCH v2 1/1] package/micropython: add support for manifest.py in the configuration
Abilio Marques
abiliojr at gmail.com
Mon Feb 12 02:12:53 UTC 2024
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 at gmail.com>
---
package/micropython/Config.in | 17 +++++++++++++++++
package/micropython/micropython.mk | 5 +++++
2 files changed, 22 insertions(+)
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 \
--
2.43.0
More information about the buildroot
mailing list