Skip to content

Commit 76c9b04

Browse files
committed
add for_machine to DependencyFallbacksHolder
Store it at construction time instead of extracting it from kwargs repeatedly. Extracted from a patch by Dylan Baker <dylan@pnwbakers.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent bfe5bbb commit 76c9b04

File tree

2 files changed

+9
-12
lines changed

2 files changed

+9
-12
lines changed

mesonbuild/interpreter/dependencyfallbacks.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@
2929
class DependencyFallbacksHolder(MesonInterpreterObject):
3030
def __init__(self,
3131
interpreter: 'Interpreter',
32-
names: T.List[str],
32+
names: T.List[str], for_machine: MachineChoice,
3333
allow_fallback: T.Optional[bool] = None,
3434
default_options: T.Optional[T.Dict[OptionKey, ElementaryOptionValues]] = None) -> None:
3535
super().__init__(subproject=interpreter.subproject)
3636
self.interpreter = interpreter
3737
self.subproject = interpreter.subproject
38-
self.for_machine = MachineChoice.HOST
38+
self.for_machine = for_machine
3939
self.coredata = interpreter.coredata
4040
self.build = interpreter.build
4141
self.environment = interpreter.environment
@@ -97,9 +97,8 @@ def _do_dependency(self, kwargs: DependencyObjectKWs, name: str, func_kwargs: Do
9797
self._handle_featurenew_dependencies(name)
9898
dep = dependencies.find_external_dependency(name, self.environment, kwargs)
9999
if dep.found():
100-
for_machine = kwargs.get('native', MachineChoice.HOST)
101100
identifier = dependencies.get_dep_identifier(name, kwargs)
102-
self.coredata.deps[for_machine].put(identifier, dep)
101+
self.coredata.deps[self.for_machine].put(identifier, dep)
103102
return dep
104103
return None
105104

@@ -217,12 +216,11 @@ def _get_cached_dep(self, name: str, kwargs: DependencyObjectKWs) -> T.Optional[
217216
# of None in the case the dependency is cached as not-found, or if cached
218217
# version does not match. In that case we don't want to continue with
219218
# other candidates.
220-
for_machine = kwargs.get('native', MachineChoice.HOST)
221219
identifier = dependencies.get_dep_identifier(name, kwargs)
222220
wanted_vers = stringlistify(kwargs.get('version', []))
223221

224222
info: mlog.TV_LoggableList = [mlog.blue('(cached)')]
225-
override = self.build.dependency_overrides[for_machine].get(identifier)
223+
override = self.build.dependency_overrides[self.for_machine].get(identifier)
226224
if override:
227225
if override.explicit:
228226
info = [mlog.blue('(overridden)')]
@@ -236,7 +234,7 @@ def _get_cached_dep(self, name: str, kwargs: DependencyObjectKWs) -> T.Optional[
236234
elif self.forcefallback and self.subproject_name:
237235
cached_dep = None
238236
else:
239-
cached_dep = self.coredata.deps[for_machine].get(identifier)
237+
cached_dep = self.coredata.deps[self.for_machine].get(identifier)
240238

241239
if cached_dep:
242240
found_vers = cached_dep.get_version()
@@ -372,10 +370,9 @@ def lookup(self, kwargs: DependencyObjectKWs, force_fallback: bool = False) -> D
372370
# Override this dependency to have consistent results in subsequent
373371
# dependency lookups.
374372
for name in self.names:
375-
for_machine = kwargs.get('native', MachineChoice.HOST)
376373
identifier = dependencies.get_dep_identifier(name, kwargs)
377-
if identifier not in self.build.dependency_overrides[for_machine]:
378-
self.build.dependency_overrides[for_machine][identifier] = \
374+
if identifier not in self.build.dependency_overrides[self.for_machine]:
375+
self.build.dependency_overrides[self.for_machine][identifier] = \
379376
build.DependencyOverride(dep, self.interpreter.current_node, explicit=False)
380377
return dep
381378
elif required and (dep or i == last):

mesonbuild/interpreter/interpreter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ def check_stdlibs(self) -> None:
573573
FeatureNew.single_use('stdlib without variable name', '0.56.0', self.subproject, location=self.current_node)
574574
kwargs: dependencies.base.DependencyObjectKWs = {'native': for_machine}
575575
name = l + '_stdlib'
576-
df = DependencyFallbacksHolder(self, [name])
576+
df = DependencyFallbacksHolder(self, [name], for_machine)
577577
df.set_fallback(di)
578578
dep = df.lookup(kwargs, force_fallback=True)
579579
self.build.stdlibs[for_machine][l] = dep
@@ -1768,7 +1768,7 @@ def func_dependency(self, node: mparser.BaseNode, args: T.Tuple[T.List[str]], kw
17681768
FeatureNew('dependency with more than one name', '0.60.0').use(self.subproject)
17691769
default_options = kwargs.get('default_options')
17701770
for_machine = kwargs['native']
1771-
df = DependencyFallbacksHolder(self, names, kwargs['allow_fallback'], default_options)
1771+
df = DependencyFallbacksHolder(self, names, for_machine, kwargs['allow_fallback'], default_options)
17721772
df.set_fallback(kwargs['fallback'])
17731773
not_found_message = kwargs['not_found_message']
17741774

0 commit comments

Comments
 (0)