ASR_BASE
Change-Id: Icf3719cc0afe3eeb3edc7fa80a2eb5199ca9dda1
diff --git a/external/subpack/lang/python/micropython/Makefile b/external/subpack/lang/python/micropython/Makefile
new file mode 100644
index 0000000..5867da1
--- /dev/null
+++ b/external/subpack/lang/python/micropython/Makefile
@@ -0,0 +1,124 @@
+#
+# Copyright (C) 2008-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=micropython
+PKG_VERSION:=1.21.0
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/micropython/micropython/releases/download/v$(PKG_VERSION)
+PKG_HASH:=abd2152613559d3f44728668346e78be9d93458133a03b700baf222c322fd4d5
+
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:micropython:micropython
+
+PKG_BUILD_DEPENDS:=python3/host
+PKG_BUILD_FLAGS:=no-mips16 no-mold
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/package.mk
+
+define Package/micropython/Default
+ SUBMENU:=Python
+ SECTION:=lang
+ CATEGORY:=Languages
+ TITLE:=MicroPython
+ URL:=https://micropython.org
+ DEPENDS:=+libffi
+ PROVIDES:=micropython
+endef
+
+define Package/micropython-mbedtls
+$(call Package/micropython/Default)
+ TITLE+= (mbedtls)
+ DEPENDS+= +PACKAGE_micropython-mbedtls:libmbedtls
+ CONFLICTS:=micropython-nossl
+ 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)
+
+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 mip.
+endef
+
+MAKE_FLAGS += BUILD_VERBOSE=1 STRIP=
+
+ifneq ($(CONFIG_DEBUG),)
+ MAKE_FLAGS += DEBUG=1
+endif
+
+ifeq ($(BUILD_VARIANT),nossl)
+ MAKE_FLAGS += MICROPY_PY_SSL=0 FROZEN_MANIFEST=variants/standard/manifest-nossl.py
+endif
+
+# Work around "variable might be clobbered" warning leading to build error
+# https://github.com/micropython/micropython/issues/12838
+ifeq ($(ARCH),riscv64)
+ MAKE_FLAGS += CFLAGS_EXTRA=-Wno-error=clobbered
+endif
+
+MAKE_PATH = ports/unix
+
+define Build/Configure
+ +$(HOST_MAKE_VARS) \
+ $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/mpy-cross \
+ $(HOST_MAKE_FLAGS) BUILD_VERBOSE=1
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(2)/lib/micropython/mpy-cross
+ $(CP) \
+ $(PKG_BUILD_DIR)/mpy-cross/mpy_cross \
+ $(2)/lib/micropython/mpy-cross/
+
+ $(INSTALL_DIR) $(2)/lib/micropython/mpy-cross/build
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/mpy-cross/build/mpy-cross \
+ $(2)/lib/micropython/mpy-cross/build/
+
+ $(INSTALL_DIR) $(2)/lib/micropython/tools
+ $(INSTALL_DATA) \
+ $(PKG_BUILD_DIR)/tools/manifestfile.py \
+ $(2)/lib/micropython/tools/
+endef
+
+define Package/micropython/Default/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/ports/unix/build-standard/micropython $(1)/usr/bin/
+endef
+
+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/external/subpack/lang/python/micropython/patches/010-cdefs.patch b/external/subpack/lang/python/micropython/patches/010-cdefs.patch
new file mode 100644
index 0000000..897c880
--- /dev/null
+++ b/external/subpack/lang/python/micropython/patches/010-cdefs.patch
@@ -0,0 +1,64 @@
+--- a/lib/berkeley-db-1.xx/PORT/bsd.4.4/include/db.h
++++ b/lib/berkeley-db-1.xx/PORT/bsd.4.4/include/db.h
+@@ -37,7 +37,7 @@
+ #define _DB_H_
+
+ #include <sys/types.h>
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+
+ #include <limits.h>
+
+--- a/lib/berkeley-db-1.xx/PORT/clib/memmove.c
++++ b/lib/berkeley-db-1.xx/PORT/clib/memmove.c
+@@ -38,7 +38,7 @@
+ static char sccsid[] = "@(#)bcopy.c 8.1 (Berkeley) 6/4/93";
+ #endif /* LIBC_SCCS and not lint */
+
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+ #include <string.h>
+
+ /*
+--- a/lib/berkeley-db-1.xx/PORT/clib/snprintf.c
++++ b/lib/berkeley-db-1.xx/PORT/clib/snprintf.c
+@@ -1,5 +1,5 @@
+ #include <sys/types.h>
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+
+ #include <compat.h>
+
+--- a/lib/berkeley-db-1.xx/PORT/hpux.9.01/local/hp_siglist.c
++++ b/lib/berkeley-db-1.xx/PORT/hpux.9.01/local/hp_siglist.c
+@@ -2,7 +2,7 @@
+ * Derived from:
+ * static char sccsid[] = "@(#)siglist.c 8.1 (Berkeley) 6/4/93";
+ */
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+
+ #include <signal.h>
+
+--- a/lib/berkeley-db-1.xx/PORT/ultrix.4.2/include/db.h
++++ b/lib/berkeley-db-1.xx/PORT/ultrix.4.2/include/db.h
+@@ -37,7 +37,7 @@
+ #define _DB_H_
+
+ #include <sys/types.h>
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+
+ #include <limits.h>
+
+--- a/lib/berkeley-db-1.xx/include/db.h
++++ b/lib/berkeley-db-1.xx/include/db.h
+@@ -37,7 +37,7 @@
+ #define _DB_H_
+
+ #include <sys/types.h>
+-#include <sys/cdefs.h>
++#include "cdefs.h"
+
+ #include <limits.h>
+
diff --git a/external/subpack/lang/python/micropython/patches/030-target-no-darwin.patch b/external/subpack/lang/python/micropython/patches/030-target-no-darwin.patch
new file mode 100644
index 0000000..9dc4c59
--- /dev/null
+++ b/external/subpack/lang/python/micropython/patches/030-target-no-darwin.patch
@@ -0,0 +1,11 @@
+--- a/ports/unix/Makefile
++++ b/ports/unix/Makefile
+@@ -31,7 +31,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/external/subpack/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch b/external/subpack/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch
new file mode 100644
index 0000000..3399412
--- /dev/null
+++ b/external/subpack/lang/python/micropython/patches/040-extmod-use-external-mbedtls.patch
@@ -0,0 +1,99 @@
+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
+@@ -131,85 +131,8 @@ SRC_THIRDPARTY_C += $(addprefix $(AXTLS_
+ crypto/sha1.c \
+ )
+ else ifeq ($(MICROPY_SSL_MBEDTLS),1)
+-MBEDTLS_DIR = lib/mbedtls
+-MBEDTLS_CONFIG_FILE ?= \"mbedtls/mbedtls_config.h\"
+-GIT_SUBMODULES += $(MBEDTLS_DIR)
+-CFLAGS_EXTMOD += -DMBEDTLS_CONFIG_FILE=$(MBEDTLS_CONFIG_FILE)
+-CFLAGS_EXTMOD += -DMICROPY_SSL_MBEDTLS=1 -I$(TOP)/$(MBEDTLS_DIR)/include
+-SRC_THIRDPARTY_C += lib/mbedtls_errors/mp_mbedtls_errors.c
+-SRC_THIRDPARTY_C += $(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 \
+- gcm.c \
+- havege.c \
+- hmac_drbg.c \
+- md2.c \
+- md4.c \
+- md5.c \
+- md.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_msg.c \
+- ssl_ticket.c \
+- ssl_tls.c \
+- timing.c \
+- constant_time.c \
+- x509.c \
+- x509_create.c \
+- x509_crl.c \
+- x509_crt.c \
+- x509_csr.c \
+- x509write_crt.c \
+- x509write_csr.c \
+- xtea.c \
+- )
++CFLAGS_EXTMOD += -DMICROPY_SSL_MBEDTLS=1
++LDFLAGS_MOD += -lmbedx509 -lmbedtls -lmbedcrypto
+ endif
+ endif
+
diff --git a/external/subpack/lang/python/micropython/src/ports/unix/variants/standard/manifest-nossl.py b/external/subpack/lang/python/micropython/src/ports/unix/variants/standard/manifest-nossl.py
new file mode 100644
index 0000000..ee2b462
--- /dev/null
+++ b/external/subpack/lang/python/micropython/src/ports/unix/variants/standard/manifest-nossl.py
@@ -0,0 +1 @@
+include("$(MPY_DIR)/extmod/asyncio")
diff --git a/external/subpack/lang/python/micropython/test.sh b/external/subpack/lang/python/micropython/test.sh
new file mode 100644
index 0000000..82cf2ec
--- /dev/null
+++ b/external/subpack/lang/python/micropython/test.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+nl="
+"
+
+micropython -c "import sys${nl}print(sys.version)" | grep -F " MicroPython v${PKG_VERSION} "