cmake dependency: avoid setting property to None as a workaround

It's an improper object model, but was used to signal to a subclass that
self.traceparser did not exist. However, since it is always initialized
from self.cmakebin, we can just check that instead.
pull/12839/head
Eli Schwartz 11 months ago
parent 07c051ed27
commit e184ef71e5
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
  1. 12
      mesonbuild/dependencies/cmake.py
  2. 2
      mesonbuild/dependencies/dev.py

@ -94,10 +94,6 @@ class CMakeDependency(ExternalDependency):
super().__init__(DependencyTypeName('cmake'), environment, kwargs, language=language)
self.name = name
self.is_libtool = False
# Store a copy of the CMake path on the object itself so it is
# stored in the pickled coredata and recovered.
self.cmakebin: T.Optional[CMakeExecutor] = None
self.cmakeinfo: T.Optional[CMakeInfo] = None
# Where all CMake "build dirs" are located
self.cmake_root_dir = environment.scratch_dir
@ -105,14 +101,12 @@ class CMakeDependency(ExternalDependency):
# T.List of successfully found modules
self.found_modules: T.List[str] = []
# Initialize with None before the first return to avoid
# AttributeError exceptions in derived classes
self.traceparser: T.Optional[CMakeTraceParser] = None
# Store a copy of the CMake path on the object itself so it is
# stored in the pickled coredata and recovered.
#
# TODO further evaluate always using MachineChoice.BUILD
self.cmakebin = CMakeExecutor(environment, CMakeDependency.class_cmake_version, self.for_machine, silent=self.silent)
if not self.cmakebin.found():
self.cmakebin = None
msg = f'CMake binary for machine {self.for_machine} not found. Giving up.'
if self.required:
raise DependencyException(msg)

@ -407,7 +407,7 @@ class LLVMDependencyCMake(CMakeDependency):
super().__init__(name, env, kwargs, language='cpp', force_use_global_compilers=True)
if self.traceparser is None:
if not self.cmakebin.found():
return
if not self.is_found:

Loading…
Cancel
Save