pyodide/pyodide-build/pyodide_build/install_xbuildenv.py

42 lines
1.4 KiB
Python

import argparse
import shutil
import subprocess
from pathlib import Path
from .common import get_make_flag, get_pyodide_root
def make_parser(parser: argparse.ArgumentParser) -> argparse.ArgumentParser:
parser.description = (
"Install xbuild env.\n\n"
"The installed environment is the same as the one that would result from\n"
"`PYODIDE_PACKAGES='scipy' make` except that it is much faster.\n"
"The goal is to enable out-of-tree builds for binary packages that depend\n"
"on numpy or scipy.\n"
"Note: this is a private endpoint that should not be used outside of the Pyodide Makefile."
)
return parser
def main(args):
pyodide_root = get_pyodide_root()
host_site_packages = Path(get_make_flag("HOSTSITEPACKAGES"))
xbuildenv_path = pyodide_root / "xbuildenv"
include_path = Path(get_make_flag("PYTHONINCLUDE"))
include_path.mkdir(exist_ok=True, parents=True)
shutil.copytree(xbuildenv_path / "python-include", include_path, dirs_exist_ok=True)
host_site_packages.mkdir(exist_ok=True, parents=True)
subprocess.run(
[
"pip",
"install",
"-t",
host_site_packages,
"-r",
xbuildenv_path / "requirements.txt",
]
)
shutil.copytree(
xbuildenv_path / "site-packages", host_site_packages, dirs_exist_ok=True
)