Skip to content

gh-146197: Add Emscripten to CI#146198

Merged
hugovk merged 10 commits intopython:mainfrom
hoodmane:emscripten-ci
Mar 23, 2026
Merged

gh-146197: Add Emscripten to CI#146198
hugovk merged 10 commits intopython:mainfrom
hoodmane:emscripten-ci

Conversation

@hoodmane
Copy link
Contributor

@hoodmane hoodmane commented Mar 20, 2026

Time:

  • 19m 28s without cache
  • 17m 8s with cache

By comparison, the build bot took 32m 8s with cache. I guess the github action runners are quite a bit faster than the instance running the build bot.

Copy link
Member

@webknjaz webknjaz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great at glance! Does it need an entire hour to complete though? If not, I'd make the timeout smaller.

@hoodmane
Copy link
Contributor Author

I just copied the timeout-minutes: 60 from reusable-wasi which doesn't need 60 minutes either.

@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 9da3ed3 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@hoodmane
Copy link
Contributor Author

So it took 19m 28s with no cache. But the cache is not working yet.

@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit d77a339 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
@hoodmane
Copy link
Contributor Author

!buildbot Emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 4276a51 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: Emscripten

The builders matched are:

  • WASM Emscripten PR

@hoodmane
Copy link
Contributor Author

!buildbot Emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 4276a51 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: Emscripten

The builders matched are:

  • WASM Emscripten PR

@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 1520ee8 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@hugovk
Copy link
Member

hugovk commented Mar 20, 2026

0:00:00 load avg: 0.10 Run 501 tests sequentially in a single process

Is it required to run sequentially?

Although it can help to have some sequential CI, and there's slower jobs than this one so it won't be the bottleneck.

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
@hoodmane
Copy link
Contributor Author

Is it required to run sequentially?

We don't have any threads or process support so I think so.

Copy link
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 9d545d1 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F146198%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@webknjaz
Copy link
Member

Alright, let's set the timeout to 25-30 minutes — this will help catch problems early. We just need to cover the cacheless run, plus have some margin for networking + minor flakiness. Otherwise, situations with something getting stuck for 40min+ would waste CI resources..

@hoodmane
Copy link
Contributor Author

hoodmane commented Mar 20, 2026

Well we have:

  1 job  with timeout-minutes: 30
  5 jobs with timeout-minutes: 5
  8 jobs with timeout-minutes: 10
 26 jobs with timeout-minutes: 60

Since most other CI jobs seem to have timeout-minutes: 60 I'd prefer to just keep the setting here as for the rest and then lowering these timeouts can be dealt with systematically as a separate issue.

Copy link
Contributor

@freakboy3742 freakboy3742 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes to the build script make sense to me; I'll leave it to others to approve the CI configs, but they broadly look good to me. I'll leave it to @hugovk or @webknjaz to make the final call on timeouts; I agree that 60 minutes seems excessive, but it's also consistently excessive, which is a separate problem.

Copy link
Member

@hugovk hugovk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Future PR to review all timeout-minutes welcome.

The main reason for the setting is to make sure if something gets stuck, it doesn't sit there for the full six hours.

They don't get stuck too often, and better to have more spare time available than have slow builds cancelled before they're finished.

@hugovk hugovk merged commit c94048b into python:main Mar 23, 2026
60 checks passed
@miss-islington-app
Copy link

Thanks @hoodmane for the PR, and @hugovk for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry, @hoodmane and @hugovk, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker c94048be025ad9d39cd9307db8f503039094df11 3.14

@hugovk
Copy link
Member

hugovk commented Mar 23, 2026

@hoodmane Please could you check the backport? Thanks!

@hoodmane hoodmane deleted the emscripten-ci branch March 23, 2026 14:35
hoodmane added a commit to hoodmane/cpython that referenced this pull request Mar 23, 2026
(cherry picked from commit c94048b)

Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
hoodmane added a commit to hoodmane/cpython that referenced this pull request Mar 23, 2026
(cherry picked from commit c94048b)

Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
@bedevere-app
Copy link

bedevere-app bot commented Mar 23, 2026

GH-146331 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label Mar 23, 2026
@hoodmane
Copy link
Contributor Author

@hugovk unfortunately the github action will be crashing on main because we were crossed up by a commit that broke Emscripten tests. Fixed by this:
#146330

@webknjaz
Copy link
Member

FTR it's usually easier to set the right timeout as a part of the initial integration since the following runs will make use of cache and somebody handling this in the future would need to have privileges to wipe all the cache records to see the slow durations for each job.

@hoodmane
Copy link
Contributor Author

Well that makes sense. Do you think 30 minutes makes sense here? That is about 50% higher than the worst run without cache. Or 40 minutes for 2x?

CuriousLearner added a commit to CuriousLearner/cpython that referenced this pull request Mar 23, 2026
…8577

* 'main' of github.com:python/cpython:
  pythongh-146197: Run -m test.pythoninfo on the Emscripten CI (python#146332)
  pythongh-146325: Use `test.support.requires_fork` in test_fastpath_cache_cleared_in_forked_child (python#146330)
  pythongh-146197: Add Emscripten to CI (python#146198)
  pythongh-143387: Raise an exception instead of returning None when metadata file is missing. (python#146234)
  pythongh-108907: ctypes: Document _type_ codes (pythonGH-145837)
  pythongh-146175: Soft-deprecate outdated macros; convert internal usage (pythonGH-146178)
  pythongh-146056: Rework ref counting in treebuilder_handle_end() (python#146167)
  Add a warning about untrusted input to `configparser` docs (python#146276)
  pythongh-145264: Do not ignore excess Base64 data after the first padded quad (pythonGH-145267)
  pythongh-146308: Fix error handling issues in _remote_debugging module (python#146309)
  pythongh-146192: Add base32 support to binascii (pythonGH-146193)
  pythongh-135953: Properly obtain main thread identifier in Gecko Collector (python#146045)
  pythongh-143414: Implement unique reference tracking for JIT, optimize unpacking of such tuples (pythonGH-144300)
  pythongh-146261: Fix bug in `_Py_uop_sym_set_func_version` (pythonGH-146291)
  pythongh-145144: Add more tests for UserList, UserDict, etc (pythonGH-145145)
  pythongh-143959: Fix test_datetime if _datetime is unavailable (pythonGH-145248)
  pythongh-146245: Fix reference and buffer leaks via audit hook in socket module (pythonGH-146248)
  pythongh-140049: Colorize exception notes in `traceback.py` (python#140051)
  Update docs for pythongh-146056 (pythonGH-146213)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants