Skip to content

Commit

Permalink
Merge branch 'main' into rust-wasm-eh
Browse files Browse the repository at this point in the history
  • Loading branch information
hoodmane committed Jan 15, 2025
2 parents 30517bd + 7ebf9a2 commit 87813c5
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
7 changes: 7 additions & 0 deletions pyodide_build/buildall.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,13 @@
from pyodide_build.build_env import BuildArgs, get_pyodide_root
from pyodide_build.buildpkg import needs_rebuild
from pyodide_build.common import (
<<<<<<< HEAD
download_and_unpack_archive,
exit_with_stdio,
||||||| 632c8e6
=======
exit_with_stdio,
>>>>>>> main
extract_wheel_metadata_file,
find_matching_wheels,
find_missing_executables,
Expand Down Expand Up @@ -160,6 +165,8 @@ def build(self, build_args: BuildArgs, build_dir: Path) -> None:
# been updated and should be rebuilt even though its own
# files haven't been updated.
"--force-rebuild",
# We already did the rust setup in buildall
"--skip-rust-setup",
],
check=False,
stdout=subprocess.DEVNULL,
Expand Down
20 changes: 19 additions & 1 deletion pyodide_build/cli/build_recipes.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import typer

from pyodide_build import build_env, buildall
from pyodide_build import build_env, buildall, recipe
from pyodide_build.build_env import BuildArgs, init_environment
from pyodide_build.buildpkg import RecipeBuilder
from pyodide_build.common import get_num_cores
Expand All @@ -17,6 +17,7 @@ class Args:
build_dir: Path
install_dir: Path
build_args: BuildArgs
skip_rust_setup: bool
force_rebuild: bool
n_jobs: int

Expand All @@ -28,6 +29,7 @@ def __init__(
install_dir: Path | str | None = None,
build_args: BuildArgs,
force_rebuild: bool,
skip_rust_setup: bool = False,
n_jobs: int | None = None,
):
cwd = Path.cwd()
Expand All @@ -41,6 +43,7 @@ def __init__(
)
self.build_args = build_args
self.force_rebuild = force_rebuild
self.skip_rust_setup = skip_rust_setup
self.n_jobs = n_jobs or get_num_cores()
if not self.recipe_dir.is_dir():
raise FileNotFoundError(f"Recipe directory {self.recipe_dir} not found")
Expand Down Expand Up @@ -93,6 +96,11 @@ def build_recipes_no_deps(
"--continue",
help="Continue a build from the middle. For debugging. Implies '--force-rebuild'",
),
skip_rust_setup: bool = typer.Option(
False,
"--skip-rust-setup",
help="Don't setup rust environment when building a rust package",
),
) -> None:
"""Build packages using yaml recipes but don't try to resolve dependencies"""
init_environment()
Expand All @@ -113,15 +121,25 @@ def build_recipes_no_deps(
build_dir=build_dir,
recipe_dir=recipe_dir,
force_rebuild=force_rebuild,
skip_rust_setup=skip_rust_setup,
)

return build_recipes_no_deps_impl(packages, args, continue_)


def _rust_setup(recipe_dir: Path, packages: list[str]):
recipes = recipe.load_recipes(recipe_dir, packages, False)
if any(recipe.is_rust_package() for recipe in recipes.values()):
buildall._ensure_rust_toolchain()


def build_recipes_no_deps_impl(
packages: list[str], args: Args, continue_: bool
) -> None:
# TODO: use multiprocessing?
if not args.skip_rust_setup:
_rust_setup(args.recipe_dir, packages)

for package in packages:
package_path = args.recipe_dir / package
package_build_dir = args.build_dir / package / "build"
Expand Down

0 comments on commit 87813c5

Please sign in to comment.