Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package meson for openSUSE:Factory checked 
in at 2025-06-12 15:47:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/meson (Old)
 and      /work/SRC/openSUSE:Factory/.meson.new.19631 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "meson"

Thu Jun 12 15:47:27 2025 rev:127 rq:1284488 version:1.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/meson/meson.changes      2025-05-30 
17:23:56.147800617 +0200
+++ /work/SRC/openSUSE:Factory/.meson.new.19631/meson.changes   2025-06-12 
15:47:28.450768006 +0200
@@ -1,0 +2,13 @@
+Tue Jun 10 06:56:52 UTC 2025 - Dominique Leuenberger <dims...@opensuse.org>
+
+- Update to version 1.8.2:
+  + Unbreak "Fix setuptools 49 test".
+  + cargo: set edition for build machine as well.
+  + Vala: Fix GResource source directories.
+  + Vala: Add test for generated UI in subdirectories.
+  + cmake: Fix target_link_libraries against project targets.
+  + vala: Pass --shared-library to valac when generating a .gir
+    file.
+  + tests: don't skip frameworks/17 mpi for auto/pkgconfig.
+
+-------------------------------------------------------------------

Old:
----
  meson-1.8.1.tar.gz
  meson-1.8.1.tar.gz.asc

New:
----
  meson-1.8.2.tar.gz
  meson-1.8.2.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ meson.spec ++++++
--- /var/tmp/diff_new_pack.Lx3Ckg/_old  2025-06-12 15:47:29.126796107 +0200
+++ /var/tmp/diff_new_pack.Lx3Ckg/_new  2025-06-12 15:47:29.130796274 +0200
@@ -35,7 +35,7 @@
 %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim}
 %bcond_without  mono
 Name:           meson%{name_ext}
-Version:        1.8.1
+Version:        1.8.2
 Release:        0
 Summary:        Python-based build system
 License:        Apache-2.0

++++++ meson-1.8.1.tar.gz -> meson-1.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/PKG-INFO new/meson-1.8.2/PKG-INFO
--- old/meson-1.8.1/PKG-INFO    2025-05-23 23:51:07.713378400 +0200
+++ new/meson-1.8.2/PKG-INFO    2025-06-09 21:45:18.857252100 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: meson
-Version: 1.8.1
+Version: 1.8.2
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/man/meson.1 new/meson-1.8.2/man/meson.1
--- old/meson-1.8.1/man/meson.1 2025-05-23 23:51:05.000000000 +0200
+++ new/meson-1.8.2/man/meson.1 2025-06-09 21:45:16.000000000 +0200
@@ -1,4 +1,4 @@
-.TH MESON "1" "May 2025" "meson 1.8.1" "User Commands"
+.TH MESON "1" "June 2025" "meson 1.8.2" "User Commands"
 .SH NAME
 meson - a high productivity build system
 .SH DESCRIPTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/meson.egg-info/PKG-INFO 
new/meson-1.8.2/meson.egg-info/PKG-INFO
--- old/meson-1.8.1/meson.egg-info/PKG-INFO     2025-05-23 23:51:05.000000000 
+0200
+++ new/meson-1.8.2/meson.egg-info/PKG-INFO     2025-06-09 21:45:17.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: meson
-Version: 1.8.1
+Version: 1.8.2
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/meson.egg-info/SOURCES.txt 
new/meson-1.8.2/meson.egg-info/SOURCES.txt
--- old/meson-1.8.1/meson.egg-info/SOURCES.txt  2025-05-23 23:51:06.000000000 
+0200
+++ new/meson-1.8.2/meson.egg-info/SOURCES.txt  2025-06-09 21:45:17.000000000 
+0200
@@ -4405,6 +4405,11 @@
 test cases/vala/3 dep/gioprog.vala
 test cases/vala/3 dep/meson.build
 test cases/vala/30 dependencies for compiler.links/meson.build
+test cases/vala/31 generated ui file subdirectory/meson.build
+test cases/vala/31 generated ui file subdirectory/test.vala
+test cases/vala/31 generated ui file subdirectory/subdir/TestBox.ui.in
+test cases/vala/31 generated ui file subdirectory/subdir/meson.build
+test cases/vala/31 generated ui file subdirectory/subdir/test.gresource.xml
 test cases/vala/4 config/config.vapi
 test cases/vala/4 config/meson-something-else.vapi
 test cases/vala/4 config/meson.build
@@ -4574,6 +4579,9 @@
 test cases/windows/24 diasdk copy dll/config.h.in
 test cases/windows/24 diasdk copy dll/dia_from_dll.cpp
 test cases/windows/24 diasdk copy dll/meson.build
+test cases/windows/25 embed manifest/DPIAware.manifest
+test cases/windows/25 embed manifest/meson.build
+test cases/windows/25 embed manifest/prog.c
 test cases/windows/3 cpp/meson.build
 test cases/windows/3 cpp/prog.cpp
 test cases/windows/4 winmaincpp/meson.build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/ninjabackend.py 
new/meson-1.8.2/mesonbuild/backend/ninjabackend.py
--- old/meson-1.8.1/mesonbuild/backend/ninjabackend.py  2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/ninjabackend.py  2025-06-09 
21:45:16.000000000 +0200
@@ -500,11 +500,6 @@
         # - https://github.com/mesonbuild/meson/pull/9453
         # - 
https://github.com/mesonbuild/meson/issues/9479#issuecomment-953485040
         self.allow_thin_archives = PerMachine[bool](True, True)
-        if self.environment:
-            for for_machine in MachineChoice:
-                if 'cuda' in self.environment.coredata.compilers[for_machine]:
-                    mlog.debug('cuda enabled globally, disabling thin archives 
for {}, since nvcc/nvlink cannot handle thin archives 
natively'.format(for_machine))
-                    self.allow_thin_archives[for_machine] = False
 
     def create_phony_target(self, dummy_outfile: str, rulename: str, 
phony_infilename: str) -> NinjaBuildElement:
         '''
@@ -595,6 +590,12 @@
             # We don't yet have a use case where we'd expect to make use of 
this,
             # so no harm in catching and reporting something unexpected.
             raise MesonBugException('We do not expect the ninja backend to be 
given a valid \'vslite_ctx\'')
+        if self.environment:
+            for for_machine in MachineChoice:
+                if 'cuda' in self.environment.coredata.compilers[for_machine]:
+                    mlog.debug('cuda enabled globally, disabling thin archives 
for {}, since nvcc/nvlink cannot handle thin archives 
natively'.format(for_machine))
+                    self.allow_thin_archives[for_machine] = False
+
         ninja = environment.detect_ninja_command_and_version(log=True)
         if 
self.environment.coredata.optstore.get_value_for(OptionKey('vsenv')):
             builddir = Path(self.environment.get_build_dir())
@@ -1765,6 +1766,9 @@
                 girname = os.path.join(self.get_target_dir(target), 
target.vala_gir)
                 args += ['--gir', os.path.join('..', target.vala_gir)]
                 valac_outputs.append(girname)
+                shared_target = target.get('shared')
+                if isinstance(shared_target, build.SharedLibrary):
+                    args += ['--shared-library', 
self.get_target_filename_for_linking(shared_target)]
                 # Install GIR to default location if requested by user
                 if len(target.install_dir) > 3 and target.install_dir[3] is 
True:
                     target.install_dir[3] = 
os.path.join(self.environment.get_datadir(), 'gir-1.0')
@@ -1775,7 +1779,7 @@
                 gres_xml, = self.get_custom_target_sources(gensrc)
                 args += ['--gresources=' + gres_xml]
                 for source_dir in gensrc.source_dirs:
-                    gres_dirs += [os.path.join(self.get_target_dir(gensrc), 
source_dir)]
+                    gres_dirs += [source_dir]
                 # Ensure that resources are built before vala sources
                 # This is required since vala code using [GtkTemplate] 
effectively depends on .ui files
                 # GResourceHeaderTarget is not suitable due to lacking depfile
@@ -3127,9 +3131,9 @@
         # If TASKING compiler family is used and MIL linking is enabled for 
the target,
         # then compilation rule name is a special one to output MIL files
         # instead of object files for .c files
-        key = OptionKey('b_lto')
         if compiler.get_id() == 'tasking':
-            if ((isinstance(target, build.StaticLibrary) and target.prelink) 
or target.get_option(key)) and src.rsplit('.', 1)[1] in 
compilers.lang_suffixes['c']:
+            target_lto = self.get_target_option(target, OptionKey('b_lto', 
machine=target.for_machine, subproject=target.subproject))
+            if ((isinstance(target, build.StaticLibrary) and target.prelink) 
or target_lto) and src.rsplit('.', 1)[1] in compilers.lang_suffixes['c']:
                 compiler_name = 
self.get_compiler_rule_name('tasking_mil_compile', compiler.for_machine)
             else:
                 compiler_name = self.compiler_to_rule_name(compiler)
@@ -3688,7 +3692,7 @@
         elem = NinjaBuildElement(self.all_outputs, outname, linker_rule, 
obj_list, implicit_outs=implicit_outs)
         elem.add_dep(dep_targets + custom_target_libraries)
         if linker.get_id() == 'tasking':
-            if len([x for x in dep_targets + custom_target_libraries if 
x.endswith('.ma')]) > 0 and not target.get_option(OptionKey('b_lto')):
+            if len([x for x in dep_targets + custom_target_libraries if 
x.endswith('.ma')]) > 0 and not self.get_target_option(target, 
OptionKey('b_lto', target.subproject, target.for_machine)):
                 raise MesonException(f'Tried to link the target named 
\'{target.name}\' with a MIL archive without LTO enabled! This causes the 
compiler to ignore the archive.')
 
         # Compiler args must be included in TI C28x linker commands.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2010backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2010backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2010backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2010backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -147,6 +147,9 @@
         self.handled_target_deps = {}
         self.gen_lite = gen_lite  # Synonymous with generating the simpler 
makefile-style multi-config projects that invoke 'meson compile' builds, 
avoiding native MSBuild complications
 
+    def detect_toolset(self) -> None:
+        pass
+
     def get_target_private_dir(self, target):
         return os.path.join(self.get_target_dir(target), target.get_id())
 
@@ -227,6 +230,7 @@
         # Check for (currently) unexpected capture arg use cases -
         if capture:
             raise MesonBugException('We do not expect any vs backend to 
generate with \'capture = True\'')
+        self.detect_toolset()
         host_machine = self.environment.machines.host.cpu_family
         if host_machine in {'64', 'x86_64'}:
             # amd64 or x86_64
@@ -692,9 +696,8 @@
             if target_ext:
                 ET.SubElement(direlem, 'TargetExt').text = target_ext
 
-            ET.SubElement(direlem, 'EmbedManifest').text = 'false'
-            if not gen_manifest:
-                ET.SubElement(direlem, 'GenerateManifest').text = 'false'
+            ET.SubElement(direlem, 'EmbedManifest').text = 'true' if 
gen_manifest == 'embed' else 'false'
+            ET.SubElement(direlem, 'GenerateManifest').text = 'true' if 
gen_manifest else 'false'
 
         return (root, type_config)
 
@@ -1493,8 +1496,9 @@
             additional_links.append(self.relpath(lib, 
self.get_target_dir(target)))
 
         if len(extra_link_args) > 0:
-            extra_link_args.append('%(AdditionalOptions)')
-            ET.SubElement(link, "AdditionalOptions").text = ' 
'.join(extra_link_args)
+            args = [self.escape_additional_option(arg) for arg in 
extra_link_args]
+            args.append('%(AdditionalOptions)')
+            ET.SubElement(link, "AdditionalOptions").text = ' '.join(args)
         if len(additional_libpaths) > 0:
             additional_libpaths.insert(0, '%(AdditionalLibraryDirectories)')
             ET.SubElement(link, 'AdditionalLibraryDirectories').text = 
';'.join(additional_libpaths)
@@ -2096,6 +2100,7 @@
         pass
 
     # Returns if a target generates a manifest or not.
+    # Returns 'embed' if the generated manifest is embedded.
     def get_gen_manifest(self, target):
         if not isinstance(target, build.BuildTarget):
             return True
@@ -2113,6 +2118,8 @@
             arg = arg.upper()
             if arg == '/MANIFEST:NO':
                 return False
+            if arg.startswith('/MANIFEST:EMBED'):
+                return 'embed'
             if arg == '/MANIFEST' or arg.startswith('/MANIFEST:'):
                 break
         return True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2012backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2012backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2012backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2012backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -21,6 +21,8 @@
         self.vs_version = '2012'
         self.sln_file_version = '12.00'
         self.sln_version_comment = '2012'
+
+    def detect_toolset(self) -> None:
         if self.environment is not None:
             # TODO: we assume host == build
             comps = self.environment.coredata.compilers.host
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2013backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2013backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2013backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2013backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -20,6 +20,8 @@
         self.vs_version = '2013'
         self.sln_file_version = '12.00'
         self.sln_version_comment = '2013'
+
+    def detect_toolset(self) -> None:
         if self.environment is not None:
             # TODO: we assume host == build
             comps = self.environment.coredata.compilers.host
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2015backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2015backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2015backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2015backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -21,6 +21,8 @@
         self.vs_version = '2015'
         self.sln_file_version = '12.00'
         self.sln_version_comment = '14'
+
+    def detect_toolset(self) -> None:
         if self.environment is not None:
             # TODO: we assume host == build
             comps = self.environment.coredata.compilers.host
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2017backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2017backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2017backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2017backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -24,6 +24,8 @@
         self.vs_version = '2017'
         self.sln_file_version = '12.00'
         self.sln_version_comment = '15'
+
+    def detect_toolset(self) -> None:
         # We assume that host == build
         if self.environment is not None:
             comps = self.environment.coredata.compilers.host
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2019backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2019backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2019backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2019backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -22,6 +22,8 @@
         super().__init__(build, interpreter)
         self.sln_file_version = '12.00'
         self.sln_version_comment = 'Version 16'
+
+    def detect_toolset(self) -> None:
         if self.environment is not None:
             comps = self.environment.coredata.compilers.host
             if comps and all(c.id == 'clang-cl' for c in comps.values()):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/backend/vs2022backend.py 
new/meson-1.8.2/mesonbuild/backend/vs2022backend.py
--- old/meson-1.8.1/mesonbuild/backend/vs2022backend.py 2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/backend/vs2022backend.py 2025-06-09 
21:45:16.000000000 +0200
@@ -22,6 +22,8 @@
         super().__init__(build, interpreter, gen_lite=gen_lite)
         self.sln_file_version = '12.00'
         self.sln_version_comment = 'Version 17'
+
+    def detect_toolset(self) -> None:
         if self.environment is not None:
             comps = self.environment.coredata.compilers.host
             if comps and all(c.id == 'clang-cl' for c in comps.values()):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/build.py 
new/meson-1.8.2/mesonbuild/build.py
--- old/meson-1.8.1/mesonbuild/build.py 2025-05-23 23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/build.py 2025-06-09 21:45:16.000000000 +0200
@@ -2199,10 +2199,16 @@
                 elif self.rust_crate_type == 'staticlib':
                     self.suffix = 'a'
             else:
-                if 'c' in self.compilers and self.compilers['c'].get_id() == 
'tasking':
-                    self.suffix = 'ma' if self.options.get_value('b_lto') and 
not self.prelink else 'a'
-                else:
-                    self.suffix = 'a'
+                self.suffix = 'a'
+                if 'c' in self.compilers and self.compilers['c'].get_id() == 
'tasking' and not self.prelink:
+                    key = OptionKey('b_lto', self.subproject, self.for_machine)
+                    try:
+                        v = 
self.environment.coredata.get_option_for_target(self, key)
+                    except KeyError:
+                        v = 
self.environment.coredata.optstore.get_value_for(key)
+                    assert isinstance(v, bool), 'for mypy'
+                    if v:
+                        self.suffix = 'ma'
         self.filename = self.prefix + self.name + '.' + self.suffix
         self.outputs[0] = self.filename
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/cargo/interpreter.py 
new/meson-1.8.2/mesonbuild/cargo/interpreter.py
--- old/meson-1.8.1/mesonbuild/cargo/interpreter.py     2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/cargo/interpreter.py     2025-06-09 
21:45:16.000000000 +0200
@@ -608,6 +608,7 @@
         """
         default_options: T.List[mparser.BaseNode] = []
         
default_options.append(build.string(f'rust_std={pkg.manifest.package.edition}'))
+        
default_options.append(build.string(f'build.rust_std={pkg.manifest.package.edition}'))
         if pkg.downloaded:
             default_options.append(build.string('warning_level=0'))
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/cmake/interpreter.py 
new/meson-1.8.2/mesonbuild/cmake/interpreter.py
--- old/meson-1.8.1/mesonbuild/cmake/interpreter.py     2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/cmake/interpreter.py     2025-06-09 
21:45:16.000000000 +0200
@@ -223,6 +223,7 @@
         self.install = target.install
         self.install_dir: T.Optional[Path] = None
         self.link_libraries = target.link_libraries
+        self.link_targets: T.List[str] = []
         self.link_flags = target.link_flags + target.link_lang_flags
         self.public_link_flags: T.List[str] = []
         self.depends_raw: T.List[str] = []
@@ -363,6 +364,8 @@
             self.public_link_flags += rtgt.public_link_flags
             self.public_compile_opts += rtgt.public_compile_opts
             self.link_libraries += rtgt.libraries
+            self.depends_raw += rtgt.target_dependencies
+            self.link_targets += rtgt.target_dependencies
 
         elif self.type.upper() not in ['EXECUTABLE', 'OBJECT_LIBRARY']:
             mlog.warning('CMake: Target', mlog.bold(self.cmake_name), 'not 
found in CMake trace. This can lead to build errors')
@@ -957,17 +960,27 @@
                 object_libs += [tgt]
             self.languages += [x for x in tgt.languages if x not in 
self.languages]
 
-        # Second pass: Detect object library dependencies
+        # Second pass: Populate link_with project internal targets
+        for tgt in self.targets:
+            for i in tgt.link_targets:
+                # Handle target-based link libraries
+                link_with = self.output_target_map.target(i)
+                if not link_with or isinstance(link_with, 
ConverterCustomTarget):
+                    # Generated file etc.
+                    continue
+                tgt.link_with.append(link_with)
+
+        # Third pass: Detect object library dependencies
         for tgt in self.targets:
             tgt.process_object_libs(object_libs, self._object_lib_workaround)
 
-        # Third pass: Reassign dependencies to avoid some loops
+        # Fourth pass: Reassign dependencies to avoid some loops
         for tgt in self.targets:
             tgt.process_inter_target_dependencies()
         for ctgt in self.custom_targets:
             ctgt.process_inter_target_dependencies()
 
-        # Fourth pass: Remove rassigned dependencies
+        # Fifth pass: Remove reassigned dependencies
         for tgt in self.targets:
             tgt.cleanup_dependencies()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/cmake/tracetargets.py 
new/meson-1.8.2/mesonbuild/cmake/tracetargets.py
--- old/meson-1.8.1/mesonbuild/cmake/tracetargets.py    2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/cmake/tracetargets.py    2025-06-09 
21:45:16.000000000 +0200
@@ -45,6 +45,7 @@
         self.public_link_flags:   T.List[str] = []
         self.public_compile_opts: T.List[str] = []
         self.libraries:           T.List[str] = []
+        self.target_dependencies: T.List[str] = []
 
 def resolve_cmake_trace_targets(target_name: str,
                                 trace: 'CMakeTraceParser',
@@ -144,9 +145,13 @@
             targets += [x for x in tgt.properties['IMPORTED_LOCATION'] if x]
 
         if 'LINK_LIBRARIES' in tgt.properties:
-            targets += [x for x in tgt.properties['LINK_LIBRARIES'] if x]
+            link_libraries = [x for x in tgt.properties['LINK_LIBRARIES'] if x]
+            targets += link_libraries
+            res.target_dependencies += link_libraries
         if 'INTERFACE_LINK_LIBRARIES' in tgt.properties:
-            targets += [x for x in tgt.properties['INTERFACE_LINK_LIBRARIES'] 
if x]
+            link_libraries = [x for x in 
tgt.properties['INTERFACE_LINK_LIBRARIES'] if x]
+            targets += link_libraries
+            res.target_dependencies += link_libraries
 
         if f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}' in tgt.properties:
             targets += [x for x in 
tgt.properties[f'IMPORTED_LINK_DEPENDENT_LIBRARIES_{cfg}'] if x]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/compilers/fortran.py 
new/meson-1.8.2/mesonbuild/compilers/fortran.py
--- old/meson-1.8.1/mesonbuild/compilers/fortran.py     2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/mesonbuild/compilers/fortran.py     2025-06-09 
21:45:16.000000000 +0200
@@ -643,7 +643,11 @@
         # 
https://github.com/llvm/llvm-project/commit/8d5386669ed63548daf1bee415596582d6d78d7d;
         # it seems flang 18 doesn't work if something accidentally includes a 
program unit, see
         # https://github.com/llvm/llvm-project/issues/92496
-        return search_dirs + ['-lFortranRuntime', '-lFortranDecimal']
+        # Only link FortranRuntime and FortranDecimal for flang < 19, see
+        # https://github.com/scipy/scipy/issues/21562#issuecomment-2942938509
+        if version_compare(self.version, '<19'):
+            search_dirs += ['-lFortranRuntime', '-lFortranDecimal']
+        return search_dirs
 
 
 class Open64FortranCompiler(FortranCompiler):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/mesonbuild/coredata.py 
new/meson-1.8.2/mesonbuild/coredata.py
--- old/meson-1.8.1/mesonbuild/coredata.py      2025-05-23 23:51:05.000000000 
+0200
+++ new/meson-1.8.2/mesonbuild/coredata.py      2025-06-09 21:45:16.000000000 
+0200
@@ -72,7 +72,7 @@
 #
 # Pip requires that RCs are named like this: '0.1.0.rc1'
 # But the corresponding Git tag needs to be '0.1.0rc1'
-version = '1.8.1'
+version = '1.8.2'
 
 # The next stable version when we are in dev. This is used to allow projects to
 # require meson version >=1.2.0 when using 1.1.99. FeatureNew won't warn when
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/run_meson_command_tests.py 
new/meson-1.8.2/run_meson_command_tests.py
--- old/meson-1.8.1/run_meson_command_tests.py  2025-05-23 23:51:05.000000000 
+0200
+++ new/meson-1.8.2/run_meson_command_tests.py  2025-06-09 21:45:16.000000000 
+0200
@@ -143,7 +143,7 @@
         os.environ['PATH'] = str(bindir) + os.pathsep + os.environ['PATH']
         self._run(python_command + ['setup.py', 'install', '--prefix', 
str(prefix)])
         # Fix importlib-metadata by appending all dirs in pylibdir
-        PYTHONPATHS = [pylibdir] + [x for x in pylibdir.iterdir()]
+        PYTHONPATHS = [pylibdir] + [x for x in pylibdir.iterdir() if 
x.name.endswith('.egg')]
         PYTHONPATHS = [os.path.join(str(x), '') for x in PYTHONPATHS]
         os.environ['PYTHONPATH'] = os.pathsep.join(PYTHONPATHS)
         # Check that all the files were installed correctly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/frameworks/15 
llvm/test.json" "new/meson-1.8.2/test cases/frameworks/15 llvm/test.json"
--- "old/meson-1.8.1/test cases/frameworks/15 llvm/test.json"   2025-05-23 
23:51:05.000000000 +0200
+++ "new/meson-1.8.2/test cases/frameworks/15 llvm/test.json"   2025-06-09 
21:45:16.000000000 +0200
@@ -2,9 +2,9 @@
   "matrix": {
     "options": {
       "method": [
-        { "val": "config-tool", "expect_skip_on_jobname": ["msys2-gcc"] },
-        { "val": "cmake", "expect_skip_on_jobname": ["msys2-gcc"] },
-        { "val": "combination", "expect_skip_on_jobname": ["msys2-gcc"] }
+        { "val": "config-tool" },
+        { "val": "cmake" },
+        { "val": "combination" }
       ],
       "link-static": [
         { "val": true, "expect_skip_on_jobname": ["arch", "opensuse", 
"linux-gentoo-gcc"] },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/frameworks/17 mpi/test.json" 
"new/meson-1.8.2/test cases/frameworks/17 mpi/test.json"
--- "old/meson-1.8.1/test cases/frameworks/17 mpi/test.json"    2025-05-23 
23:51:05.000000000 +0200
+++ "new/meson-1.8.2/test cases/frameworks/17 mpi/test.json"    2025-06-09 
21:45:16.000000000 +0200
@@ -2,10 +2,8 @@
   "matrix": {
     "options": {
       "method": [
-        { "val": "auto",
-          "expect_skip_on_jobname": ["ubuntu"] },
-        { "val": "pkg-config",
-          "expect_skip_on_jobname": ["ubuntu"] },
+        { "val": "auto" },
+        { "val": "pkg-config" },
         { "val": "config-tool",
           "expect_skip_on_jobname": ["fedora"] },
         {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/meson.build" "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/meson.build"
--- "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/meson.build"     1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/meson.build"     2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,22 @@
+project('demo', 'c', 'vala')
+
+gnome = import('gnome', required: false)
+
+if not gnome.found()
+  error('MESON_SKIP_TEST: gnome module not supported')
+endif
+
+deps = [
+  dependency('glib-2.0', version : '>=2.50'),
+  dependency('gobject-2.0'),
+  dependency('gtk+-3.0'),
+]
+
+subdir('subdir')
+
+executable(
+  'demo',
+  'test.vala',
+  resources,
+  dependencies: deps,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/TestBox.ui.in" "new/meson-1.8.2/test cases/vala/31 
generated ui file subdirectory/subdir/TestBox.ui.in"
--- "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/TestBox.ui.in"    1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/subdir/TestBox.ui.in"    2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk" version="3.0"/>
+  <template class="TestBox" parent="GtkBox">
+  </template>
+</interface>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/meson.build" "new/meson-1.8.2/test cases/vala/31 generated 
ui file subdirectory/subdir/meson.build"
--- "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/meson.build"      1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/subdir/meson.build"      2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,13 @@
+ui_tgt = custom_target(
+  input: 'TestBox.ui.in',
+  output:  'TestBox.ui',
+  command: [find_program('cat')],
+  feed: true,
+  capture: true,
+)
+
+resources = gnome.compile_resources('test-resources',
+  'test.gresource.xml',
+  c_name: 'test_res',
+  dependencies: ui_tgt,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/test.gresource.xml" "new/meson-1.8.2/test cases/vala/31 
generated ui file subdirectory/subdir/test.gresource.xml"
--- "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/subdir/test.gresource.xml"       1970-01-01 01:00:00.000000000 
+0100
+++ "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/subdir/test.gresource.xml"       2025-06-09 21:45:16.000000000 
+0200
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/com/mesonbuild/test">
+    <file>TestBox.ui</file>
+  </gresource>
+</gresources>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/test.vala" "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/test.vala"
--- "old/meson-1.8.1/test cases/vala/31 generated ui file 
subdirectory/test.vala"       1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/vala/31 generated ui file 
subdirectory/test.vala"       2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,7 @@
+[GtkTemplate (ui = "/com/mesonbuild/test/TestBox.ui")]
+class TestBox: Gtk.Box {
+}
+
+int main() {
+    return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/windows/25 embed 
manifest/DPIAware.manifest" "new/meson-1.8.2/test cases/windows/25 embed 
manifest/DPIAware.manifest"
--- "old/meson-1.8.1/test cases/windows/25 embed manifest/DPIAware.manifest"    
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/windows/25 embed manifest/DPIAware.manifest"    
2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" 
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
+  <asmv3:application>
+    <asmv3:windowsSettings>
+      <dpiAware 
xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings";>true</dpiAware>
+      <dpiAwareness 
xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings";>PerMonitorV2</dpiAwareness>
+    </asmv3:windowsSettings>
+  </asmv3:application>
+</assembly>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/windows/25 embed 
manifest/meson.build" "new/meson-1.8.2/test cases/windows/25 embed 
manifest/meson.build"
--- "old/meson-1.8.1/test cases/windows/25 embed manifest/meson.build"  
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/windows/25 embed manifest/meson.build"  
2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,11 @@
+project('can-manifests-be-embedded', 'c')
+
+cc = meson.get_compiler('c')
+
+if cc.get_linker_id() not in ['link', 'lld-link', 'xilink'] # 
cc.get_linker_argument_syntax() != 'link'
+  error('MESON_SKIP_TEST: test is only relevant for the Microsoft linker')
+endif
+
+# Ensure that the manifest can be embedded
+executable('prog', 'prog.c',
+  link_args: ['/MANIFEST:EMBED', '/MANIFESTINPUT:' + 
meson.project_source_root() / 'DPIAware.manifest'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-1.8.1/test cases/windows/25 embed 
manifest/prog.c" "new/meson-1.8.2/test cases/windows/25 embed manifest/prog.c"
--- "old/meson-1.8.1/test cases/windows/25 embed manifest/prog.c"       
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-1.8.2/test cases/windows/25 embed manifest/prog.c"       
2025-06-09 21:45:16.000000000 +0200
@@ -0,0 +1,3 @@
+int main(int argc, char *argv[]) {
+    return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-1.8.1/unittests/allplatformstests.py 
new/meson-1.8.2/unittests/allplatformstests.py
--- old/meson-1.8.1/unittests/allplatformstests.py      2025-05-23 
23:51:05.000000000 +0200
+++ new/meson-1.8.2/unittests/allplatformstests.py      2025-06-09 
21:45:16.000000000 +0200
@@ -1099,110 +1099,144 @@
         for lang, evar in langs:
             # Detect with evar and do sanity checks on that
             if evar in os.environ:
-                ecc = compiler_from_language(env, lang, MachineChoice.HOST)
-                self.assertTrue(ecc.version)
-                elinker = detect_static_linker(env, ecc)
-                # Pop it so we don't use it for the next detection
-                evalue = os.environ.pop(evar)
-                # Very rough/strict heuristics. Would never work for actual
-                # compiler detection, but should be ok for the tests.
-                ebase = os.path.basename(evalue)
-                if ebase.startswith('g') or ebase.endswith(('-gcc', '-g++')):
-                    self.assertIsInstance(ecc, gnu)
-                    self.assertIsInstance(elinker, ar)
-                elif 'clang-cl' in ebase:
-                    self.assertIsInstance(ecc, clangcl)
-                    self.assertIsInstance(elinker, lib)
-                elif 'clang' in ebase:
-                    self.assertIsInstance(ecc, clang)
-                    self.assertIsInstance(elinker, ar)
-                elif ebase.startswith('ic'):
-                    self.assertIsInstance(ecc, intel)
-                    self.assertIsInstance(elinker, ar)
-                elif ebase.startswith('cl'):
-                    self.assertIsInstance(ecc, msvc)
-                    self.assertIsInstance(elinker, lib)
-                else:
-                    raise AssertionError(f'Unknown compiler {evalue!r}')
-                # Check that we actually used the evalue correctly as the 
compiler
-                self.assertEqual(ecc.get_exelist(), split_args(evalue))
+                with self.subTest(lang=lang, evar=evar):
+                    try:
+                        ecc = compiler_from_language(env, lang, 
MachineChoice.HOST)
+                    except EnvironmentException:
+                        # always raise in ci, we expect to have a valid ObjC 
and ObjC++ compiler of some kind
+                        if is_ci():
+                            self.fail(f'Could not find a compiler for {lang}')
+                        if sys.version_info < (3, 11):
+                            continue
+                        self.skipTest(f'No valid compiler for {lang}.')
+                    finally:
+                        # Pop it so we don't use it for the next detection
+                        evalue = os.environ.pop(evar)
+                    assert ecc is not None, "Something went really wrong"
+                    self.assertTrue(ecc.version)
+                    elinker = detect_static_linker(env, ecc)
+                    # Very rough/strict heuristics. Would never work for actual
+                    # compiler detection, but should be ok for the tests.
+                    ebase = os.path.basename(evalue)
+                    if ebase.startswith('g') or ebase.endswith(('-gcc', 
'-g++')):
+                        self.assertIsInstance(ecc, gnu)
+                        self.assertIsInstance(elinker, ar)
+                    elif 'clang-cl' in ebase:
+                        self.assertIsInstance(ecc, clangcl)
+                        self.assertIsInstance(elinker, lib)
+                    elif 'clang' in ebase:
+                        self.assertIsInstance(ecc, clang)
+                        self.assertIsInstance(elinker, ar)
+                    elif ebase.startswith('ic'):
+                        self.assertIsInstance(ecc, intel)
+                        self.assertIsInstance(elinker, ar)
+                    elif ebase.startswith('cl'):
+                        self.assertIsInstance(ecc, msvc)
+                        self.assertIsInstance(elinker, lib)
+                    else:
+                        self.fail(f'Unknown compiler {evalue!r}')
+                    # Check that we actually used the evalue correctly as the 
compiler
+                    self.assertEqual(ecc.get_exelist(), split_args(evalue))
+
             # Do auto-detection of compiler based on platform, PATH, etc.
-            cc = compiler_from_language(env, lang, MachineChoice.HOST)
-            self.assertTrue(cc.version)
-            linker = detect_static_linker(env, cc)
-            # Check compiler type
-            if isinstance(cc, gnu):
-                self.assertIsInstance(linker, ar)
-                if is_osx():
-                    self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
-                elif is_sunos():
-                    self.assertIsInstance(cc.linker, 
(linkers.SolarisDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
-                else:
-                    self.assertIsInstance(cc.linker, 
linkers.GnuLikeDynamicLinkerMixin)
-            if isinstance(cc, clangcl):
-                self.assertIsInstance(linker, lib)
-                self.assertIsInstance(cc.linker, linkers.ClangClDynamicLinker)
-            if isinstance(cc, clang):
-                self.assertIsInstance(linker, ar)
-                if is_osx():
-                    self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
-                elif is_windows():
-                    # This is clang, not clang-cl. This can be either an
-                    # ld-like linker of link.exe-like linker (usually the
-                    # former for msys2, the latter otherwise)
-                    self.assertIsInstance(cc.linker, 
(linkers.MSVCDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
-                elif is_sunos():
-                    self.assertIsInstance(cc.linker, 
(linkers.SolarisDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
-                else:
-                    self.assertIsInstance(cc.linker, 
linkers.GnuLikeDynamicLinkerMixin)
-            if isinstance(cc, intel):
-                self.assertIsInstance(linker, ar)
-                if is_osx():
-                    self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
-                elif is_windows():
-                    self.assertIsInstance(cc.linker, 
linkers.XilinkDynamicLinker)
-                else:
-                    self.assertIsInstance(cc.linker, linkers.GnuDynamicLinker)
-            if isinstance(cc, msvc):
-                self.assertTrue(is_windows())
-                self.assertIsInstance(linker, lib)
-                self.assertEqual(cc.id, 'msvc')
-                self.assertTrue(hasattr(cc, 'is_64'))
-                self.assertIsInstance(cc.linker, linkers.MSVCDynamicLinker)
-                # If we're on Windows CI, we know what the compiler will be
-                if 'arch' in os.environ:
-                    if os.environ['arch'] == 'x64':
-                        self.assertTrue(cc.is_64)
+            with self.subTest(lang=lang):
+                try:
+                    cc = compiler_from_language(env, lang, MachineChoice.HOST)
+                except EnvironmentException:
+                    # always raise in ci, we expect to have a valid ObjC and 
ObjC++ compiler of some kind
+                    if is_ci():
+                        self.fail(f'Could not find a compiler for {lang}')
+                    if sys.version_info < (3, 11):
+                        continue
+                    self.skipTest(f'No valid compiler for {lang}.')
+                assert cc is not None, "Something went really wrong"
+                self.assertTrue(cc.version)
+                linker = detect_static_linker(env, cc)
+                # Check compiler type
+                if isinstance(cc, gnu):
+                    self.assertIsInstance(linker, ar)
+                    if is_osx():
+                        self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
+                    elif is_sunos():
+                        self.assertIsInstance(cc.linker, 
(linkers.SolarisDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
+                    else:
+                        self.assertIsInstance(cc.linker, 
linkers.GnuLikeDynamicLinkerMixin)
+                if isinstance(cc, clangcl):
+                    self.assertIsInstance(linker, lib)
+                    self.assertIsInstance(cc.linker, 
linkers.ClangClDynamicLinker)
+                if isinstance(cc, clang):
+                    self.assertIsInstance(linker, ar)
+                    if is_osx():
+                        self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
+                    elif is_windows():
+                        # This is clang, not clang-cl. This can be either an
+                        # ld-like linker of link.exe-like linker (usually the
+                        # former for msys2, the latter otherwise)
+                        self.assertIsInstance(cc.linker, 
(linkers.MSVCDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
+                    elif is_sunos():
+                        self.assertIsInstance(cc.linker, 
(linkers.SolarisDynamicLinker, linkers.GnuLikeDynamicLinkerMixin))
                     else:
-                        self.assertFalse(cc.is_64)
+                        self.assertIsInstance(cc.linker, 
linkers.GnuLikeDynamicLinkerMixin)
+                if isinstance(cc, intel):
+                    self.assertIsInstance(linker, ar)
+                    if is_osx():
+                        self.assertIsInstance(cc.linker, 
linkers.AppleDynamicLinker)
+                    elif is_windows():
+                        self.assertIsInstance(cc.linker, 
linkers.XilinkDynamicLinker)
+                    else:
+                        self.assertIsInstance(cc.linker, 
linkers.GnuDynamicLinker)
+                if isinstance(cc, msvc):
+                    self.assertTrue(is_windows())
+                    self.assertIsInstance(linker, lib)
+                    self.assertEqual(cc.id, 'msvc')
+                    self.assertTrue(hasattr(cc, 'is_64'))
+                    self.assertIsInstance(cc.linker, linkers.MSVCDynamicLinker)
+                    # If we're on Windows CI, we know what the compiler will be
+                    if 'arch' in os.environ:
+                        if os.environ['arch'] == 'x64':
+                            self.assertTrue(cc.is_64)
+                        else:
+                            self.assertFalse(cc.is_64)
+
             # Set evar ourselves to a wrapper script that just calls the same
             # exelist + some argument. This is meant to test that setting
             # something like `ccache gcc -pipe` or `distcc ccache gcc` works.
-            wrapper = os.path.join(testdir, 'compiler wrapper.py')
-            wrappercc = python_command + [wrapper] + cc.get_exelist() + 
['-DSOME_ARG']
-            os.environ[evar] = ' '.join(quote_arg(w) for w in wrappercc)
-
-            # Check static linker too
-            wrapperlinker = python_command + [wrapper] + linker.get_exelist() 
+ linker.get_always_args()
-            os.environ['AR'] = ' '.join(quote_arg(w) for w in wrapperlinker)
-
-            # Need a new env to re-run environment loading
-            env = get_fake_env(testdir, self.builddir, self.prefix)
-
-            wcc = compiler_from_language(env, lang, MachineChoice.HOST)
-            wlinker = detect_static_linker(env, wcc)
-            # Pop it so we don't use it for the next detection
-            os.environ.pop('AR')
-            # Must be the same type since it's a wrapper around the same 
exelist
-            self.assertIs(type(cc), type(wcc))
-            self.assertIs(type(linker), type(wlinker))
-            # Ensure that the exelist is correct
-            self.assertEqual(wcc.get_exelist(), wrappercc)
-            self.assertEqual(wlinker.get_exelist(), wrapperlinker)
-            # Ensure that the version detection worked correctly
-            self.assertEqual(cc.version, wcc.version)
-            if hasattr(cc, 'is_64'):
-                self.assertEqual(cc.is_64, wcc.is_64)
+            with self.subTest('wrapper script', lang=lang):
+                wrapper = os.path.join(testdir, 'compiler wrapper.py')
+                wrappercc = python_command + [wrapper] + cc.get_exelist() + 
['-DSOME_ARG']
+                os.environ[evar] = ' '.join(quote_arg(w) for w in wrappercc)
+
+                # Check static linker too
+                wrapperlinker = python_command + [wrapper] + 
linker.get_exelist() + linker.get_always_args()
+                os.environ['AR'] = ' '.join(quote_arg(w) for w in 
wrapperlinker)
+
+                # Need a new env to re-run environment loading
+                env = get_fake_env(testdir, self.builddir, self.prefix)
+
+                try:
+                    wcc = compiler_from_language(env, lang, MachineChoice.HOST)
+                except EnvironmentException:
+                    # always raise in ci, we expect to have a valid ObjC and 
ObjC++ compiler of some kind
+                    if is_ci():
+                        self.fail(f'Could not find a compiler for {lang}')
+                    if sys.version_info < (3, 11):
+                        continue
+                    self.skipTest(f'No valid compiler for {lang}.')
+                wlinker = detect_static_linker(env, wcc)
+                del os.environ['AR']
+
+                # Must be the same type since it's a wrapper around the same 
exelist
+                self.assertIs(type(cc), type(wcc))
+                self.assertIs(type(linker), type(wlinker))
+
+                # Ensure that the exelist is correct
+                self.assertEqual(wcc.get_exelist(), wrappercc)
+                self.assertEqual(wlinker.get_exelist(), wrapperlinker)
+
+                # Ensure that the version detection worked correctly
+                self.assertEqual(cc.version, wcc.version)
+                if hasattr(cc, 'is_64'):
+                    self.assertEqual(cc.is_64, wcc.is_64)
 
     def test_always_prefer_c_compiler_for_asm(self):
         testdir = os.path.join(self.common_test_dir, '133 c cpp and asm')

Reply via email to