+def dependency_tree(directory):
+ r"""
+ Create a dependency tree for all salome extensions
+ installed in the given directory.
+
+ Args:
+ directory - the given directory
+
+ Returns:
+ A dictionary like that for extensions A, B, C, D and E:
+ A
+ /|\
+ / B D
+ \/ \/
+ C E
+
+ { 'A': ['B', 'C', 'D'], 'B': ['C', 'E'], 'C': [], 'D': ['E'], 'E': [] }.
+ """
+
+ logger.debug('Build dependency tree for extensions in %s', directory)
+
+ tree = {}
+ salomexd_files = list_files_ext(directory, DFILE_EXT)
+ logger.debug('There are %s extensions in %s', len(salomexd_files), directory)
+
+ for salomexd_file in salomexd_files:
+ ext_name, _ = os.path.splitext(os.path.basename(salomexd_file))
+
+ logger.debug('Check dependencies for %s...', salomexd_file)
+ salomexd_content = read_salomexd(salomexd_file)
+
+ if EXTDEPENDSON_KEY in salomexd_content:
+ depends_on = salomexd_content[EXTDEPENDSON_KEY]
+ logger.debug('List of dependencies: %s', depends_on)
+
+ tree[ext_name] = depends_on
+
+ logger.debug('Dependency tree: %s', tree)
+ return tree
+
+