Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions src/fromager/bootstrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -557,13 +557,15 @@ def _build_wheel(
def _prepare_build_dependencies(
self,
req: Requirement,
resolved_version: Version | None,
sdist_root_dir: pathlib.Path,
build_env: build_environment.BuildEnvironment,
) -> set[Requirement]:
# build system
build_system_dependencies = dependencies.get_build_system_dependencies(
ctx=self.ctx,
req=req,
version=resolved_version,
sdist_root_dir=sdist_root_dir,
)
self._handle_build_requirements(
Expand All @@ -578,6 +580,7 @@ def _prepare_build_dependencies(
build_backend_dependencies = dependencies.get_build_backend_dependencies(
ctx=self.ctx,
req=req,
version=resolved_version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand All @@ -591,6 +594,7 @@ def _prepare_build_dependencies(
build_sdist_dependencies = dependencies.get_build_sdist_dependencies(
ctx=self.ctx,
req=req,
version=resolved_version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand Down Expand Up @@ -854,7 +858,12 @@ def _build_from_source(
# Prepare build dependencies (always needed)
# Note: This may recursively call bootstrap() for build deps,
# which has its own error handling.
self._prepare_build_dependencies(req, sdist_root_dir, build_env)
self._prepare_build_dependencies(
req=req,
resolved_version=resolved_version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)

# Build wheel or sdist
wheel_filename, sdist_filename = self._do_build(
Expand Down Expand Up @@ -1217,7 +1226,10 @@ def _get_version_from_package_metadata(
parent_dir=source_dir.parent,
)
build_dependencies = self._prepare_build_dependencies(
req, source_dir, build_env=build_env
req=req,
resolved_version=None,
sdist_root_dir=source_dir,
build_env=build_env,
)
build_env.install(build_dependencies)

Expand Down
4 changes: 4 additions & 0 deletions src/fromager/build_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,6 +249,7 @@ def prepare_build_environment(
*,
ctx: context.WorkContext,
req: Requirement,
version: Version | None = None,
sdist_root_dir: pathlib.Path,
) -> BuildEnvironment:
logger.info("preparing build environment")
Expand All @@ -261,6 +262,7 @@ def prepare_build_environment(
build_system_dependencies = dependencies.get_build_system_dependencies(
ctx=ctx,
req=req,
version=version,
sdist_root_dir=sdist_root_dir,
)
_safe_install(
Expand All @@ -274,6 +276,7 @@ def prepare_build_environment(
build_backend_dependencies = dependencies.get_build_backend_dependencies(
ctx=ctx,
req=req,
version=version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand All @@ -288,6 +291,7 @@ def prepare_build_environment(
build_sdist_dependencies = dependencies.get_build_sdist_dependencies(
ctx=ctx,
req=req,
version=version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand Down
5 changes: 4 additions & 1 deletion src/fromager/commands/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,10 @@ def _build(

# Build environment
build_env = build_environment.prepare_build_environment(
ctx=wkctx, req=req, sdist_root_dir=source_root_dir
ctx=wkctx,
req=req,
version=resolved_version,
sdist_root_dir=source_root_dir,
)

# Make a new source distribution, in case we patched the code.
Expand Down
5 changes: 4 additions & 1 deletion src/fromager/commands/step.py
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,10 @@ def prepare_build(
token = requirement_ctxvar.set(req)
source_root_dir = _find_source_root_dir(wkctx, wkctx.work_dir, req, dist_version)
build_environment.prepare_build_environment(
ctx=wkctx, req=req, sdist_root_dir=source_root_dir
ctx=wkctx,
req=req,
version=dist_version,
sdist_root_dir=source_root_dir,
)
requirement_ctxvar.reset(token)

Expand Down
7 changes: 5 additions & 2 deletions src/fromager/dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def get_build_system_dependencies(
*,
ctx: context.WorkContext,
req: Requirement,
version: Version | None = None,
sdist_root_dir: pathlib.Path,
) -> set[Requirement]:
logger.info(f"getting build system dependencies for {req} in {sdist_root_dir}")
Expand Down Expand Up @@ -107,6 +108,7 @@ def get_build_backend_dependencies(
*,
ctx: context.WorkContext,
req: Requirement,
version: Version | None = None,
sdist_root_dir: pathlib.Path,
build_env: build_environment.BuildEnvironment,
) -> set[Requirement]:
Expand All @@ -124,7 +126,7 @@ def get_build_backend_dependencies(
extra_environ = packagesettings.get_extra_environ(
ctx=ctx,
req=req,
version=None,
version=version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand Down Expand Up @@ -178,6 +180,7 @@ def get_build_sdist_dependencies(
*,
ctx: context.WorkContext,
req: Requirement,
version: Version | None = None,
sdist_root_dir: pathlib.Path,
build_env: build_environment.BuildEnvironment,
) -> set[Requirement]:
Expand All @@ -195,7 +198,7 @@ def get_build_sdist_dependencies(
extra_environ = packagesettings.get_extra_environ(
ctx=ctx,
req=req,
version=None,
version=version,
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand Down
6 changes: 5 additions & 1 deletion src/fromager/packagesettings.py
Original file line number Diff line number Diff line change
Expand Up @@ -883,6 +883,7 @@ def get_extra_environ(
*,
template_env: dict[str, str] | None = None,
build_env: build_environment.BuildEnvironment | None = None,
version: Version | None = None,
) -> dict[str, str]:
"""Get extra environment variables for a variant

Expand Down Expand Up @@ -1226,7 +1227,10 @@ def get_extra_environ(
) -> dict[str, str]:
"""Get extra environment variables from settings and update hook"""
pbi = ctx.package_build_info(req)
extra_environ = pbi.get_extra_environ(build_env=build_env)
extra_environ = pbi.get_extra_environ(
build_env=build_env,
version=version,
)
overrides.find_and_invoke(
req.name,
"update_extra_environ",
Expand Down
8 changes: 8 additions & 0 deletions tests/test_dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ def test_get_build_system_dependencies(
results = dependencies.get_build_system_dependencies(
ctx=tmp_context,
req=Requirement("fromager"),
version=Version("1.0.0"),
sdist_root_dir=tmp_path,
)
names = set(r.name for r in results)
Expand All @@ -98,6 +99,7 @@ def test_get_build_system_dependencies_cached(
results = dependencies.get_build_system_dependencies(
ctx=tmp_context,
req=Requirement("fromager"),
version=Version("1.0.0"),
sdist_root_dir=sdist_root_dir,
)
assert results == set([Requirement("foo==1.0")])
Expand All @@ -121,13 +123,15 @@ def test_get_build_backend_dependencies(
build_system_dependencies = dependencies.get_build_system_dependencies(
ctx=tmp_context,
req=req,
version=Version("1.0.0"),
sdist_root_dir=_fromager_root,
)
build_env.install(build_system_dependencies)

results = dependencies.get_build_backend_dependencies(
ctx=tmp_context,
req=req,
version=Version("1.0.0"),
sdist_root_dir=_fromager_root,
build_env=build_env,
)
Expand All @@ -151,6 +155,7 @@ def test_get_build_backend_dependencies_cached(
results = dependencies.get_build_backend_dependencies(
ctx=tmp_context,
req=Requirement("fromager"),
version=Version("1.0.0"),
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand All @@ -175,13 +180,15 @@ def test_get_build_sdist_dependencies(
build_system_dependencies = dependencies.get_build_system_dependencies(
ctx=tmp_context,
req=req,
version=Version("1.0.0"),
sdist_root_dir=_fromager_root,
)
build_env.install(build_system_dependencies)

results = dependencies.get_build_sdist_dependencies(
ctx=tmp_context,
req=req,
version=Version("1.0.0"),
sdist_root_dir=_fromager_root,
build_env=build_env,
)
Expand All @@ -206,6 +213,7 @@ def test_get_build_sdist_dependencies_cached(
results = dependencies.get_build_sdist_dependencies(
ctx=tmp_context,
req=req,
version=Version("1.0.0"),
sdist_root_dir=sdist_root_dir,
build_env=build_env,
)
Expand Down
Loading