@@ -160,7 +160,7 @@ def _fetch_package_from_subproject(self, package_name: str, meson_depname: str)
160160 self ._add_dependency (pkg , depname )
161161 return pkg , False
162162
163- def _dep_package (self , dep : Dependency ) -> PackageState :
163+ def _dep_package (self , pkg : PackageState , dep : Dependency ) -> PackageState :
164164 if dep .git :
165165 _ , _ , directory = _parse_git_url (dep .git , dep .branch )
166166 dep_pkg , _ = self ._fetch_package_from_subproject (dep .package , directory )
@@ -203,7 +203,7 @@ def _add_dependency(self, pkg: PackageState, depname: str) -> None:
203203 # It could be build/dev/target dependency. Just ignore it.
204204 return
205205 pkg .required_deps .add (depname )
206- dep_pkg = self ._dep_package (dep )
206+ dep_pkg = self ._dep_package (pkg , dep )
207207 if dep .default_features :
208208 self ._enable_feature (dep_pkg , 'default' )
209209 for f in dep .features :
@@ -227,7 +227,7 @@ def _enable_feature(self, pkg: PackageState, feature: str) -> None:
227227 depname = depname [:- 1 ]
228228 if depname in pkg .required_deps :
229229 dep = pkg .manifest .dependencies [depname ]
230- dep_pkg = self ._dep_package (dep )
230+ dep_pkg = self ._dep_package (pkg , dep )
231231 self ._enable_feature (dep_pkg , dep_f )
232232 else :
233233 # This feature will be enabled only if that dependency
@@ -237,7 +237,7 @@ def _enable_feature(self, pkg: PackageState, feature: str) -> None:
237237 self ._add_dependency (pkg , depname )
238238 dep = pkg .manifest .dependencies .get (depname )
239239 if dep :
240- dep_pkg = self ._dep_package (dep )
240+ dep_pkg = self ._dep_package (pkg , dep )
241241 self ._enable_feature (dep_pkg , dep_f )
242242 elif f .startswith ('dep:' ):
243243 self ._add_dependency (pkg , f [4 :])
@@ -302,7 +302,8 @@ def _create_dependencies(self, pkg: PackageState, build: builder.Builder) -> T.L
302302 ast : T .List [mparser .BaseNode ] = []
303303 for depname in pkg .required_deps :
304304 dep = pkg .manifest .dependencies [depname ]
305- ast += self ._create_dependency (dep , build )
305+ dep_pkg = self ._dep_package (pkg , dep )
306+ ast += self ._create_dependency (dep_pkg , dep , build )
306307 ast .append (build .assign (build .array ([]), 'system_deps_args' ))
307308 for name , sys_dep in pkg .manifest .system_dependencies .items ():
308309 if sys_dep .enabled (pkg .features ):
@@ -336,10 +337,11 @@ def _create_system_dependency(self, name: str, dep: SystemDependency, build: bui
336337 ),
337338 ]
338339
339- def _create_dependency (self , dep : Dependency , build : builder .Builder ) -> T .List [mparser .BaseNode ]:
340- pkg = self ._dep_package (dep )
340+ def _create_dependency (self , pkg : PackageState , dep : Dependency , build : builder .Builder ) -> T .List [mparser .BaseNode ]:
341+ version_ = dep .meson_version or [pkg .manifest .package .version ]
342+ api = dep .api or pkg .manifest .package .api
341343 kw = {
342- 'version' : build .array ([build .string (s ) for s in dep . meson_version ]),
344+ 'version' : build .array ([build .string (s ) for s in version_ ]),
343345 }
344346 # Lookup for this dependency with the features we want in default_options kwarg.
345347 #
@@ -357,7 +359,7 @@ def _create_dependency(self, dep: Dependency, build: builder.Builder) -> T.List[
357359 build .assign (
358360 build .function (
359361 'dependency' ,
360- [build .string (_dependency_name (dep .package , dep . api ))],
362+ [build .string (_dependency_name (dep .package , api ))],
361363 kw ,
362364 ),
363365 _dependency_varname (dep .package ),
@@ -387,7 +389,7 @@ def _create_dependency(self, dep: Dependency, build: builder.Builder) -> T.List[
387389 build .if_ (build .not_in (build .identifier ('f' ), build .identifier ('actual_features' )), build .block ([
388390 build .function ('error' , [
389391 build .string ('Dependency' ),
390- build .string (_dependency_name (dep .package , dep . api )),
392+ build .string (_dependency_name (dep .package , api )),
391393 build .string ('previously configured with features' ),
392394 build .identifier ('actual_features' ),
393395 build .string ('but need' ),
@@ -422,7 +424,7 @@ def _create_lib(self, pkg: PackageState, build: builder.Builder, crate_type: raw
422424 dep = pkg .manifest .dependencies [name ]
423425 dependencies .append (build .identifier (_dependency_varname (dep .package )))
424426 if name != dep .package :
425- dep_pkg = self ._dep_package (dep )
427+ dep_pkg = self ._dep_package (pkg , dep )
426428 dep_lib_name = dep_pkg .manifest .lib .name
427429 dependency_map [build .string (fixup_meson_varname (dep_lib_name ))] = build .string (name )
428430 for name , sys_dep in pkg .manifest .system_dependencies .items ():
0 commit comments