Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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]