mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
Basic support for pyrepl in Emscripten. Limitations:
* requires JSPI
* no signal handling implemented
As followup work, it would be nice to implement a webworker variant
for when JSPI is not available and proper signal handling.
Because it requires JSPI, it doesn't work in Safari. Firefox requires
setting an experimental flag. All the Chromiums have full support since
May. Until we make it work without JSPI, let's keep the original web_example
around.
(cherry picked from commit c933a6bb32)
Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Éric <merwok@netwok.org>
103 lines
2.8 KiB
Text
103 lines
2.8 KiB
Text
# config.site override for cross compiling to wasm32-emscripten platform
|
|
#
|
|
# CONFIG_SITE=Tools/wasm/emscripten/config.site-wasm32-emscripten \
|
|
# emconfigure ./configure --host=wasm32-unknown-emscripten --build=...
|
|
#
|
|
# Written by Christian Heimes <christian@python.org>
|
|
# Partly based on pyodide's pyconfig.undefs.h file.
|
|
#
|
|
|
|
# cannot be detected in cross builds
|
|
ac_cv_buggy_getaddrinfo=no
|
|
|
|
# Emscripten has no /dev/pt*
|
|
ac_cv_file__dev_ptmx=no
|
|
ac_cv_file__dev_ptc=no
|
|
|
|
# new undefined symbols / unsupported features
|
|
ac_cv_func_posix_spawn=no
|
|
ac_cv_func_posix_spawnp=no
|
|
ac_cv_func_eventfd=no
|
|
ac_cv_func_memfd_create=no
|
|
ac_cv_func_prlimit=no
|
|
|
|
# unsupported syscall, https://github.com/emscripten-core/emscripten/issues/13393
|
|
ac_cv_func_shutdown=no
|
|
|
|
# The rest is based on pyodide
|
|
# https://github.com/pyodide/pyodide/blob/main/cpython/pyconfig.undefs.h
|
|
|
|
ac_cv_func_epoll_create=no
|
|
ac_cv_func_epoll_create1=no
|
|
ac_cv_header_linux_vm_sockets_h=no
|
|
ac_cv_func_socketpair=no
|
|
ac_cv_func_sigaction=no
|
|
|
|
# symlinkat is implemented, but fails
|
|
ac_cv_func_symlinkat=no
|
|
|
|
# lchmod/lchown are implemented, but fail with ENOTSUP.
|
|
ac_cv_func_lchmod=no
|
|
ac_cv_func_lchown=no
|
|
|
|
# geteuid / getegid are stubs and always return 0 (root). The stub breaks
|
|
# code that assume effective user root has special permissions.
|
|
ac_cv_func_geteuid=no
|
|
ac_cv_func_getegid=no
|
|
ac_cv_func_seteuid=no
|
|
ac_cv_func_setegid=no
|
|
ac_cv_func_getresuid=no
|
|
ac_cv_func_getresgid=no
|
|
ac_cv_func_setresuid=no
|
|
ac_cv_func_setresgid=no
|
|
|
|
# Syscalls not implemented in emscripten
|
|
# [Errno 52] Function not implemented
|
|
ac_cv_func_preadv2=no
|
|
ac_cv_func_preadv=no
|
|
ac_cv_func_pwritev2=no
|
|
ac_cv_func_pwritev=no
|
|
ac_cv_func_pipe2=no
|
|
ac_cv_func_nice=no
|
|
ac_cv_func_setpriority=no
|
|
ac_cv_func_setitimer=no
|
|
# unsupported syscall: __syscall_prlimit64
|
|
ac_cv_func_prlimit=no
|
|
# unsupported syscall: __syscall_getrusage
|
|
ac_cv_func_getrusage=no
|
|
ac_cv_func_posix_fallocate=no
|
|
|
|
# Syscalls that resulted in a segfault
|
|
ac_cv_func_utimensat=no
|
|
|
|
# sockets are supported, but only AF_INET / AF_INET6 in non-blocking mode.
|
|
# Disable AF_UNIX and AF_PACKET support, see socketmodule.h.
|
|
ac_cv_header_sys_un_h=no
|
|
ac_cv_header_netpacket_packet_h=no
|
|
|
|
# aborts with bad ioctl
|
|
ac_cv_func_openpty=no
|
|
ac_cv_func_forkpty=no
|
|
|
|
# mkfifo and mknod are broken, create regular file
|
|
ac_cv_func_mkfifo=no
|
|
ac_cv_func_mkfifoat=no
|
|
ac_cv_func_mknod=no
|
|
ac_cv_func_mknodat=no
|
|
|
|
# always fails with permission or not implemented error
|
|
ac_cv_func_getgroups=no
|
|
ac_cv_func_setgroups=no
|
|
ac_cv_func_setresuid=no
|
|
ac_cv_func_setresgid=no
|
|
|
|
# Emscripten does not support hard links, always fails with errno 34
|
|
# "Too many links". See emscripten_syscall_stubs.c
|
|
ac_cv_func_link=no
|
|
ac_cv_func_linkat=no
|
|
|
|
# Emscripten's faccessat does not accept AT_* flags.
|
|
ac_cv_func_faccessat=no
|
|
|
|
# alarm signal is not delivered, may need a callback into the event loop?
|
|
ac_cv_func_alarm=no
|