diff options
| author | Charles Brunet <charles.brunet@optelgroup.com> | 2025-01-07 10:12:01 -0500 |
|---|---|---|
| committer | Jussi Pakkanen <jpakkane@gmail.com> | 2025-01-07 20:43:28 +0200 |
| commit | b7260e803151654d0ca83f033defeaa20e07bb68 (patch) | |
| tree | 3698228062d648da26e8a5ed401f004ddc04129d | |
| parent | a4cb40bde488cc548e39fbd2e536e25a833f2484 (diff) | |
| download | meson-b7260e803151654d0ca83f033defeaa20e07bb68.tar.gz | |
Fix internal dependency names
Internal dependency names were generated from object id. This cause
problem when objects are copied, especially when generating partial
dependency, or when extracting shared or static dependencies from
both_library, because dependency names in target and dependencies
introspection files become unrelated.
This fixes that by generating the dependency name from the internal id,
and by using that base name when generating partial dependencies.
| -rw-r--r-- | mesonbuild/build.py | 3 | ||||
| -rw-r--r-- | mesonbuild/dependencies/base.py | 9 |
2 files changed, 8 insertions, 4 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 35f1f24a4..ca4e5d5a7 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1364,7 +1364,8 @@ class BuildTarget(Target): [], dep.get_compile_args(), dep.get_link_args(), - [], [], [], [], [], {}, [], [], []) + [], [], [], [], [], {}, [], [], [], + dep.name) self.external_deps.append(extpart) # Deps of deps. self.add_deps(dep.ext_deps) diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index ed6138a7e..9c05419b9 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -111,7 +111,7 @@ class Dependency(HoldableObject): # This allows two Dependencies to be compared even after being copied. # The purpose is to allow the name to be changed, but still have a proper comparison self._id = uuid.uuid4().int - self.name = f'dep{id(self)}' + self.name = f'dep{self._id}' self.version: T.Optional[str] = None self.language: T.Optional[str] = None # None means C-like self.is_found = False @@ -278,7 +278,8 @@ class InternalDependency(Dependency): extra_files: T.Sequence[mesonlib.File], ext_deps: T.List[Dependency], variables: T.Dict[str, str], d_module_versions: T.List[T.Union[str, int]], d_import_dirs: T.List['IncludeDirs'], - objects: T.List['ExtractedObjects']): + objects: T.List['ExtractedObjects'], + name: T.Optional[str] = None): super().__init__(DependencyTypeName('internal'), {}) self.version = version self.is_found = True @@ -296,6 +297,8 @@ class InternalDependency(Dependency): self.d_features['versions'] = d_module_versions if d_import_dirs: self.d_features['import_dirs'] = d_import_dirs + if name: + self.name = name def __deepcopy__(self, memo: T.Dict[int, 'InternalDependency']) -> 'InternalDependency': result = self.__class__.__new__(self.__class__) @@ -335,7 +338,7 @@ class InternalDependency(Dependency): return InternalDependency( self.version, final_includes, final_compile_args, final_link_args, final_libraries, final_whole_libraries, - final_sources, final_extra_files, final_deps, self.variables, [], [], []) + final_sources, final_extra_files, final_deps, self.variables, [], [], [], self.name) def get_include_dirs(self) -> T.List['IncludeDirs']: return self.include_directories |
