gh-95853: Address wasm build and test issues (GH-95985)

This commit is contained in:
Christian Heimes 2022-08-15 07:41:10 +02:00 committed by GitHub
parent e8259e047c
commit 4a7f5a55dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 6 deletions

View File

@ -37,7 +37,7 @@ from test.support import (run_unittest, run_doctest, is_resource_enabled,
requires_legacy_unicode_capi, check_sanitizer)
from test.support import (TestFailed,
run_with_locale, cpython_only,
darwin_malloc_err_warning)
darwin_malloc_err_warning, is_emscripten)
from test.support.import_helper import import_fresh_module
from test.support import threading_helper
from test.support import warnings_helper
@ -5605,6 +5605,7 @@ class CWhitebox(unittest.TestCase):
# Issue 41540:
@unittest.skipIf(sys.platform.startswith("aix"),
"AIX: default ulimit: test is flaky because of extreme over-allocation")
@unittest.skipIf(is_emscripten, "Test is unstable on Emscripten")
@unittest.skipIf(check_sanitizer(address=True, memory=True),
"ASAN/MSAN sanitizer defaults to crashing "
"instead of returning NULL for malloc failure.")

View File

@ -775,7 +775,7 @@ readinst(char *buf, int buf_size, PyObject *meth)
Py_ssize_t len;
const char *ptr;
str = PyObject_CallFunction(meth, "n", buf_size);
str = PyObject_CallFunction(meth, "i", buf_size);
if (str == NULL)
goto error;

View File

@ -191,7 +191,11 @@ EMSCRIPTEN = Platform(
config_site=WASMTOOLS / "config.site-wasm32-emscripten",
configure_wrapper=EMSCRIPTEN_ROOT / "emconfigure",
make_wrapper=EMSCRIPTEN_ROOT / "emmake",
environ={"EM_COMPILER_WRAPPER": "ccache"} if HAS_CCACHE else {},
environ={
# workaround for https://github.com/emscripten-core/emscripten/issues/17635
"TZ": "UTC",
"EM_COMPILER_WRAPPER": "ccache" if HAS_CCACHE else None,
},
check=_check_emscripten,
)
@ -352,12 +356,15 @@ class BuildProfile:
env.setdefault("MAKEFLAGS", f"-j{os.cpu_count()}")
platenv = self.host.platform.getenv(self)
for key, value in platenv.items():
if isinstance(value, str):
value = value.format(
if value is None:
env.pop(key, None)
elif isinstance(value, str):
env[key] = value.format(
relbuilddir=self.builddir.relative_to(SRCDIR),
srcdir=SRCDIR,
)
env[key] = value
else:
env[key] = value
return env
def _run_cmd(self, cmd: Iterable[str], args: Iterable[str]):