def assemble(self, sandbox): commands = [] splits = {} for dep in self.dependencies(Scope.BUILD): result = dep.stage_artifact(sandbox, path='files') bstdata = dep.get_public_data('bst') commands = dep.node_get_member(bstdata, list, 'integration-commands', []) for i in range(len(commands)): cmd = self.node_subst_list_element(bstdata, 'integration-commands', [i]) commands.append(cmd) splits_rules = bstdata.get('split-rules') for domain, rules in dep.node_items(splits_rules): abspaths = [] for path in result.files_written: abspaths.append(os.path.join(os.sep, path)) for rule in rules: for path in glob(abspaths, rule): if domain not in splits: splits[domain] = [] splits[domain].append(path) metadata = {'split-rules': splits, 'integration-commands': commands} with open(os.path.join(sandbox.get_directory(), 'metadata'), 'w') as file: json.dump(metadata, file) return os.sep
def _find_base_dir(self, tar, pattern): paths = self._list_tar_paths(tar) matches = sorted(list(utils.glob(paths, pattern))) if not matches: raise SourceError("{}: Could not find base directory matching pattern: {}".format(self, pattern)) return matches[0]