Skip to content

Commit 5a6384c

Browse files
committed
webassembly: Build pyscript variant
This variant contains more Python modules from micropython-lib Otherwise will get errors like this when trying to run in pyscript ImportError: no module named 'pathlib'
1 parent c94b64f commit 5a6384c

2 files changed

Lines changed: 40 additions & 5 deletions

File tree

Makefile

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ C_MODULES_SRC_PATH = $(abspath ./src)
1616

1717
ifeq ($(PORT),unix)
1818
MANIFEST_PATH=$(abspath ./src/manifest_unix.py)
19-
else
20-
MANIFEST_PATH=$(abspath ./src/manifest.py)
2119
endif
2220

21+
WEBASSEMBLY_MANIFEST_PATH=$(abspath ./src/manifest_webassembly.py)
2322

2423
MODULES_PATH = ./dist/$(ARCH)_$(MPY_ABI_VERSION)
2524
PORT_DIR = ./dist/ports/$(PORT)
@@ -75,9 +74,9 @@ unix: $(UNIX_MICROPYTHON)
7574
$(WEBASSEMBLY_MICROPYTHON): $(PORT_DIR)
7675
emcc --version
7776
mkdir -p $(PORT_DIR)/../webassembly
78-
make -C $(MPY_DIR)/ports/webassembly VARIANT=standard V=1 USER_C_MODULES=$(C_MODULES_SRC_PATH) FROZEN_MANIFEST=$(MANIFEST_PATH) CFLAGS_EXTRA="-Wno-unused-function -Wno-unused-function ${CFLAGS_EXTRA}" -j4
79-
cp $(MPY_DIR)/ports/webassembly/build-standard/micropython.mjs $@
80-
cp $(MPY_DIR)/ports/webassembly/build-standard/micropython.wasm dist/ports/webassembly/
77+
make -C $(MPY_DIR)/ports/webassembly VARIANT=pyscript V=1 USER_C_MODULES=$(C_MODULES_SRC_PATH) FROZEN_MANIFEST=$(WEBASSEMBLY_MANIFEST_PATH) CFLAGS_EXTRA="-Wno-unused-function -Wno-unused-function ${CFLAGS_EXTRA}" -j4
78+
cp $(MPY_DIR)/ports/webassembly/build-pyscript/micropython.mjs $@
79+
cp $(MPY_DIR)/ports/webassembly/build-pyscript/micropython.wasm dist/ports/webassembly/
8180

8281

8382
webassembly: $(WEBASSEMBLY_MICROPYTHON)

src/manifest_webassembly.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
2+
include("$(PORT_DIR)/variants/manifest.py")
3+
4+
# emlearn .py modules
5+
module("emlearn_trees.py", base_path='./emlearn_trees')
6+
module("emlearn_fft.py", base_path='./emlearn_fft')
7+
8+
# The following are expected by pyscript
9+
# Ref https://github.com/micropython/micropython/blob/master/ports/webassembly/variants/pyscript/manifest.py
10+
require("abc")
11+
require("base64")
12+
require("collections")
13+
require("collections-defaultdict")
14+
require("copy")
15+
require("datetime")
16+
require("fnmatch")
17+
require("functools")
18+
require("gzip")
19+
require("hmac")
20+
require("html")
21+
require("inspect")
22+
require("io")
23+
require("itertools")
24+
require("locale")
25+
require("logging")
26+
require("operator")
27+
require("os")
28+
require("os-path")
29+
require("pathlib")
30+
require("stat")
31+
require("tarfile")
32+
require("tarfile-write")
33+
require("time")
34+
require("unittest")
35+
require("uu")
36+
require("zlib")

0 commit comments

Comments
 (0)