@@ -149,7 +149,7 @@ def _fetch_package_from_subproject(self, package_name: str, meson_depname: str)
149149 self ._add_dependency (pkg , depname )
150150 return pkg , False
151151
152- def _dep_package (self , dep : Dependency ) -> PackageState :
152+ def _dep_package (self , pkg : PackageState , dep : Dependency ) -> PackageState :
153153 if dep .git :
154154 _ , _ , directory = _parse_git_url (dep .git , dep .branch )
155155 dep_pkg , _ = self ._fetch_package_from_subproject (dep .package , directory )
@@ -192,7 +192,7 @@ def _add_dependency(self, pkg: PackageState, depname: str) -> None:
192192 # It could be build/dev/target dependency. Just ignore it.
193193 return
194194 pkg .required_deps .add (depname )
195- dep_pkg = self ._dep_package (dep )
195+ dep_pkg = self ._dep_package (pkg , dep )
196196 if dep .default_features :
197197 self ._enable_feature (dep_pkg , 'default' )
198198 for f in dep .features :
@@ -216,7 +216,7 @@ def _enable_feature(self, pkg: PackageState, feature: str) -> None:
216216 depname = depname [:- 1 ]
217217 if depname in pkg .required_deps :
218218 dep = pkg .manifest .dependencies [depname ]
219- dep_pkg = self ._dep_package (dep )
219+ dep_pkg = self ._dep_package (pkg , dep )
220220 self ._enable_feature (dep_pkg , dep_f )
221221 else :
222222 # This feature will be enabled only if that dependency
@@ -226,7 +226,7 @@ def _enable_feature(self, pkg: PackageState, feature: str) -> None:
226226 self ._add_dependency (pkg , depname )
227227 dep = pkg .manifest .dependencies .get (depname )
228228 if dep :
229- dep_pkg = self ._dep_package (dep )
229+ dep_pkg = self ._dep_package (pkg , dep )
230230 self ._enable_feature (dep_pkg , dep_f )
231231 elif f .startswith ('dep:' ):
232232 self ._add_dependency (pkg , f [4 :])
@@ -291,7 +291,8 @@ def _create_dependencies(self, pkg: PackageState, build: builder.Builder) -> T.L
291291 ast : T .List [mparser .BaseNode ] = []
292292 for depname in pkg .required_deps :
293293 dep = pkg .manifest .dependencies [depname ]
294- ast += self ._create_dependency (dep , build )
294+ dep_pkg = self ._dep_package (pkg , dep )
295+ ast += self ._create_dependency (dep_pkg , dep , build )
295296 ast .append (build .assign (build .array ([]), 'system_deps_args' ))
296297 for name , sys_dep in pkg .manifest .system_dependencies .items ():
297298 if sys_dep .enabled (pkg .features ):
@@ -325,10 +326,11 @@ def _create_system_dependency(self, name: str, dep: SystemDependency, build: bui
325326 ),
326327 ]
327328
328- def _create_dependency (self , dep : Dependency , build : builder .Builder ) -> T .List [mparser .BaseNode ]:
329- pkg = self ._dep_package (dep )
329+ def _create_dependency (self , pkg : PackageState , dep : Dependency , build : builder .Builder ) -> T .List [mparser .BaseNode ]:
330+ version_ = dep .meson_version or [pkg .manifest .package .version ]
331+ api = dep .api or pkg .manifest .package .api
330332 kw = {
331- 'version' : build .array ([build .string (s ) for s in dep . meson_version ]),
333+ 'version' : build .array ([build .string (s ) for s in version_ ]),
332334 }
333335 # Lookup for this dependency with the features we want in default_options kwarg.
334336 #
@@ -346,7 +348,7 @@ def _create_dependency(self, dep: Dependency, build: builder.Builder) -> T.List[
346348 build .assign (
347349 build .function (
348350 'dependency' ,
349- [build .string (_dependency_name (dep .package , dep . api ))],
351+ [build .string (_dependency_name (dep .package , api ))],
350352 kw ,
351353 ),
352354 _dependency_varname (dep .package ),
@@ -376,7 +378,7 @@ def _create_dependency(self, dep: Dependency, build: builder.Builder) -> T.List[
376378 build .if_ (build .not_in (build .identifier ('f' ), build .identifier ('actual_features' )), build .block ([
377379 build .function ('error' , [
378380 build .string ('Dependency' ),
379- build .string (_dependency_name (dep .package , dep . api )),
381+ build .string (_dependency_name (dep .package , api )),
380382 build .string ('previously configured with features' ),
381383 build .identifier ('actual_features' ),
382384 build .string ('but need' ),
@@ -411,7 +413,7 @@ def _create_lib(self, pkg: PackageState, build: builder.Builder, crate_type: raw
411413 dep = pkg .manifest .dependencies [name ]
412414 dependencies .append (build .identifier (_dependency_varname (dep .package )))
413415 if name != dep .package :
414- dep_pkg = self ._dep_package (dep )
416+ dep_pkg = self ._dep_package (pkg , dep )
415417 dep_lib_name = dep_pkg .manifest .lib .name
416418 dependency_map [build .string (fixup_meson_varname (dep_lib_name ))] = build .string (name )
417419 for name , sys_dep in pkg .manifest .system_dependencies .items ():
0 commit comments