From 35439da1cdc09fe47238ec82bd57489a73217d64 Mon Sep 17 00:00:00 2001 From: juj Date: Thu, 17 Oct 2024 19:47:19 +0300 Subject: [PATCH] Include psutil module in the python build to enable emrun to track when browser process finishes. (#1464) Without this, emrun web server will be left running after user code quits the page abnormally without calling `exit()` (e.g. due to a page awwsnap crash), and there are multiple processes in use by the browser. emrun has a graceful fallback to weaker browser process detection when psutil is not available, so this is easy to miss if not running emrun with --verbose: https://github.com/emscripten-core/emscripten/blob/814ec05f74eac9025c0442f51fa09bd8d02f8b43/emrun.py#L330-L339 --- scripts/update_python.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/update_python.py b/scripts/update_python.py index b39597d..a5848ea 100755 --- a/scripts/update_python.py +++ b/scripts/update_python.py @@ -148,13 +148,17 @@ def build_python(): install_dir = os.path.join(src_dir, 'install') - # Install requests module. This is needed in particualr on macOS to ensure + # Install requests module. This is needed in particular on macOS to ensure # SSL certificates are available (certifi in installed and used by requests). pybin = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'python3') pip = os.path.join(src_dir, 'install', 'usr', 'local', 'bin', 'pip3') check_call([pybin, '-m', 'ensurepip', '--upgrade']) check_call([pybin, pip, 'install', 'requests']) + # Install psutil module. This is needed by emrun to track when browser + # process quits. + check_call([pybin, pip, 'install', 'psutil']) + dirname = 'python-%s-%s' % (version, revision) if os.path.isdir(dirname): print('Erasing old build directory ' + dirname)