From cdb457bf5b666da26729d3ca5bf20b7f2357613d Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Sun, 10 Jul 2022 10:58:39 +0200 Subject: [PATCH] Add xbuildenv to github releases (#2850) This adds a step that generates an xbuildenv to the circleci CI and deploys it to github releases when we make a release. I also updated the url in download_xbuildenv to point to github releases. --- .circleci/config.yml | 40 +++++++++++++++++-- pyodide-build/pyodide_build/__init__.py | 1 + .../pyodide_build/install_xbuildenv.py | 7 ++-- .../pyodide_build/out_of_tree/__main__.py | 4 +- pyodide-build/setup.cfg | 2 +- tools/bump_version.py | 4 +- 6 files changed, 46 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5071e07fd..65dea8290 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -201,6 +201,24 @@ jobs: paths: - . + create-xbuild-env: + <<: *defaults + steps: + - checkout + + - attach_workspace: + at: . + + - run: + name: create xbuild environment + command: | + PYTHONPATH=pyodide-build python -m pyodide_build create_xbuildenv + + - persist_to_workspace: + root: . + paths: + - . + test-main: parameters: test-params: @@ -338,10 +356,16 @@ jobs: - run: name: Deploy Github Releases command: | - cp -r dist /tmp/pyodide - cd /tmp/ - tar cjf pyodide-build-${CIRCLE_TAG}.tar.bz2 pyodide/ - ghr -t "${GITHUB_TOKEN}" -u "${CIRCLE_PROJECT_USERNAME}" -r "${CIRCLE_PROJECT_REPONAME}" -c "${CIRCLE_SHA1}" -delete "${CIRCLE_TAG}" ./pyodide-build-${CIRCLE_TAG}.tar.bz2 + mkdir -p /tmp/ghr/dist + cp -r dist /tmp/ghr/pyodide + cp -r xbuildenv /tmp/ghr/xbuildenv + cd /tmp/ghr + tar cjf dist/pyodide-build-${CIRCLE_TAG}.tar.bz2 pyodide/ + tar cjf dist/xbuildenv-${CIRCLE_TAG}.tar.bz2 xbuildenv/ + ghr -t "${GITHUB_TOKEN}" -u "${CIRCLE_PROJECT_USERNAME}" \ + -r "${CIRCLE_PROJECT_REPONAME}" -c "${CIRCLE_SHA1}" \ + -delete "${CIRCLE_TAG}" \ + dist - run: name: Deploy to npm @@ -602,6 +626,13 @@ workflows: tags: only: /.*/ + - create-xbuild-env: + requires: + - build-packages + filters: + tags: + only: /.*/ + - build-pyodide-debug: requires: - build-packages @@ -615,6 +646,7 @@ workflows: - test-core-firefox - test-packages-firefox - build-pyodide-debug + - create-xbuild-env filters: branches: ignore: /.*/ diff --git a/pyodide-build/pyodide_build/__init__.py b/pyodide-build/pyodide_build/__init__.py index e69de29bb..347d42340 100644 --- a/pyodide-build/pyodide_build/__init__.py +++ b/pyodide-build/pyodide_build/__init__.py @@ -0,0 +1 @@ +__version__ = "0.21.0.dev0" diff --git a/pyodide-build/pyodide_build/install_xbuildenv.py b/pyodide-build/pyodide_build/install_xbuildenv.py index aa216ae9f..9de4126e4 100644 --- a/pyodide-build/pyodide_build/install_xbuildenv.py +++ b/pyodide-build/pyodide_build/install_xbuildenv.py @@ -28,7 +28,7 @@ def download_xbuild_env(version: str, xbuildenv_path: Path) -> None: rmtree(xbuildenv_path, ignore_errors=True) with NamedTemporaryFile(suffix=".tar") as f: urlretrieve( - f"http://pyodide-cache.s3-website-us-east-1.amazonaws.com/xbuildenv/{version}.tar", + f"https://github.com/pyodide/pyodide/releases/download/{version}/xbuildenv-{version}.tar.bz2", f.name, ) unpack_archive(f.name, xbuildenv_path) @@ -61,7 +61,8 @@ def install_xbuild_env(xbuildenv_path: Path) -> None: def main(args: argparse.Namespace) -> None: xbuildenv_path = Path(args.xbuild_env[0]) - version = "2" + from . import __version__ + if args.download: - download_xbuild_env(version, xbuildenv_path) + download_xbuild_env(__version__, xbuildenv_path) install_xbuild_env(xbuildenv_path) diff --git a/pyodide-build/pyodide_build/out_of_tree/__main__.py b/pyodide-build/pyodide_build/out_of_tree/__main__.py index 325a7a56f..93d288688 100644 --- a/pyodide-build/pyodide_build/out_of_tree/__main__.py +++ b/pyodide-build/pyodide_build/out_of_tree/__main__.py @@ -8,10 +8,10 @@ from . import build def ensure_env_installed(env: Path) -> None: if env.exists(): return + from .. import __version__ from ..install_xbuildenv import download_xbuild_env, install_xbuild_env - version = "2" - download_xbuild_env(version, env) + download_xbuild_env(__version__, env) install_xbuild_env(env) diff --git a/pyodide-build/setup.cfg b/pyodide-build/setup.cfg index b9b618893..19098e04b 100644 --- a/pyodide-build/setup.cfg +++ b/pyodide-build/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = pyodide-build -version = 0.21.0.dev0 +version = attr: pyodide_build.__version__ author = Pyodide developers description = "Tools for building Pyodide" long_description = file: README.md diff --git a/tools/bump_version.py b/tools/bump_version.py index 424217987..a5531dc02 100755 --- a/tools/bump_version.py +++ b/tools/bump_version.py @@ -45,8 +45,8 @@ PYTHON_TARGETS = [ prerelease=True, ), Target( - ROOT / "pyodide-build/setup.cfg", - build_version_pattern("version = {python_version}"), + ROOT / "pyodide-build/pyodide_build/__init__.py", + pattern=build_version_pattern('__version__ = "{python_version}"'), prerelease=True, ), Target(