@@ -254,6 +254,7 @@ class GnomeModule(ExtensionModule):
254254
255255 def __init__ (self , interpreter : 'Interpreter' ) -> None :
256256 super ().__init__ (interpreter )
257+ self .gir_dep : T .Optional [Dependency ] = None
257258 self .giscanner : T .Optional [ToolType ] = None
258259 self .gicompiler : T .Optional [ToolType ] = None
259260 self .install_glib_compile_schemas = False
@@ -787,18 +788,20 @@ def postconf_hook(self, b: build.Build) -> None:
787788 if self .devenv is not None :
788789 b .devenv .append (self .devenv )
789790
790- def _get_gi (self , state : 'ModuleState' ) -> T .Tuple [ToolType , ToolType ]:
791- if not self .giscanner :
792- self .giscanner = self ._find_tool (state , 'g-ir-scanner' , for_machine = MachineChoice .BUILD )
793- self .gicompiler = self ._find_tool (state , 'g-ir-compiler' , for_machine = MachineChoice .HOST )
794- return self .giscanner , self .gicompiler
791+ def _get_gir_dep (self , state : 'ModuleState' ) -> T .Tuple [Dependency , T .Union [Executable , 'ExternalProgram' , 'OverrideProgram' ],
792+ T .Union [Executable , 'ExternalProgram' , 'OverrideProgram' ]]:
793+ if not self .gir_dep :
794+ self .gir_dep = state .dependency ('gobject-introspection-1.0' )
795+ self .giscanner = self ._find_tool (state , 'g-ir-scanner' )
796+ self .gicompiler = self ._find_tool (state , 'g-ir-compiler' )
797+ return self .gir_dep , self .giscanner , self .gicompiler
795798
796799 def _giscanner_version_compare (self , state : 'ModuleState' , cmp : str ) -> bool :
797800 # Support for --version was introduced in g-i 1.58, but Ubuntu
798801 # Bionic shipped 1.56.1. As all our version checks are greater
799802 # than 1.58, we can just return False if get_version fails.
800803 try :
801- giscanner , _ = self ._get_gi (state )
804+ giscanner , _ , _ = self ._get_gir_dep (state )
802805 return mesonlib .version_compare (giscanner .get_version (), cmp )
803806 except MesonException :
804807 return False
@@ -994,8 +997,6 @@ def _make_gir_target(
994997 run_env .set ('CFLAGS' , [quote_arg (x ) for x in env_flags ], ' ' )
995998 run_env .merge (kwargs ['env' ])
996999
997- giscanner , _ = self ._get_gi (state )
998-
9991000 # response file supported?
10001001 rspable = self ._giscanner_version_compare (state , '>= 1.85.0' )
10011002
@@ -1149,7 +1150,7 @@ def generate_gir(self, state: 'ModuleState', args: T.Tuple[T.List[T.Union[Execut
11491150 if len (girtargets ) > 1 and any (isinstance (el , Executable ) for el in girtargets ):
11501151 raise MesonException ('generate_gir only accepts a single argument when one of the arguments is an executable' )
11511152
1152- giscanner , gicompiler = self ._get_gi (state )
1153+ gir_dep , giscanner , gicompiler = self ._get_gir_dep (state )
11531154
11541155 ns = kwargs ['namespace' ]
11551156 nsversion = kwargs ['nsversion' ]
@@ -1160,13 +1161,14 @@ def generate_gir(self, state: 'ModuleState', args: T.Tuple[T.List[T.Union[Execut
11601161 builddir = os .path .join (state .environment .get_build_dir (), state .subdir )
11611162
11621163 depends : T .List [T .Union ['FileOrString' , 'build.GeneratedTypes' , build .BuildTarget , build .StructuredSources ]] = []
1164+ depends .extend (gir_dep .sources )
11631165 depends .extend (girtargets )
11641166
11651167 langs_compilers = self ._get_girtargets_langs_compilers (girtargets )
11661168 cflags , internal_ldflags , external_ldflags = self ._get_langs_compilers_flags (state , langs_compilers )
11671169 deps = self ._get_gir_targets_deps (girtargets )
11681170 deps += kwargs ['dependencies' ]
1169- deps += [state . dependency ( 'glib-2.0' ), state . dependency ( 'gobject-2.0' ), state . dependency ( 'gmodule-2.0' ), state . dependency ( 'gio-2.0' ) ]
1171+ deps += [gir_dep ]
11701172 typelib_includes , depends = self ._gather_typelib_includes_and_update_depends (state , deps , depends )
11711173 # ldflags will be misinterpreted by gir scanner (showing
11721174 # spurious dependencies) but building GStreamer fails if they
0 commit comments