From d81d57e9598dea741e049f3876ccd87072a38906 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Fri, 13 May 2022 08:36:01 +0200 Subject: [PATCH] gh-90473: Increase stack size, disable obmalloc on WASI (GH-92732) --- Lib/test/support/os_helper.py | 2 +- Lib/test/test_builtin.py | 5 +++- ...2-05-12-10-19-15.gh-issue-90473.-syvqK.rst | 1 + configure | 25 ++++++++++++++++--- configure.ac | 21 +++++++++++++--- 5 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py index eee37ef0d5a..ed4ec15c7cb 100644 --- a/Lib/test/support/os_helper.py +++ b/Lib/test/support/os_helper.py @@ -50,7 +50,7 @@ if os.name == 'nt': % (TESTFN_UNENCODABLE, sys.getfilesystemencoding())) TESTFN_UNENCODABLE = None # macOS and Emscripten deny unencodable filenames (invalid utf-8) -elif sys.platform not in {'darwin', 'emscripten'}: +elif sys.platform not in {'darwin', 'emscripten', 'wasi'}: try: # ascii and utf-8 cannot encode the byte 0xff b'\xff'.decode(sys.getfilesystemencoding()) diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py index ba7a7e20d7d..efa9459a586 100644 --- a/Lib/test/test_builtin.py +++ b/Lib/test/test_builtin.py @@ -393,7 +393,10 @@ class BuiltinTest(unittest.TestCase): msg=f"source={source} mode={mode}") - @unittest.skipIf(support.is_emscripten, "socket.accept is broken") + @unittest.skipIf( + support.is_emscripten or support.is_wasi, + "socket.accept is broken" + ) def test_compile_top_level_await(self): """Test whether code some top level await can be compiled. diff --git a/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst b/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst new file mode 100644 index 00000000000..29ce3de1f21 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst @@ -0,0 +1 @@ +Disable pymalloc and increase stack size on ``wasm32-wasi``. diff --git a/configure b/configure index 010ad320582..02810880e91 100755 --- a/configure +++ b/configure @@ -7922,6 +7922,8 @@ $as_echo "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h + as_fn_append LDFLAGS_NODIST " -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760" + ;; #( *) : ;; @@ -14231,19 +14233,26 @@ int domain = AF_INET6; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } ipv6=yes else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } ipv6=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +case $ac_sys_system in #( + WASI) : + ipv6=no + ;; #( + *) : + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5 +$as_echo "$ipv6" >&6; } + if test "$ipv6" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5 $as_echo_n "checking if RFC2553 API is available... " >&6; } @@ -14557,6 +14566,8 @@ then case $ac_sys_system in #( Emscripten) : with_pymalloc="no" ;; #( + WASI) : + with_pymalloc="no" ;; #( *) : with_pymalloc="yes" ;; @@ -22597,6 +22608,12 @@ case $ac_sys_system in #( ;; #( WASI/*) : + + + py_cv_module__ctypes_test=n/a + py_cv_module_=n/a + + ;; #( *) : ;; diff --git a/configure.ac b/configure.ac index 65b96976031..eab326232b1 100644 --- a/configure.ac +++ b/configure.ac @@ -1994,6 +1994,10 @@ AS_CASE([$ac_sys_system], AC_DEFINE([_WASI_EMULATED_PROCESS_CLOCKS], [1], [Define to 1 if you want to emulate process clocks on WASI]) LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks" echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h + + dnl increase initial memory and stack size, move stack first + dnl https://github.com/WebAssembly/wasi-libc/issues/233 + AS_VAR_APPEND([LDFLAGS_NODIST], [" -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760"]) ] ) @@ -4046,13 +4050,17 @@ dnl the check does not work on cross compilation case... #include #include ]], [[int domain = AF_INET6;]])],[ - AC_MSG_RESULT(yes) ipv6=yes ],[ - AC_MSG_RESULT(no) ipv6=no ]) +AS_CASE([$ac_sys_system], + [WASI], [ipv6=no] +) + +AC_MSG_RESULT([$ipv6]) + if test "$ipv6" = "yes"; then AC_MSG_CHECKING(if RFC2553 API is available) AC_COMPILE_IFELSE([ @@ -4232,9 +4240,10 @@ AC_ARG_WITH(pymalloc, if test -z "$with_pymalloc" then - dnl default to yes except for wasm32-emscripten + dnl default to yes except for wasm32-emscripten and wasm32-wasi. AS_CASE([$ac_sys_system], [Emscripten], [with_pymalloc="no"], + [WASI], [with_pymalloc="no"], [with_pymalloc="yes"] ) fi @@ -6680,7 +6689,11 @@ AS_CASE([$ac_sys_system], ) ], [Emscripten/node*], [], - [WASI/*], [] + [WASI/*], [ + PY_STDLIB_MOD_SET_NA( + [_ctypes_test], + ) + ] ) ], [PY_STDLIB_MOD_SET_NA([_scproxy])]