diff --git a/.github/workflows/release-python-runtime.yml b/.github/workflows/release-python-runtime.yml index ed0e07fc46f..b41642f6c54 100644 --- a/.github/workflows/release-python-runtime.yml +++ b/.github/workflows/release-python-runtime.yml @@ -1,6 +1,13 @@ name: Build Python Runtime -on: workflow_dispatch +on: + workflow_dispatch: + inputs: + update-released: + description: 'Update already released versions?' + required: false + default: false + type: boolean jobs: build: @@ -32,7 +39,7 @@ jobs: # boto3 v1.36.0 fails with: # NotImplemented error occurred in CreateMultipartUpload operation: Header 'x-amz-checksum-algorithm' with value 'CRC32' not implemented pip install 'boto3<1.36.0' requests - python3 src/pyodide/upload_bundles.py + python3 src/pyodide/upload_bundles.py ${{ inputs.update-released == true && '--update-released' || '' }} - name: Check for open PR and commit changes env: diff --git a/build/python_metadata.bzl b/build/python_metadata.bzl index 82b812a3775..c2ea674ff36 100644 --- a/build/python_metadata.bzl +++ b/build/python_metadata.bzl @@ -97,6 +97,7 @@ def _make_bundle_version_info(versions): BUNDLE_VERSION_INFO = _make_bundle_version_info([ { "name": "0.26.0a2", + "released": True, "pyodide_version": "0.26.0a2", "pyodide_date": "2024-03-01", "packages": PACKAGES_20240829_4, diff --git a/src/pyodide/upload_bundles.py b/src/pyodide/upload_bundles.py index 5908c91643f..532b76b8702 100644 --- a/src/pyodide/upload_bundles.py +++ b/src/pyodide/upload_bundles.py @@ -1,3 +1,4 @@ +import argparse import json import re import subprocess @@ -56,7 +57,7 @@ def bundle_url(**kwds): def get_backport(ver): info = bundle_version_info()[ver] backport = int(info["backport"]) - for b in range(backport + 1, backport + 10): + for b in range(backport + 1, backport + 20): info["backport"] = b url = bundle_url(**info) res = requests.head(url) @@ -116,11 +117,13 @@ def print_info(info: BundleInfo) -> None: print() -def make_bundles() -> list[BundleInfo]: +def make_bundles(update_released: bool) -> list[BundleInfo]: result = [] for ver, info in bundle_version_info().items(): if ver.startswith("dev"): continue + if not update_released and info.get("released", False): + continue path = Path(get_pyodide_bin_path(ver)).resolve() b = get_backport(ver) info["backport"] = b @@ -151,7 +154,16 @@ def upload_bundles(bundles: list[BundleInfo]): def main(): - bundles = make_bundles() + parser = argparse.ArgumentParser( + description="Upload Pyodide bundles and update metadata" + ) + parser.add_argument( + "--update-released", + action="store_true", + help="Update already released versions?", + ) + args = parser.parse_args() + bundles = make_bundles(args.update_released) for bundle in bundles: print_info(bundle) update_python_metadata_bzl(bundles)