From a47ffacfc1320af553c0bca7bbe189ceaead9a88 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Mon, 12 Nov 2018 11:00:20 +0100 Subject: [PATCH] pkglistgen: Support a recommends flag in the OUTPUT --- pkglistgen.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pkglistgen.py b/pkglistgen.py index 446c5d2f..f628ae0a 100755 --- a/pkglistgen.py +++ b/pkglistgen.py @@ -154,7 +154,7 @@ class Group(object): self.ignore(g) self.ignored.add(without) - def solve(self, ignore_recommended=False, include_suggested=False): + def solve(self, use_recommends=False, include_suggested=False): """ base: list of base groups or None """ solved = dict() @@ -167,8 +167,7 @@ class Group(object): for arch in self.pkglist.filtered_architectures: pool = self.pkglist._prepare_pool(arch) solver = pool.Solver() - if ignore_recommended: - solver.set_flag(solver.SOLVER_FLAG_IGNORE_RECOMMENDED, 1) + solver.set_flag(solver.SOLVER_FLAG_IGNORE_RECOMMENDED, not use_recommends) # pool.set_debuglevel(10) suggested = [] @@ -419,7 +418,6 @@ class PkgListGen(ToolBase.ToolBase): self.output_dir = '.' self.lockjobs = dict() self.ignore_broken = False - self.ignore_recommended = False self.include_suggested = False self.unwanted = set() self.output = None @@ -507,11 +505,11 @@ class PkgListGen(ToolBase.ToolBase): root = ET.parse(fh).getroot() self._parse_product(root) - def solve_module(self, groupname, includes, excludes): + def solve_module(self, groupname, includes, excludes, use_recommends): g = self.groups[groupname] for i in includes: g.inherit(self.groups[i]) - g.solve(self.ignore_recommended, self.include_suggested) + g.solve(use_recommends, self.include_suggested) for e in excludes: g.ignore(self.groups[e]) @@ -1093,8 +1091,7 @@ class CommandLineInterface(ToolBase.CommandLineInterface): if opts.ignore_unresolvable: self.tool.ignore_broken = True - if opts.ignore_recommended: - self.tool.ignore_recommended = True + global_use_recommends = not opts.ignore_recommended if opts.include_suggested: if opts.ignore_recommended: raise cmdln.CmdlnUserError("--ignore-recommended and --include-suggested don't work together") @@ -1118,7 +1115,8 @@ class CommandLineInterface(ToolBase.CommandLineInterface): settings = {} includes = settings.get('includes', []) excludes = settings.get('excludes', []) - self.tool.solve_module(groupname, includes, excludes) + use_recommends = settings.get('recommends', global_use_recommends) + self.tool.solve_module(groupname, includes, excludes, use_recommends) g = self.tool.groups[groupname] g.conflicts = settings.get('conflicts', []) g.default_support_status = settings.get('default-support', 'unsupported') @@ -1133,7 +1131,7 @@ class CommandLineInterface(ToolBase.CommandLineInterface): if overlap: ignores = [x.name for x in overlap.ignored] - self.tool.solve_module(overlap.name, [], ignores) + self.tool.solve_module(overlap.name, [], ignores, use_recommends=False) overlapped = set(overlap.solved_packages['*']) for arch in self.tool.filtered_architectures: overlapped |= set(overlap.solved_packages[arch])