diff --git a/CHANGELOG.md b/CHANGELOG.md index e4b4bbf..eef708f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Fixed + + - Fix a bug that prevented some wasm32 wheel to be recognized as compatible with pyodide + [#159](https://github.com/pyodide/micropip/pull/159) + ## [0.7.1] - 2024/11/11 ### Fixed diff --git a/micropip/_utils.py b/micropip/_utils.py index 1167a01..70d4724 100644 --- a/micropip/_utils.py +++ b/micropip/_utils.py @@ -2,7 +2,7 @@ import json from importlib.metadata import Distribution from pathlib import Path -from sysconfig import get_platform +from sysconfig import get_config_var, get_platform from packaging.requirements import Requirement from packaging.tags import Tag @@ -62,8 +62,15 @@ def get_files_in_distribution(dist: Distribution) -> set[Path]: @functools.cache -def sys_tags() -> list[Tag]: - return list(sys_tags_orig()) +def sys_tags() -> tuple[Tag, ...]: + new_tags = [] + abi_version = get_config_var("PYODIDE_ABI_VERSION") + pyodide_platform_tag = f"pyodide_{abi_version}_wasm32" + for tag in sys_tags_orig(): + if "emscripten" in tag.platform: + new_tags.append(Tag(tag.interpreter, tag.abi, pyodide_platform_tag)) + new_tags.append(tag) + return tuple(new_tags) @functools.cache diff --git a/micropip/package_index.py b/micropip/package_index.py index 526db89..3e07d8c 100644 --- a/micropip/package_index.py +++ b/micropip/package_index.py @@ -214,6 +214,9 @@ def _fast_check_incompatibility(filename: str) -> bool: if not filename.endswith(".whl"): return False + if filename.endswith("wasm32.whl") and sys.platform == "emscripten": + return True + if sys.platform not in filename and not filename.endswith("-none-any.whl"): return False