Skip to content

Commit 0c88c0f

Browse files
committed
Merge branch 'main' into rust-wasm-eh
2 parents 30517bd + 7ebf9a2 commit 0c88c0f

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

pyodide_build/buildall.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,8 @@ def build(self, build_args: BuildArgs, build_dir: Path) -> None:
160160
# been updated and should be rebuilt even though its own
161161
# files haven't been updated.
162162
"--force-rebuild",
163+
# We already did the rust setup in buildall
164+
"--skip-rust-setup",
163165
],
164166
check=False,
165167
stdout=subprocess.DEVNULL,

pyodide_build/cli/build_recipes.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import typer
66

7-
from pyodide_build import build_env, buildall
7+
from pyodide_build import build_env, buildall, recipe
88
from pyodide_build.build_env import BuildArgs, init_environment
99
from pyodide_build.buildpkg import RecipeBuilder
1010
from pyodide_build.common import get_num_cores
@@ -17,6 +17,7 @@ class Args:
1717
build_dir: Path
1818
install_dir: Path
1919
build_args: BuildArgs
20+
skip_rust_setup: bool
2021
force_rebuild: bool
2122
n_jobs: int
2223

@@ -28,6 +29,7 @@ def __init__(
2829
install_dir: Path | str | None = None,
2930
build_args: BuildArgs,
3031
force_rebuild: bool,
32+
skip_rust_setup: bool = False,
3133
n_jobs: int | None = None,
3234
):
3335
cwd = Path.cwd()
@@ -41,6 +43,7 @@ def __init__(
4143
)
4244
self.build_args = build_args
4345
self.force_rebuild = force_rebuild
46+
self.skip_rust_setup = skip_rust_setup
4447
self.n_jobs = n_jobs or get_num_cores()
4548
if not self.recipe_dir.is_dir():
4649
raise FileNotFoundError(f"Recipe directory {self.recipe_dir} not found")
@@ -93,6 +96,11 @@ def build_recipes_no_deps(
9396
"--continue",
9497
help="Continue a build from the middle. For debugging. Implies '--force-rebuild'",
9598
),
99+
skip_rust_setup: bool = typer.Option(
100+
False,
101+
"--skip-rust-setup",
102+
help="Don't setup rust environment when building a rust package",
103+
),
96104
) -> None:
97105
"""Build packages using yaml recipes but don't try to resolve dependencies"""
98106
init_environment()
@@ -113,15 +121,25 @@ def build_recipes_no_deps(
113121
build_dir=build_dir,
114122
recipe_dir=recipe_dir,
115123
force_rebuild=force_rebuild,
124+
skip_rust_setup=skip_rust_setup,
116125
)
117126

118127
return build_recipes_no_deps_impl(packages, args, continue_)
119128

120129

130+
def _rust_setup(recipe_dir: Path, packages: list[str]):
131+
recipes = recipe.load_recipes(recipe_dir, packages, False)
132+
if any(recipe.is_rust_package() for recipe in recipes.values()):
133+
buildall._ensure_rust_toolchain()
134+
135+
121136
def build_recipes_no_deps_impl(
122137
packages: list[str], args: Args, continue_: bool
123138
) -> None:
124139
# TODO: use multiprocessing?
140+
if not args.skip_rust_setup:
141+
_rust_setup(args.recipe_dir, packages)
142+
125143
for package in packages:
126144
package_path = args.recipe_dir / package
127145
package_build_dir = args.build_dir / package / "build"

0 commit comments

Comments
 (0)