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} "