pkglistgen: Support a recommends flag in the OUTPUT

This commit is contained in:
Stephan Kulow 2018-11-12 11:00:20 +01:00
parent 3310ec0c63
commit a47ffacfc1

View File

@ -154,7 +154,7 @@ class Group(object):
self.ignore(g) self.ignore(g)
self.ignored.add(without) 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 """ """ base: list of base groups or None """
solved = dict() solved = dict()
@ -167,8 +167,7 @@ class Group(object):
for arch in self.pkglist.filtered_architectures: for arch in self.pkglist.filtered_architectures:
pool = self.pkglist._prepare_pool(arch) pool = self.pkglist._prepare_pool(arch)
solver = pool.Solver() solver = pool.Solver()
if ignore_recommended: solver.set_flag(solver.SOLVER_FLAG_IGNORE_RECOMMENDED, not use_recommends)
solver.set_flag(solver.SOLVER_FLAG_IGNORE_RECOMMENDED, 1)
# pool.set_debuglevel(10) # pool.set_debuglevel(10)
suggested = [] suggested = []
@ -419,7 +418,6 @@ class PkgListGen(ToolBase.ToolBase):
self.output_dir = '.' self.output_dir = '.'
self.lockjobs = dict() self.lockjobs = dict()
self.ignore_broken = False self.ignore_broken = False
self.ignore_recommended = False
self.include_suggested = False self.include_suggested = False
self.unwanted = set() self.unwanted = set()
self.output = None self.output = None
@ -507,11 +505,11 @@ class PkgListGen(ToolBase.ToolBase):
root = ET.parse(fh).getroot() root = ET.parse(fh).getroot()
self._parse_product(root) self._parse_product(root)
def solve_module(self, groupname, includes, excludes): def solve_module(self, groupname, includes, excludes, use_recommends):
g = self.groups[groupname] g = self.groups[groupname]
for i in includes: for i in includes:
g.inherit(self.groups[i]) g.inherit(self.groups[i])
g.solve(self.ignore_recommended, self.include_suggested) g.solve(use_recommends, self.include_suggested)
for e in excludes: for e in excludes:
g.ignore(self.groups[e]) g.ignore(self.groups[e])
@ -1093,8 +1091,7 @@ class CommandLineInterface(ToolBase.CommandLineInterface):
if opts.ignore_unresolvable: if opts.ignore_unresolvable:
self.tool.ignore_broken = True self.tool.ignore_broken = True
if opts.ignore_recommended: global_use_recommends = not opts.ignore_recommended
self.tool.ignore_recommended = True
if opts.include_suggested: if opts.include_suggested:
if opts.ignore_recommended: if opts.ignore_recommended:
raise cmdln.CmdlnUserError("--ignore-recommended and --include-suggested don't work together") raise cmdln.CmdlnUserError("--ignore-recommended and --include-suggested don't work together")
@ -1118,7 +1115,8 @@ class CommandLineInterface(ToolBase.CommandLineInterface):
settings = {} settings = {}
includes = settings.get('includes', []) includes = settings.get('includes', [])
excludes = settings.get('excludes', []) 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 = self.tool.groups[groupname]
g.conflicts = settings.get('conflicts', []) g.conflicts = settings.get('conflicts', [])
g.default_support_status = settings.get('default-support', 'unsupported') g.default_support_status = settings.get('default-support', 'unsupported')
@ -1133,7 +1131,7 @@ class CommandLineInterface(ToolBase.CommandLineInterface):
if overlap: if overlap:
ignores = [x.name for x in overlap.ignored] 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['*']) overlapped = set(overlap.solved_packages['*'])
for arch in self.tool.filtered_architectures: for arch in self.tool.filtered_architectures:
overlapped |= set(overlap.solved_packages[arch]) overlapped |= set(overlap.solved_packages[arch])