diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2019-01-31 10:18:14 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2019-01-31 15:22:59 +0000 |
commit | ca4edbec6616b30256dcbc81a2d5d8e2e82cc202 (patch) | |
tree | f8c0215ad19e1e6c41a912b4ea70dd4c8d4c7c68 | |
parent | 645002cd43eb24051504d7dc60ea3ac961d16121 (diff) |
CMake: pro2cmake.py: Add a way to debug merges of scopes
Generate debug output whenever a qmake scope with a variable
'PRO2CMAKE_MERGE_DEBUG' is involved in a scope merge.
Change-Id: I0ad94b881db9930de689c199adbac084efe6c03b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rwxr-xr-x | util/cmake/pro2cmake.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py index aa993f5a62..88869a8346 100755 --- a/util/cmake/pro2cmake.py +++ b/util/cmake/pro2cmake.py @@ -233,13 +233,22 @@ class Scope(object): self._total_condition = None # type: typing.Optional[str] def __repr__(self): - return '{}:{}:{}'.format(self._basedir, self._file, - self._condition or '<NONE>') + debug_mark = ' [MERGE_DEBUG]' if self.merge_debug else '' + return '{}:{}:{}{}'.format(self._basedir, self._file, + self._condition or '<NONE>', debug_mark) def reset_visited_keys(self): self._visited_keys = set() def merge(self, other: 'Scope') -> None: + assert self != other + merge_debug = self.merge_debug or other.merge_debug + if merge_debug: + print('..... [MERGE_DEBUG]: Merging scope {}:'.format(other)) + other.dump(indent=1) + print('..... [MERGE_DEBUG]: ... into scope {}:'.format(self)) + self.dump(indent=1) + for c in other._children: self._add_child(c) @@ -249,6 +258,15 @@ class Scope(object): else: self._operations[key] = other._operations[key] + if merge_debug: + print('..... [MERGE_DEBUG]: Result scope {}:'.format(self)) + self.dump(indent=1) + print('..... [MERGE_DEBUG]: <<END OF MERGE>>') + + @property + def merge_debug(self) -> bool: + return self.getString('PRO2CMAKE_MERGE_DEBUG', None) != None + @property def parent(self) -> typing.Optional[Scope]: return self._parent |