From 94ebdcacef5af2da2bc537c1a3499f30729188cc Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Tue, 28 Nov 2023 15:17:27 +0100 Subject: [PATCH] Fix package name compatibility with wheel filename (#4005) Co-authored-by: Gyeongjae Choi --- .pre-commit-config.yaml | 2 +- packages/{pyb2d => b2d}/meta.yaml | 4 ++-- packages/{pyb2d => b2d}/test_pyb2d.py | 2 +- packages/fpcast-test/meta.yaml | 2 +- pyodide-build/pyodide_build/buildall.py | 11 ++++++++--- pyodide-build/pyodide_build/tests/test_buildall.py | 9 +++++++-- pyodide-build/pyproject.toml | 2 +- 7 files changed, 21 insertions(+), 11 deletions(-) rename packages/{pyb2d => b2d}/meta.yaml (90%) rename packages/{pyb2d => b2d}/test_pyb2d.py (88%) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c7b0437db..8d5be6743 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -85,7 +85,7 @@ repos: - resolvelib - rich - auditwheel_emscripten - - pyodide-lock==0.1.0a1 + - pyodide-lock==0.1.0a4 - micropip - id: mypy name: mypy-tests diff --git a/packages/pyb2d/meta.yaml b/packages/b2d/meta.yaml similarity index 90% rename from packages/pyb2d/meta.yaml rename to packages/b2d/meta.yaml index 1625d8c05..e435e5cde 100644 --- a/packages/pyb2d/meta.yaml +++ b/packages/b2d/meta.yaml @@ -1,6 +1,6 @@ package: - name: pyb2d - version: 0.7.2 + name: b2d + version: 0.7.4 top-level: - b2d diff --git a/packages/pyb2d/test_pyb2d.py b/packages/b2d/test_pyb2d.py similarity index 88% rename from packages/pyb2d/test_pyb2d.py rename to packages/b2d/test_pyb2d.py index 415d6940b..264cacd8a 100644 --- a/packages/pyb2d/test_pyb2d.py +++ b/packages/b2d/test_pyb2d.py @@ -4,7 +4,7 @@ import pytest @pytest.mark.driver_timeout(40) def test_pyb2d(selenium_standalone, request): selenium = selenium_standalone - selenium.load_package("pyb2d") + selenium.load_package("b2d") selenium.run( """ diff --git a/packages/fpcast-test/meta.yaml b/packages/fpcast-test/meta.yaml index b66862149..0f2c6a559 100644 --- a/packages/fpcast-test/meta.yaml +++ b/packages/fpcast-test/meta.yaml @@ -1,6 +1,6 @@ package: name: fpcast-test - version: "0.1" + version: "0.1.1" tag: - core - pyodide.test diff --git a/pyodide-build/pyodide_build/buildall.py b/pyodide-build/pyodide_build/buildall.py index 347ae3b3a..251280cf9 100755 --- a/pyodide-build/pyodide_build/buildall.py +++ b/pyodide-build/pyodide_build/buildall.py @@ -21,6 +21,7 @@ from typing import Any from pyodide_lock import PyodideLockSpec from pyodide_lock.spec import PackageSpec as PackageLockSpec +from pyodide_lock.utils import update_package_sha256 from rich.live import Live from rich.progress import BarColumn, Progress, TimeElapsedColumn from rich.spinner import Spinner @@ -647,7 +648,8 @@ def generate_packagedata( install_dir=pkg.install_dir, package_type=pkg.package_type, ) - pkg_entry.update_sha256(output_dir / pkg.file_name) + + update_package_sha256(pkg_entry, output_dir / pkg.file_name) pkg_type = pkg.package_type if pkg_type in ("shared_library", "cpython_module"): @@ -677,7 +679,8 @@ def generate_packagedata( file_name=pkg.unvendored_tests.name, install_dir=pkg.install_dir, ) - pkg_entry.update_sha256(output_dir / pkg.unvendored_tests.name) + + update_package_sha256(pkg_entry, output_dir / pkg.unvendored_tests.name) packages[name.lower() + "-tests"] = pkg_entry @@ -703,7 +706,9 @@ def generate_lockfile( "python": sys.version.partition(" ")[0], } packages = generate_packagedata(output_dir, pkg_map) - return PyodideLockSpec(info=info, packages=packages) + lock_spec = PyodideLockSpec(info=info, packages=packages) + lock_spec.check_wheel_filenames() + return lock_spec def copy_packages_to_dist_dir( diff --git a/pyodide-build/pyodide_build/tests/test_buildall.py b/pyodide-build/pyodide_build/tests/test_buildall.py index d22a411a9..dd61f23e2 100644 --- a/pyodide-build/pyodide_build/tests/test_buildall.py +++ b/pyodide-build/pyodide_build/tests/test_buildall.py @@ -53,7 +53,12 @@ def test_generate_lockfile(tmp_path): ) hashes = {} for pkg in pkg_map.values(): - pkg.file_name = pkg.file_name or pkg.name + ".whl" + if not pkg.file_name: + match pkg.package_type: + case "package": + pkg.file_name = pkg.name + f"-{pkg.version}-py3-none-any.whl" + case _: + pkg.file_name = pkg.name + ".zip" # Write dummy package file for SHA-256 hash verification with zipfile.ZipFile(tmp_path / pkg.file_name, "w") as whlzip: whlzip.writestr(pkg.file_name, data=pkg.file_name) @@ -76,7 +81,7 @@ def test_generate_lockfile(tmp_path): assert package_data.packages["pkg_1"] == PackageSpec( name="pkg_1", version="1.0.0", - file_name="pkg_1.whl", + file_name="pkg_1-1.0.0-py3-none-any.whl", depends=["pkg_1_1", "pkg_3", "libtest_shared"], imports=["pkg_1"], package_type="package", diff --git a/pyodide-build/pyproject.toml b/pyodide-build/pyproject.toml index aedb8c382..7e4e77adc 100644 --- a/pyodide-build/pyproject.toml +++ b/pyodide-build/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "types-requests", "typer", "auditwheel-emscripten~=0.0.9", - "pyodide-lock==0.1.0a1", + "pyodide-lock==0.1.0a4", "resolvelib", "rich", "loky",