Skip to content

Commit 4667c98

Browse files
authored
Merge pull request #945 from tiran/pass-version
refactor: pass version to more hooks
2 parents 8ec6e4e + 167c420 commit 4667c98

7 files changed

Lines changed: 44 additions & 7 deletions

File tree

src/fromager/bootstrapper.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -554,13 +554,15 @@ def _build_wheel(
554554
def _prepare_build_dependencies(
555555
self,
556556
req: Requirement,
557+
resolved_version: Version | None,
557558
sdist_root_dir: pathlib.Path,
558559
build_env: build_environment.BuildEnvironment,
559560
) -> set[Requirement]:
560561
# build system
561562
build_system_dependencies = dependencies.get_build_system_dependencies(
562563
ctx=self.ctx,
563564
req=req,
565+
version=resolved_version,
564566
sdist_root_dir=sdist_root_dir,
565567
)
566568
self._handle_build_requirements(
@@ -575,6 +577,7 @@ def _prepare_build_dependencies(
575577
build_backend_dependencies = dependencies.get_build_backend_dependencies(
576578
ctx=self.ctx,
577579
req=req,
580+
version=resolved_version,
578581
sdist_root_dir=sdist_root_dir,
579582
build_env=build_env,
580583
)
@@ -588,6 +591,7 @@ def _prepare_build_dependencies(
588591
build_sdist_dependencies = dependencies.get_build_sdist_dependencies(
589592
ctx=self.ctx,
590593
req=req,
594+
version=resolved_version,
591595
sdist_root_dir=sdist_root_dir,
592596
build_env=build_env,
593597
)
@@ -851,7 +855,12 @@ def _build_from_source(
851855
# Prepare build dependencies (always needed)
852856
# Note: This may recursively call bootstrap() for build deps,
853857
# which has its own error handling.
854-
self._prepare_build_dependencies(req, sdist_root_dir, build_env)
858+
self._prepare_build_dependencies(
859+
req=req,
860+
resolved_version=resolved_version,
861+
sdist_root_dir=sdist_root_dir,
862+
build_env=build_env,
863+
)
855864

856865
# Build wheel or sdist
857866
wheel_filename, sdist_filename = self._do_build(
@@ -1214,7 +1223,10 @@ def _get_version_from_package_metadata(
12141223
parent_dir=source_dir.parent,
12151224
)
12161225
build_dependencies = self._prepare_build_dependencies(
1217-
req, source_dir, build_env=build_env
1226+
req=req,
1227+
resolved_version=None,
1228+
sdist_root_dir=source_dir,
1229+
build_env=build_env,
12181230
)
12191231
build_env.install(build_dependencies)
12201232

src/fromager/build_environment.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ def prepare_build_environment(
249249
*,
250250
ctx: context.WorkContext,
251251
req: Requirement,
252+
version: Version | None = None,
252253
sdist_root_dir: pathlib.Path,
253254
) -> BuildEnvironment:
254255
logger.info("preparing build environment")
@@ -261,6 +262,7 @@ def prepare_build_environment(
261262
build_system_dependencies = dependencies.get_build_system_dependencies(
262263
ctx=ctx,
263264
req=req,
265+
version=version,
264266
sdist_root_dir=sdist_root_dir,
265267
)
266268
_safe_install(
@@ -274,6 +276,7 @@ def prepare_build_environment(
274276
build_backend_dependencies = dependencies.get_build_backend_dependencies(
275277
ctx=ctx,
276278
req=req,
279+
version=version,
277280
sdist_root_dir=sdist_root_dir,
278281
build_env=build_env,
279282
)
@@ -288,6 +291,7 @@ def prepare_build_environment(
288291
build_sdist_dependencies = dependencies.get_build_sdist_dependencies(
289292
ctx=ctx,
290293
req=req,
294+
version=version,
291295
sdist_root_dir=sdist_root_dir,
292296
build_env=build_env,
293297
)

src/fromager/commands/build.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,10 @@ def _build(
420420

421421
# Build environment
422422
build_env = build_environment.prepare_build_environment(
423-
ctx=wkctx, req=req, sdist_root_dir=source_root_dir
423+
ctx=wkctx,
424+
req=req,
425+
version=resolved_version,
426+
sdist_root_dir=source_root_dir,
424427
)
425428

426429
# Make a new source distribution, in case we patched the code.

src/fromager/commands/step.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,10 @@ def prepare_build(
180180
token = requirement_ctxvar.set(req)
181181
source_root_dir = _find_source_root_dir(wkctx, wkctx.work_dir, req, dist_version)
182182
build_environment.prepare_build_environment(
183-
ctx=wkctx, req=req, sdist_root_dir=source_root_dir
183+
ctx=wkctx,
184+
req=req,
185+
version=dist_version,
186+
sdist_root_dir=source_root_dir,
184187
)
185188
requirement_ctxvar.reset(token)
186189

src/fromager/dependencies.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def get_build_system_dependencies(
4141
*,
4242
ctx: context.WorkContext,
4343
req: Requirement,
44+
version: Version | None = None,
4445
sdist_root_dir: pathlib.Path,
4546
) -> set[Requirement]:
4647
logger.info(f"getting build system dependencies for {req} in {sdist_root_dir}")
@@ -107,6 +108,7 @@ def get_build_backend_dependencies(
107108
*,
108109
ctx: context.WorkContext,
109110
req: Requirement,
111+
version: Version | None = None,
110112
sdist_root_dir: pathlib.Path,
111113
build_env: build_environment.BuildEnvironment,
112114
) -> set[Requirement]:
@@ -124,7 +126,7 @@ def get_build_backend_dependencies(
124126
extra_environ = packagesettings.get_extra_environ(
125127
ctx=ctx,
126128
req=req,
127-
version=None,
129+
version=version,
128130
sdist_root_dir=sdist_root_dir,
129131
build_env=build_env,
130132
)
@@ -178,6 +180,7 @@ def get_build_sdist_dependencies(
178180
*,
179181
ctx: context.WorkContext,
180182
req: Requirement,
183+
version: Version | None = None,
181184
sdist_root_dir: pathlib.Path,
182185
build_env: build_environment.BuildEnvironment,
183186
) -> set[Requirement]:
@@ -195,7 +198,7 @@ def get_build_sdist_dependencies(
195198
extra_environ = packagesettings.get_extra_environ(
196199
ctx=ctx,
197200
req=req,
198-
version=None,
201+
version=version,
199202
sdist_root_dir=sdist_root_dir,
200203
build_env=build_env,
201204
)

src/fromager/packagesettings.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,7 @@ def get_extra_environ(
883883
*,
884884
template_env: dict[str, str] | None = None,
885885
build_env: build_environment.BuildEnvironment | None = None,
886+
version: Version | None = None,
886887
) -> dict[str, str]:
887888
"""Get extra environment variables for a variant
888889
@@ -1226,7 +1227,10 @@ def get_extra_environ(
12261227
) -> dict[str, str]:
12271228
"""Get extra environment variables from settings and update hook"""
12281229
pbi = ctx.package_build_info(req)
1229-
extra_environ = pbi.get_extra_environ(build_env=build_env)
1230+
extra_environ = pbi.get_extra_environ(
1231+
build_env=build_env,
1232+
version=version,
1233+
)
12301234
overrides.find_and_invoke(
12311235
req.name,
12321236
"update_extra_environ",

tests/test_dependencies.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ def test_get_build_system_dependencies(
155155
results = dependencies.get_build_system_dependencies(
156156
ctx=tmp_context,
157157
req=Requirement("fromager"),
158+
version=Version("1.0.0"),
158159
sdist_root_dir=tmp_path,
159160
)
160161
names = set(r.name for r in results)
@@ -172,6 +173,7 @@ def test_get_build_system_dependencies_cached(
172173
results = dependencies.get_build_system_dependencies(
173174
ctx=tmp_context,
174175
req=Requirement("fromager"),
176+
version=Version("1.0.0"),
175177
sdist_root_dir=sdist_root_dir,
176178
)
177179
assert results == set([Requirement("foo==1.0")])
@@ -195,13 +197,15 @@ def test_get_build_backend_dependencies(
195197
build_system_dependencies = dependencies.get_build_system_dependencies(
196198
ctx=tmp_context,
197199
req=req,
200+
version=Version("1.0.0"),
198201
sdist_root_dir=_fromager_root,
199202
)
200203
build_env.install(build_system_dependencies)
201204

202205
results = dependencies.get_build_backend_dependencies(
203206
ctx=tmp_context,
204207
req=req,
208+
version=Version("1.0.0"),
205209
sdist_root_dir=_fromager_root,
206210
build_env=build_env,
207211
)
@@ -225,6 +229,7 @@ def test_get_build_backend_dependencies_cached(
225229
results = dependencies.get_build_backend_dependencies(
226230
ctx=tmp_context,
227231
req=Requirement("fromager"),
232+
version=Version("1.0.0"),
228233
sdist_root_dir=sdist_root_dir,
229234
build_env=build_env,
230235
)
@@ -249,13 +254,15 @@ def test_get_build_sdist_dependencies(
249254
build_system_dependencies = dependencies.get_build_system_dependencies(
250255
ctx=tmp_context,
251256
req=req,
257+
version=Version("1.0.0"),
252258
sdist_root_dir=_fromager_root,
253259
)
254260
build_env.install(build_system_dependencies)
255261

256262
results = dependencies.get_build_sdist_dependencies(
257263
ctx=tmp_context,
258264
req=req,
265+
version=Version("1.0.0"),
259266
sdist_root_dir=_fromager_root,
260267
build_env=build_env,
261268
)
@@ -280,6 +287,7 @@ def test_get_build_sdist_dependencies_cached(
280287
results = dependencies.get_build_sdist_dependencies(
281288
ctx=tmp_context,
282289
req=req,
290+
version=Version("1.0.0"),
283291
sdist_root_dir=sdist_root_dir,
284292
build_env=build_env,
285293
)

0 commit comments

Comments
 (0)