pyodide/pyodide-build/pyodide_build/cli/xbuildenv.py

60 lines
1.8 KiB
Python

from pathlib import Path
import typer
from ..create_xbuildenv import create
from ..install_xbuildenv import install
from ..logger import logger
app = typer.Typer(hidden=True, no_args_is_help=True)
@app.callback()
def callback():
"""
Create or install cross build environment
"""
@app.command("install")
def _install(
path: Path = typer.Option(".pyodide-xbuildenv", help="path to xbuildenv directory"),
download: bool = typer.Option(False, help="download xbuildenv before installing"),
url: str = typer.Option(None, help="URL to download xbuildenv from"),
) -> None:
"""
Install xbuildenv.
The installed environment is the same as the one that would result from
`PYODIDE_PACKAGES='scipy' make` except that it is much faster.
The goal is to enable out-of-tree builds for binary packages that depend
on numpy or scipy.
Note: this is a private endpoint that should not be used outside of the Pyodide Makefile.
"""
install(path, download=download, url=url)
logger.info(f"xbuildenv installed at {path.resolve()}")
@app.command("create")
def _create(
path: Path = typer.Argument(
".pyodide-xbuildenv", help="path to xbuildenv directory"
),
root: Path = typer.Option(
None, help="path to pyodide root directory, if not given, will be inferred"
),
skip_missing_files: bool = typer.Option(
False,
help="skip if cross build files are missing instead of raising an error. This is useful for testing.",
),
) -> None:
"""
Create xbuildenv.
The create environment is then used to cross-compile packages out-of-tree.
Note: this is a private endpoint that should not be used outside of the Pyodide Makefile.
"""
create(path, pyodide_root=root, skip_missing_files=skip_missing_files)
logger.info(f"xbuildenv created at {path.resolve()}")