def _setup_totest(self, project): fallback_project = 'openSUSE:%s' % project if project not in self.totest_class and fallback_project in self.totest_class: project = fallback_project project_base = project.split(':')[0] if not self.options.openqa_server: self.options.openqa_server = self.openqa_server[project_base] if not self.options.obs_api_url: self.options.obs_api_url = self.api_url[project_base] Config(project) if project not in self.totest_class: msg = 'Project %s not recognized. Possible values [%s]' % ( project, ', '.join(self.totest_class)) raise cmdln.CmdlnUserError(msg) if self.options.release: release = True elif self.options.norelease: release = False else: release = (project_base == 'openSUSE') return self.totest_class[project](project, self.options.dry, not release, self.options.obs_api_url, self.options.openqa_server)
def _setup_totest(self, project): Config('openSUSE:%s' % project) if project not in self.totest_class: msg = 'Project %s not recognized. Possible values [%s]' % (project, ', '.join(self.totest_class)) raise cmdln.CmdlnUserError(msg) return self.totest_class[project](project, self.options.dry)
def _setup_totest(self, project): fallback_project = 'openSUSE:%s' % project if project not in self.totest_class and fallback_project in self.totest_class: project = fallback_project Config(project) if project not in self.totest_class: msg = 'Project %s not recognized. Possible values [%s]' % ( project, ', '.join(self.totest_class)) raise cmdln.CmdlnUserError(msg) return self.totest_class[project](project, self.options.dry, self.options.obs_api_url, self.options.openqa_server)
def do_solve(self, subcmd, opts): """${cmd_name}: Solve groups ${cmd_usage} ${cmd_option_list} """ self.tool.load_all_groups() if not self.tool.output: logger.error('OUTPUT not defined') return if opts.ignore_unresolvable: self.tool.ignore_broken = True if opts.ignore_recommended: self.tool.ignore_recommended = True if opts.include_suggested: if opts.ignore_recommended: raise cmdln.CmdlnUserError( "--ignore-recommended and --include-suggested don't work together" ) self.tool.include_suggested = True if opts.locale: for l in opts.locale: self.tool.locales |= set(l.split(',')) if opts.locales_from: with open(os.path.join(self.tool.input_dir, opts.locales_from), 'r') as fh: root = ET.parse(fh).getroot() self.tool.locales |= set([ lang.text for lang in root.findall(".//linguas/language") ]) modules = [] # the yml parser makes an array out of everything, so # we loop a bit more than what we support for group in self.tool.output: groupname = group.keys()[0] settings = group[groupname] includes = settings.get('includes', []) excludes = settings.get('excludes', []) self.tool.solve_module(groupname, includes, excludes) g = self.tool.groups[groupname] g.conflicts = settings.get('conflicts', []) modules.append(g) # not defined for openSUSE overlap = self.tool.groups.get('overlap') for module in modules: module.check_dups(modules, overlap) module.collect_devel_packages(modules) module.filter_already_selected(modules) if overlap: ignores = [x.name for x in overlap.ignored] self.tool.solve_module(overlap.name, [], ignores) overlapped = set(overlap.solved_packages['*']) for arch in overlap.architectures: overlapped |= set(overlap.solved_packages[arch]) for module in modules: if module.name == 'overlap': continue for arch in ['*'] + module.architectures: for p in overlapped: module.solved_packages[arch].pop(p, None) self.tool._collect_unsorted_packages(modules) self.tool._write_all_groups()