micropython: Update to 1.17, reorganize package
authorJeffery To <jeffery.to@gmail.com>
Tue, 11 Jan 2022 09:33:40 +0000 (17:33 +0800)
committerRosen Penev <rosenp@gmail.com>
Wed, 12 Jan 2022 00:24:13 +0000 (16:24 -0800)
Previous versions used a bundled version of the axTLS library. The
MicroPython project maintains their own fork[1], as development of the
library appears to have stopped (the last release was version 2.1.5 in
2019[2]).

This replaces the use of axTLS with two variants, one using mbedTLS and
one with no TLS support (and no upip, as it uses the ussl module). The
external mbedTLS patch (040-extmod-use-external-mbedtls.patch) comes
from Debian[3].

This also sets myself as the maintainer.

[1]: https://github.com/micropython/axtls
[2]: https://sourceforge.net/projects/axtls/files/
[3]: https://salsa.debian.org/yangfl-guest/micropython/-/blob/master/debian/patches/0006-extmod-Use-system-mbedtls.patch

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
lang/python/micropython/Makefile
lang/python/micropython/patches/000-Makefile-no-errors.patch
lang/python/micropython/patches/020-mpy-cross-fix-flags.patch [new file with mode: 0644]
lang/python/micropython/patches/030-target-no-darwin.patch [new file with mode: 0644]
lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch [new file with mode: 0644]

index b4ee76ecc744a44b45bd526c2ef34471397ea3f4..b5dccf483959fe0ce3d14fbd2fce473c8dae73dc 100644 (file)
@@ -8,47 +8,95 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=micropython
-PKG_VERSION:=1.9.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.17
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/micropython/micropython/releases/download/v$(PKG_VERSION)
-PKG_HASH:=0db042011bffcbd65362b67eb3cca87eaefa9f2a55b747fa75e922c706b8ce1a
+PKG_HASH:=e322f915cee784de0f8614779cdb88fce175956975b3864e2d1898a53638a2f7
 
-PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
 
 PKG_BUILD_PARALLEL:=1
 
+include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
 
-define Package/micropython
+define Package/micropython/default
   SUBMENU:=Python
   SECTION:=lang
   CATEGORY:=Languages
-  TITLE:=Micro Python
+  TITLE:=MicroPython
   URL:=https://micropython.org
   DEPENDS:=+libffi
+  PROVIDES:=micropython
 endef
 
-define Package/micropython/description
- This package contains Micro Python, a lean and fast implementation of the Python 3.4 programming language
- that is optimised to run on a microcontroller (and low power computers).
+define Package/micropython-mbedtls
+$(call Package/micropython/default)
+  TITLE+= (mbedtls)
+  DEPENDS+= +libmbedtls
+  VARIANT:=mbedtls
+  DEFAULT_VARIANT:=1
 endef
 
+define Package/micropython-nossl
+$(call Package/micropython/default)
+  TITLE+= (nossl)
+  VARIANT:=nossl
+endef
+
+define Package/micropython/default/description
+  MicroPython is a lean and efficient implementation of the Python 3
+  programming language that includes a small subset of the Python
+  standard library and is optimised to run on microcontrollers and in
+  constrained environments.
+endef
+
+define Package/micropython-mbedtls/description
+$(call Package/micropython/default/description)
 
-MAKE_FLAGS += -C $(PKG_BUILD_DIR)/ports/unix FROZEN_MPY_DIR=
+  This version uses the Mbed TLS library.
+endef
+
+define Package/micropython-nossl/description
+$(call Package/micropython/default/description)
+
+  This version is built without TLS and upip.
+endef
+
+MAKE_FLAGS += BUILD_VERBOSE=1
+
+ifneq ($(CONFIG_DEBUG),)
+  MAKE_FLAGS += DEBUG=1
+endif
+
+ifeq ($(BUILD_VARIANT),mbedtls)
+  MAKE_FLAGS += MICROPY_SSL_AXTLS=0 MICROPY_SSL_MBEDTLS=1
+endif
+
+ifeq ($(BUILD_VARIANT),nossl)
+  MAKE_FLAGS += MICROPY_PY_USSL=0 FROZEN_MANIFEST=
+endif
+
+MAKE_PATH = ports/unix
 
 define Build/Compile
-       $(call Build/Compile/Default,axtls)
+       +$(HOST_MAKE_VARS) \
+       $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/mpy-cross \
+               $(HOST_MAKE_FLAGS) BUILD_VERBOSE=1
        $(call Build/Compile/Default)
-
 endef
 
-define Package/micropython/install
+define Package/micropython/default/install
        $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/ports/unix/micropython $(1)/usr/bin/micropython
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/ports/unix/micropython $(1)/usr/bin/
 endef
 
-$(eval $(call BuildPackage,micropython))
+Package/micropython-mbedtls/install = $(Package/micropython/default/install)
+Package/micropython-nossl/install = $(Package/micropython/default/install)
+
+$(eval $(call BuildPackage,micropython-mbedtls))
+$(eval $(call BuildPackage,micropython-nossl))
index 4fe4f8344b1b3b045a747ec83b87d2c568b62630..4ecd2e6aef574a85c0cf15afa1b68010a1d3432a 100644 (file)
@@ -1,11 +1,11 @@
 --- a/ports/unix/Makefile
 +++ b/ports/unix/Makefile
-@@ -21,7 +21,7 @@ INC +=  -I$(TOP)
+@@ -38,7 +38,7 @@ INC +=  -I$(TOP)
  INC += -I$(BUILD)
  
  # compiler settings
 -CWARN = -Wall -Werror
 +CWARN = -Wall
- CWARN += -Wpointer-arith -Wuninitialized
- CFLAGS = $(INC) $(CWARN) -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
+ CWARN += -Wextra -Wno-unused-parameter -Wpointer-arith -Wdouble-promotion -Wfloat-conversion
+ CFLAGS += $(INC) $(CWARN) -std=gnu99 -DUNIX $(CFLAGS_MOD) $(COPT) -I$(VARIANT_DIR) $(CFLAGS_EXTRA)
  
diff --git a/lang/python/micropython/patches/020-mpy-cross-fix-flags.patch b/lang/python/micropython/patches/020-mpy-cross-fix-flags.patch
new file mode 100644 (file)
index 0000000..d035c70
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/mpy-cross/Makefile
++++ b/mpy-cross/Makefile
+@@ -19,7 +19,7 @@ INC += -I$(TOP)
+ # compiler settings
+ CWARN = -Wall -Werror
+ CWARN += -Wextra -Wno-unused-parameter -Wpointer-arith
+-CFLAGS = $(INC) $(CWARN) -std=gnu99 $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
++CFLAGS += $(INC) $(CWARN) -std=gnu99 $(CFLAGS_MOD) $(COPT) $(CFLAGS_EXTRA)
+ CFLAGS += -fdata-sections -ffunction-sections -fno-asynchronous-unwind-tables
+ # Debugging/Optimization
+@@ -42,7 +42,7 @@ else
+ # Use gcc syntax for map file
+ LDFLAGS_ARCH = -Wl,-Map=$@.map,--cref -Wl,--gc-sections
+ endif
+-LDFLAGS = $(LDFLAGS_MOD) $(LDFLAGS_ARCH) -lm $(LDFLAGS_EXTRA)
++LDFLAGS += $(LDFLAGS_MOD) $(LDFLAGS_ARCH) -lm $(LDFLAGS_EXTRA)
+ # source files
+ SRC_C = \
diff --git a/lang/python/micropython/patches/030-target-no-darwin.patch b/lang/python/micropython/patches/030-target-no-darwin.patch
new file mode 100644 (file)
index 0000000..c0b858d
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/ports/unix/Makefile
++++ b/ports/unix/Makefile
+@@ -26,7 +26,7 @@ QSTR_DEFS = qstrdefsport.h
+ QSTR_GLOBAL_DEPENDENCIES = $(VARIANT_DIR)/mpconfigvariant.h
+ # OS name, for simple autoconfig
+-UNAME_S := $(shell uname -s)
++UNAME_S := Linux
+ # include py core make definitions
+ include $(TOP)/py/py.mk
diff --git a/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch b/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch
new file mode 100644 (file)
index 0000000..f503974
--- /dev/null
@@ -0,0 +1,95 @@
+From 9717338f1917fa5db63fe7c9758639417ab06f61 Mon Sep 17 00:00:00 2001
+From: yangfl <yangfl@users.noreply.github.com>
+Date: Mon, 4 Jan 2021 23:09:41 +0800
+Subject: [PATCH 06/10] extmod: Use system mbedtls
+
+---
+ extmod/extmod.mk | 77 ++----------------------------------------------
+ 1 file changed, 2 insertions(+), 75 deletions(-)
+
+--- a/extmod/extmod.mk
++++ b/extmod/extmod.mk
+@@ -66,81 +66,8 @@ SRC_MOD += $(addprefix $(AXTLS_DIR)/,\
+       crypto/sha1.c \
+       )
+ else ifeq ($(MICROPY_SSL_MBEDTLS),1)
+-MBEDTLS_DIR = lib/mbedtls
+-CFLAGS_MOD += -DMICROPY_SSL_MBEDTLS=1 -I$(TOP)/$(MBEDTLS_DIR)/include
+-SRC_MOD += $(addprefix $(MBEDTLS_DIR)/library/,\
+-      aes.c \
+-      aesni.c \
+-      arc4.c \
+-      asn1parse.c \
+-      asn1write.c \
+-      base64.c \
+-      bignum.c \
+-      blowfish.c \
+-      camellia.c \
+-      ccm.c \
+-      certs.c \
+-      chacha20.c \
+-      chachapoly.c \
+-      cipher.c \
+-      cipher_wrap.c \
+-      cmac.c \
+-      ctr_drbg.c \
+-      debug.c \
+-      des.c \
+-      dhm.c \
+-      ecdh.c \
+-      ecdsa.c \
+-      ecjpake.c \
+-      ecp.c \
+-      ecp_curves.c \
+-      entropy.c \
+-      entropy_poll.c \
+-      error.c \
+-      gcm.c \
+-      havege.c \
+-      hmac_drbg.c \
+-      md2.c \
+-      md4.c \
+-      md5.c \
+-      md.c \
+-      md_wrap.c \
+-      oid.c \
+-      padlock.c \
+-      pem.c \
+-      pk.c \
+-      pkcs11.c \
+-      pkcs12.c \
+-      pkcs5.c \
+-      pkparse.c \
+-      pk_wrap.c \
+-      pkwrite.c \
+-      platform.c \
+-      platform_util.c \
+-      poly1305.c \
+-      ripemd160.c \
+-      rsa.c \
+-      rsa_internal.c \
+-      sha1.c \
+-      sha256.c \
+-      sha512.c \
+-      ssl_cache.c \
+-      ssl_ciphersuites.c \
+-      ssl_cli.c \
+-      ssl_cookie.c \
+-      ssl_srv.c \
+-      ssl_ticket.c \
+-      ssl_tls.c \
+-      timing.c \
+-      x509.c \
+-      x509_create.c \
+-      x509_crl.c \
+-      x509_crt.c \
+-      x509_csr.c \
+-      x509write_crt.c \
+-      x509write_csr.c \
+-      xtea.c \
+-      )
++CFLAGS_MOD += -DMICROPY_SSL_MBEDTLS=1
++LDFLAGS_MOD += -lmbedx509 -lmbedtls -lmbedcrypto
+ endif
+ endif