From 1ae428cbb3200375d572e1b684241d760d1577a7 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 7 Oct 2025 16:06:00 +0200 Subject: environment, backends: remove is_* methods They are duplicates of what is already in compilers and have no state. Just use compilers. Fixes: #15082 Signed-off-by: Paolo Bonzini --- mesonbuild/backend/backends.py | 7 ++++--- mesonbuild/backend/ninjabackend.py | 34 +++++++++++++++++----------------- mesonbuild/backend/vs2010backend.py | 12 ++++++------ mesonbuild/backend/xcodebackend.py | 5 +++-- mesonbuild/environment.py | 30 ------------------------------ 5 files changed, 30 insertions(+), 58 deletions(-) diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 19f856b68..5be2ade27 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -24,6 +24,7 @@ from .. import dependencies from .. import programs from .. import mesonlib from .. import mlog +from .. import compilers from ..compilers import detect, lang_suffixes from ..mesonlib import ( File, MachineChoice, MesonException, MesonBugException, OrderedSet, @@ -812,9 +813,9 @@ class Backend: # Filter out headers and all non-source files sources: T.List['FileOrString'] = [] for s in raw_sources: - if self.environment.is_source(s): + if compilers.is_source(s): sources.append(s) - elif self.environment.is_object(s): + elif compilers.is_object(s): result.append(s.relative_name()) # MSVC generate an object file for PCH @@ -1393,7 +1394,7 @@ class Backend: def get_custom_target_provided_by_generated_source(self, generated_source: build.CustomTarget) -> 'ImmutableListProtocol[str]': libs: T.List[str] = [] for f in generated_source.get_outputs(): - if self.environment.is_library(f): + if compilers.is_library(f): libs.append(os.path.join(self.get_target_dir(generated_source), f)) return libs diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 13f4cdc81..769de93ec 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -746,7 +746,7 @@ class NinjaBackend(backends.Backend): if isinstance(genlist, (build.CustomTarget, build.CustomTargetIndex)): continue for src in genlist.get_outputs(): - if self.environment.is_header(src): + if compilers.is_header(src): header_deps.append(self.get_target_generated_dir(target, genlist, src)) if target.vala_header: vala_header = File.from_built_file(self.get_target_dir(target), target.vala_header) @@ -788,8 +788,8 @@ class NinjaBackend(backends.Backend): def get_target_source_can_unity(self, target, source: FileOrString) -> bool: if isinstance(source, File): source = source.fname - if self.environment.is_llvm_ir(source) or \ - self.environment.is_assembly(source): + if compilers.is_llvm_ir(source) or \ + compilers.is_assembly(source): return False suffix = os.path.splitext(source)[1][1:].lower() for lang in backends.LANGS_CANT_UNITY: @@ -964,16 +964,16 @@ class NinjaBackend(backends.Backend): generated_source_files: T.List[File] = [] for rel_src in generated_sources.keys(): raw_src = File.from_built_relative(rel_src) - if self.environment.is_source(rel_src): + if compilers.is_source(rel_src): if is_unity and self.get_target_source_can_unity(target, rel_src): unity_deps.append(raw_src) abs_src = os.path.join(self.environment.get_build_dir(), rel_src) unity_src.append(abs_src) else: generated_source_files.append(raw_src) - elif self.environment.is_object(rel_src): + elif compilers.is_object(rel_src): obj_list.append(rel_src) - elif self.environment.is_library(rel_src) or modules.is_module_library(rel_src): + elif compilers.is_library(rel_src) or modules.is_module_library(rel_src): pass elif is_compile_target: generated_source_files.append(raw_src) @@ -991,9 +991,9 @@ class NinjaBackend(backends.Backend): # this target. We create the Ninja build file elements for this here # because we need `header_deps` to be fully generated in the above loop. for src in generated_source_files: - if not self.environment.is_separate_compile(src): + if not compilers.is_separate_compile(src): continue - if self.environment.is_llvm_ir(src): + if compilers.is_llvm_ir(src): o, s = self.generate_llvm_ir_compile(target, src) else: o, s = self.generate_single_compile(target, src, True, order_deps=header_deps) @@ -1041,7 +1041,7 @@ class NinjaBackend(backends.Backend): # compile we get precise dependency info from dep files. # This should work in all cases. If it does not, then just # move them from orderdeps to proper deps. - if self.environment.is_header(src): + if compilers.is_header(src): header_deps.append(raw_src) else: transpiled_source_files.append(raw_src) @@ -1051,11 +1051,11 @@ class NinjaBackend(backends.Backend): # Generate compile targets for all the preexisting sources for this target for src in target_sources.values(): - if not self.environment.is_separate_compile(src): + if not compilers.is_separate_compile(src): continue - if self.environment.is_header(src) and not is_compile_target: + if compilers.is_header(src) and not is_compile_target: continue - if self.environment.is_llvm_ir(src): + if compilers.is_llvm_ir(src): o, s = self.generate_llvm_ir_compile(target, src) obj_list.append(o) elif is_unity and self.get_target_source_can_unity(target, src): @@ -1872,9 +1872,9 @@ class NinjaBackend(backends.Backend): generated_sources[ssrc] = mesonlib.File.from_built_file(gen.get_subdir(), ssrc) # Following logic in L883-900 where we determine whether to add generated source # as a header(order-only) dep to the .so compilation rule - if not self.environment.is_source(ssrc) and \ - not self.environment.is_object(ssrc) and \ - not self.environment.is_library(ssrc) and \ + if not compilers.is_source(ssrc) and \ + not compilers.is_object(ssrc) and \ + not compilers.is_library(ssrc) and \ not modules.is_module_library(ssrc): header_deps.append(ssrc) for source in pyx_sources: @@ -2310,7 +2310,7 @@ class NinjaBackend(backends.Backend): abss = os.path.normpath(os.path.join(self.environment.get_build_dir(), rels)) relsrc.append(rels) abssrc.append(abss) - elif self.environment.is_header(i): + elif compilers.is_header(i): relh = i.rel_to_builddir(self.build_to_src) absh = os.path.normpath(os.path.join(self.environment.get_build_dir(), relh)) abs_headers.append(absh) @@ -3560,7 +3560,7 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485''')) mlog.warning("Generated linker command has '-l' argument without following library name") break libs.add(lib) - elif os.path.isabs(item) and self.environment.is_library(item) and os.path.isfile(item): + elif os.path.isabs(item) and compilers.is_library(item) and os.path.isfile(item): absolute_libs.append(item) guessed_dependencies = [] diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index be88eb7fd..2c79be557 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -569,16 +569,16 @@ class Vs2010Backend(backends.Backend): objects = [] languages = [] for i in srclist: - if self.environment.is_header(i): + if compilers.is_header(i): headers.append(i) - elif self.environment.is_object(i): + elif compilers.is_object(i): objects.append(i) - elif self.environment.is_source(i): + elif compilers.is_source(i): sources.append(i) lang = self.lang_from_source_file(i) if lang not in languages: languages.append(lang) - elif self.environment.is_library(i): + elif compilers.is_library(i): pass else: # Everything that is not an object or source file is considered a header. @@ -1481,13 +1481,13 @@ class Vs2010Backend(backends.Backend): # Unfortunately, we can't use self.object_filename_from_source() for gen in l.genlist: for src in gen.get_outputs(): - if self.environment.is_source(src): + if compilers.is_source(src): path = self.get_target_generated_dir(t, gen, src) gen_src_ext = '.' + os.path.splitext(path)[1][1:] extra_link_args.append(path[:-len(gen_src_ext)] + '.obj') for src in l.srclist: - if self.environment.is_source(src): + if compilers.is_source(src): target_private_dir = self.relpath(self.get_target_private_dir(t), self.get_target_dir(t)) rel_obj = self.object_filename_from_source(t, compiler, src, target_private_dir) diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py index 7c040a613..87e1309a6 100644 --- a/mesonbuild/backend/xcodebackend.py +++ b/mesonbuild/backend/xcodebackend.py @@ -8,6 +8,7 @@ import typing as T from . import backends from .. import build +from .. import compilers from .. import mesonlib from .. import mlog from ..arglist import CompilerArgs @@ -1512,7 +1513,7 @@ class XCodeBackend(backends.Backend): phase_dict.add_item('files', file_arr) for s in self.build_targets[name].sources: s = os.path.join(s.subdir, s.fname) - if not self.environment.is_header(s): + if not compilers.is_header(s): file_arr.add_item(self.buildfile_ids[(name, s)], os.path.join(self.environment.get_source_dir(), s)) generator_id = 0 for gt in t.generated: @@ -1661,7 +1662,7 @@ class XCodeBackend(backends.Backend): # Swift can import declarations from C-based code using bridging headers. # There can only be one header, and it must be included as a source file. for i in target.get_sources(): - if self.environment.is_header(i) and is_swift: + if compilers.is_header(i) and is_swift: relh = i.rel_to_builddir(self.build_to_src) bridging_header = os.path.normpath(os.path.join(self.environment.get_build_dir(), relh)) break diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index dd6938366..970f012b0 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -28,15 +28,6 @@ from .envconfig import ( BinaryTable, MachineInfo, Properties, known_cpu_families, CMakeVariables, ) from . import compilers -from .compilers import ( - is_assembly, - is_header, - is_library, - is_llvm_ir, - is_object, - is_separate_compile, - is_source, -) from mesonbuild import envconfig @@ -934,27 +925,6 @@ class Environment: cmd.insert(1, '-u') return cmd - def is_header(self, fname: 'mesonlib.FileOrString') -> bool: - return is_header(fname) - - def is_source(self, fname: 'mesonlib.FileOrString') -> bool: - return is_source(fname) - - def is_assembly(self, fname: 'mesonlib.FileOrString') -> bool: - return is_assembly(fname) - - def is_separate_compile(self, fname: 'mesonlib.FileOrString') -> bool: - return is_separate_compile(fname) - - def is_llvm_ir(self, fname: 'mesonlib.FileOrString') -> bool: - return is_llvm_ir(fname) - - def is_object(self, fname: 'mesonlib.FileOrString') -> bool: - return is_object(fname) - - def is_library(self, fname: mesonlib.FileOrString) -> bool: - return is_library(fname) - def lookup_binary_entry(self, for_machine: MachineChoice, name: str) -> T.Optional[T.List[str]]: return self.binaries[for_machine].lookup_entry(name) -- cgit v1.2.3