feat: pyemscripten platform tag (PEP 783), 314.0a1, pyodide-eol flag, and maintenance updates (#2812)
* Use `pyodide config get emscripten_dir` * Update constraints * Updates for `pyemscripten` platform tag * Weird constraints stuff... * Revert "Weird constraints stuff..." This reverts commit 4bd785de872269c0b27362ee800f17288b2b4789. * Add some special constraints for pyodide * Wheel pyemscripten collision * Put delocate back in constraints (not needed tho) * Drop Pyodide 0.27.7 (cp312-pyodide_wasm32) * Add Pyodide 314.0.0a1 (cp314-pyodide_wasm32) * Delete no-longer-needed Pyodide 312 constraints * Update Pyodide 313 and 314 constraints * Add back prerelease stuff and update tests * Fix `test_pyodide_on_windows` * Update and fix tests some more * Also enable pyodide-prerelease in GHA sample build * Update tests yet again (`SINGLE_PYTHON_VERSION` changes) * Add a Pyodide-specific maintenance guide * Add suggestions from Hood and Gyeongjae Co-Authored-By: Hood Chatham <roberthoodchatham@gmail.com> Co-Authored-By: Gyeongjae Choi <def6488@gmail.com> * Add "Last updated: May 2026" to Pyodide document * Add a Pyodide EOL filter * Fix typo * Update maintenance docs about EoL Pyodide * Add Pyodide 312 constraints back * Update Pyodide 313 and 314 constraints * Remove "experimental" note about Pyodide * Remove another experimental Pyodide sentence * Add docs about the `pyodide-eol` enable option --------- Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com> Co-authored-by: Gyeongjae Choi <def6488@gmail.com> Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
This commit is contained in:
co-authored by
Hood Chatham
Gyeongjae Choi
Henry Schreiner
parent
542335fb4a
commit
d2c0e59833
@@ -94,20 +94,19 @@ def ensure_node(major_version: str) -> Path:
|
||||
return path
|
||||
|
||||
|
||||
def install_emscripten(
|
||||
env: dict[str, str], version: str, xbuildenv_cache_path: Path, pyodide_version: str
|
||||
) -> Path:
|
||||
def install_emscripten(env: dict[str, str], version: str, xbuildenv_cache_path: Path) -> Path:
|
||||
"""Install Emscripten via pyodide-build, which also applies Pyodide-specific patches."""
|
||||
emcc_path = (
|
||||
xbuildenv_cache_path / pyodide_version / "emsdk" / "upstream" / "emscripten" / "emcc"
|
||||
emscripten_dir = Path(
|
||||
call("pyodide", "config", "get", "emscripten_dir", env=env, capture_stdout=True).strip()
|
||||
)
|
||||
with FileLock(CIBW_CACHE_PATH / "emscripten.lock"):
|
||||
if emcc_path.exists():
|
||||
return emcc_path
|
||||
if emscripten_dir.exists():
|
||||
return emscripten_dir
|
||||
call(
|
||||
"pyodide",
|
||||
"xbuildenv",
|
||||
"install-emscripten",
|
||||
"--force",
|
||||
"--version",
|
||||
version,
|
||||
"--path",
|
||||
@@ -115,8 +114,8 @@ def install_emscripten(
|
||||
env=env,
|
||||
cwd=CIBW_CACHE_PATH,
|
||||
)
|
||||
assert emcc_path.exists()
|
||||
return emcc_path
|
||||
assert emscripten_dir.exists()
|
||||
return emscripten_dir
|
||||
|
||||
|
||||
def get_all_xbuildenv_version_info(env: dict[str, str]) -> list[PyodideXBuildEnvInfo]:
|
||||
@@ -315,9 +314,9 @@ def setup_python(
|
||||
log.step(
|
||||
f"Installing Emscripten {emscripten_version} and applying Pyodide-specific patches ..."
|
||||
)
|
||||
emcc_path = install_emscripten(env, emscripten_version, xbuildenv_cache_path, pyodide_version)
|
||||
emscripten_dir = install_emscripten(env, emscripten_version, xbuildenv_cache_path)
|
||||
|
||||
env["PATH"] = os.pathsep.join([str(emcc_path.parent), env["PATH"]])
|
||||
env["PATH"] = os.pathsep.join([str(emscripten_dir), env["PATH"]])
|
||||
|
||||
return env
|
||||
|
||||
|
||||
Reference in New Issue
Block a user