diff --git a/lang/python/micropython/Makefile b/lang/python/micropython/Makefile index b4ee76ecc..b5dccf483 100644 --- a/lang/python/micropython/Makefile +++ b/lang/python/micropython/Makefile @@ -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 +PKG_MAINTAINER:=Jeffery To 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)) diff --git a/lang/python/micropython/patches/000-Makefile-no-errors.patch b/lang/python/micropython/patches/000-Makefile-no-errors.patch index 4fe4f8344..4ecd2e6ae 100644 --- a/lang/python/micropython/patches/000-Makefile-no-errors.patch +++ b/lang/python/micropython/patches/000-Makefile-no-errors.patch @@ -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 index 000000000..d035c7010 --- /dev/null +++ b/lang/python/micropython/patches/020-mpy-cross-fix-flags.patch @@ -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 index 000000000..c0b858d5f --- /dev/null +++ b/lang/python/micropython/patches/030-target-no-darwin.patch @@ -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 index 000000000..f5039741a --- /dev/null +++ b/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch @@ -0,0 +1,95 @@ +From 9717338f1917fa5db63fe7c9758639417ab06f61 Mon Sep 17 00:00:00 2001 +From: yangfl +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 +