bpo-40280: Build WASM stdlib bundle and more modules for node (GH-30597)

This commit is contained in:
Christian Heimes 2022-01-14 13:11:49 +02:00 committed by GitHub
parent 7c770d3350
commit c8319f7921
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 55 additions and 24 deletions

View file

@ -2399,6 +2399,7 @@ clean-retain-profile: pycremoval
-rm -f Lib/lib2to3/*Grammar*.pickle -rm -f Lib/lib2to3/*Grammar*.pickle
-rm -f _bootstrap_python -rm -f _bootstrap_python
-rm -f python.html python*.js python.data -rm -f python.html python*.js python.data
-rm -rf $(WASM_STDLIB)
-rm -f Programs/_testembed Programs/_freeze_module -rm -f Programs/_testembed Programs/_freeze_module
-rm -f Python/deepfreeze/*.[co] -rm -f Python/deepfreeze/*.[co]
-rm -f Python/frozen_modules/*.h -rm -f Python/frozen_modules/*.h

34
configure vendored
View file

@ -6577,7 +6577,13 @@ fi
$as_echo "$LDLIBRARY" >&6; } $as_echo "$LDLIBRARY" >&6; }
# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable # LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable
LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)' case $ac_sys_system/$ac_sys_emscripten_target in #(
Emscripten/browser) :
LIBRARY_DEPS='$(PY3LIBRARY) $(WASM_STDLIB)' ;; #(
*) :
LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)'
;;
esac
LINK_PYTHON_DEPS='$(LIBRARY_DEPS)' LINK_PYTHON_DEPS='$(LIBRARY_DEPS)'
if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then
LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS" LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS"
@ -7669,14 +7675,14 @@ fi
case $ac_sys_system/$ac_sys_emscripten_target in #( case $ac_sys_system/$ac_sys_emscripten_target in #(
Emscripten/browser) : Emscripten/browser) :
LDFLAGS_NODIST="$(LDFLAGS_NODIST) -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 --preload-file \$(WASM_ASSETS_DIR)" LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 --preload-file \$(WASM_ASSETS_DIR)"
WASM_ASSETS_DIR=".\$(prefix)" WASM_ASSETS_DIR=".\$(prefix)"
WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py" WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py"
;; #( ;; #(
Emscripten/node) : Emscripten/node) :
LDFLAGS_NODIST="$(LDFLAGS_NODIST) -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD" LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD"
CFLAGS_NODIST="$(CFLAGS_NODIST) -pthread" CFLAGS_NODIST="$CFLAGS_NODIST -pthread"
;; #( ;; #(
WASI) : WASI) :
@ -21294,22 +21300,26 @@ $as_echo "yes" >&6; }
fi fi
case $ac_sys_system in #( case $ac_sys_system/$ac_sys_emscripten_target in #(
AIX) : AIX/*) :
py_stdlib_not_available="_scproxy spwd" ;; #( py_stdlib_not_available="_scproxy spwd" ;; #(
VxWorks*) : VxWorks*/*) :
py_stdlib_not_available="_scproxy _crypt termios grp" ;; #( py_stdlib_not_available="_scproxy _crypt termios grp" ;; #(
Darwin) : Darwin/*) :
py_stdlib_not_available="ossaudiodev spwd" ;; #( py_stdlib_not_available="ossaudiodev spwd" ;; #(
CYGWIN*) : CYGWIN*/*) :
py_stdlib_not_available="_scproxy nis" ;; #( py_stdlib_not_available="_scproxy nis" ;; #(
QNX*) : QNX*/*) :
py_stdlib_not_available="_scproxy nis" ;; #( py_stdlib_not_available="_scproxy nis" ;; #(
FreeBSD*) : FreeBSD*/*) :
py_stdlib_not_available="_scproxy spwd" ;; #( py_stdlib_not_available="_scproxy spwd" ;; #(
Emscripten) : Emscripten/browser) :
py_stdlib_not_available="_ctypes _curses _curses_panel _dbm _gdbm _multiprocessing _posixshmem _posixsubprocess _scproxy _tkinter _xxsubinterpreters fcntl grp nis ossaudiodev resource readline spwd syslog termios" py_stdlib_not_available="_ctypes _curses _curses_panel _dbm _gdbm _multiprocessing _posixshmem _posixsubprocess _scproxy _tkinter _xxsubinterpreters fcntl grp nis ossaudiodev resource readline spwd syslog termios"
;; #(
Emscripten/node) :
py_stdlib_not_available="_ctypes _curses _curses_panel _dbm _gdbm _scproxy _tkinter nis ossaudiodev spwd syslog"
;; #( ;; #(
*) : *) :
py_stdlib_not_available="_scproxy" py_stdlib_not_available="_scproxy"

View file

@ -1354,7 +1354,10 @@ fi
AC_MSG_RESULT($LDLIBRARY) AC_MSG_RESULT($LDLIBRARY)
# LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable # LIBRARY_DEPS, LINK_PYTHON_OBJS and LINK_PYTHON_DEPS variable
LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)' AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
[Emscripten/browser], [LIBRARY_DEPS='$(PY3LIBRARY) $(WASM_STDLIB)'],
[LIBRARY_DEPS='$(PY3LIBRARY) $(EXPORTSYMS)']
)
LINK_PYTHON_DEPS='$(LIBRARY_DEPS)' LINK_PYTHON_DEPS='$(LIBRARY_DEPS)'
if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then if test "$PY_ENABLE_SHARED" = 1 || test "$enable_framework" ; then
LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS" LIBRARY_DEPS="\$(LDLIBRARY) $LIBRARY_DEPS"
@ -1839,13 +1842,13 @@ fi
# WASM flags # WASM flags
AS_CASE([$ac_sys_system/$ac_sys_emscripten_target], AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
[Emscripten/browser], [ [Emscripten/browser], [
LDFLAGS_NODIST="$(LDFLAGS_NODIST) -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 --preload-file \$(WASM_ASSETS_DIR)" LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 --preload-file \$(WASM_ASSETS_DIR)"
WASM_ASSETS_DIR=".\$(prefix)" WASM_ASSETS_DIR=".\$(prefix)"
WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py" WASM_STDLIB="\$(WASM_ASSETS_DIR)/local/lib/python\$(VERSION)/os.py"
], ],
[Emscripten/node], [ [Emscripten/node], [
LDFLAGS_NODIST="$(LDFLAGS_NODIST) -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD" LDFLAGS_NODIST="$LDFLAGS_NODIST -s ASSERTIONS=1 -s ALLOW_MEMORY_GROWTH=1 -s NODERAWFS=1 -s EXIT_RUNTIME=1 -s USE_PTHREADS -s PROXY_TO_PTHREAD"
CFLAGS_NODIST="$(CFLAGS_NODIST) -pthread" CFLAGS_NODIST="$CFLAGS_NODIST -pthread"
], ],
[WASI], [ [WASI], [
AC_DEFINE([_WASI_EMULATED_SIGNAL], [1], [Define to 1 if you want to emulate signals on WASI]) AC_DEFINE([_WASI_EMULATED_SIGNAL], [1], [Define to 1 if you want to emulate signals on WASI])
@ -6336,14 +6339,14 @@ AC_SUBST(TEST_MODULES)
dnl Modules that are not available on some platforms dnl Modules that are not available on some platforms
dnl AIX has shadow passwords, but access is not via getspent() dnl AIX has shadow passwords, but access is not via getspent()
dnl VxWorks does not provide crypt() function dnl VxWorks does not provide crypt() function
AS_CASE([$ac_sys_system], AS_CASE([$ac_sys_system/$ac_sys_emscripten_target],
[AIX], [py_stdlib_not_available="_scproxy spwd"], [AIX/*], [py_stdlib_not_available="_scproxy spwd"],
[VxWorks*], [py_stdlib_not_available="_scproxy _crypt termios grp"], [VxWorks*/*], [py_stdlib_not_available="_scproxy _crypt termios grp"],
[Darwin], [py_stdlib_not_available="ossaudiodev spwd"], [Darwin/*], [py_stdlib_not_available="ossaudiodev spwd"],
[CYGWIN*], [py_stdlib_not_available="_scproxy nis"], [CYGWIN*/*], [py_stdlib_not_available="_scproxy nis"],
[QNX*], [py_stdlib_not_available="_scproxy nis"], [QNX*/*], [py_stdlib_not_available="_scproxy nis"],
[FreeBSD*], [py_stdlib_not_available="_scproxy spwd"], [FreeBSD*/*], [py_stdlib_not_available="_scproxy spwd"],
[Emscripten], [ [Emscripten/browser], [
py_stdlib_not_available="m4_normalize([ py_stdlib_not_available="m4_normalize([
_ctypes _ctypes
_curses _curses
@ -6367,6 +6370,23 @@ AS_CASE([$ac_sys_system],
termios termios
])" ])"
], ],
dnl Some modules like _posixsubprocess do not work. We build them anyway
dnl so imports in tests do not fail.
[Emscripten/node], [
py_stdlib_not_available="m4_normalize([
_ctypes
_curses
_curses_panel
_dbm
_gdbm
_scproxy
_tkinter
nis
ossaudiodev
spwd
syslog
])"
],
[py_stdlib_not_available="_scproxy"] [py_stdlib_not_available="_scproxy"]
) )