Improvements to the Emscripten buildbot#687
Conversation
* Use the build script from its new `Platform/emscripten/__main__.py` location * Use `python3 Platform/emscripten run` to avoid hard coding build output path * Use new `EMSDK_CACHE` environment variable to allow build script to manage Emscripten installations * Build libmpdec * Cache libffi and libmpdec * Allow build script to manage node installations python/cpython#146156 has to land first
96780ff to
d8ed65b
Compare
It landed, but its 3.14 backport didn't land yet: python/cpython#146159 |
|
I guess we'll also want to merge and backport python/cpython#146158 and python/cpython#146160 first so we can move more configuration from here into the cpython repo. |
freakboy3742
left a comment
There was a problem hiding this comment.
One typo; but otherwise this looks good to me. All the upstream PRs have landed, including 3.14 backports; and I've manually tested the commands on the buildbot.
Ok. I merged the PR (the new config will be deployed in a few minutes). Let's see how it goes :-) |
|
Thanks @vstinner! |
|
Well it is not quite right: |
|
Looks working now: |
|
Since this PR was merged, the Emscripten buildbot has posted some comments on GitHub in which the "traceback logs" appears to be the entire stderr of the build and test process:
These were brought to my attention because I have a filter set up for the word "Android", which shows up in the log because the Android test has been (correctly) skipped. I haven't had this happen with other buildbots. Separately, the logs are a bit mangled both in the GitHub comment and the Buildbot web interface because they include ANSI color codes. The other buildbots don't do this either. |
|
Seems likely to be because the interpreter crashed? Presumably the bot looked for the pattern that it expects failing unittests to generate and didn't find it so instead it included all of stdout. |
|
Yes, it looks like you're right, except it's stderr only. Maybe skip messages shouldn't be printed on stderr, but that's a separate discussion. |
|
Even in the buildbot web interface, in this run the color codes stopped working half way through for some reason (the red is the web interface's default rendering of stderr):
|
|
That is odd. Do you have any idea how the colors are supposed to get disabled? None of the other build bots seem to explicitly disable them. I guess I should look at the unittest code that decides whether color is on or off. |
can_colorize
if not sys.flags.ignore_environment:
if _safe_getenv("PYTHON_COLORS") == "0":
return False
if _safe_getenv("PYTHON_COLORS") == "1":
return True
if _safe_getenv("NO_COLOR"):
return False
if _safe_getenv("FORCE_COLOR"):
return True
if _safe_getenv("TERM") == "dumb":
return False
if not hasattr(file, "fileno"):
return False
try:
return os.isatty(file.fileno())
except OSError:
return hasattr(file, "isatty") and file.isatty()
``
</p>
</details> |
|
Well you can see that none of the environment variables are set from the listing, and it doesn't seem that an argument is passed to |
|
Indeed in an ubuntu buildbot |
|
Setting a |
|
Yeah though I'd rather fix the problem with streams. Pyodide handles this correctly, so it's just a matter of pulling in the right part of https://github.com/pyodide/pyodide/blob/main/src/js/streams.ts Some day this stuff should go into Emscripten, but I've never gotten around to it. |



Platform/emscripten/__main__.pylocationpython3 Platform/emscripten runto avoid hard coding build output pathEMSDK_CACHEenvironment variable to allow build script to manageEmscripten installations
python/cpython#146156 has to land first