mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-06-06 15:21:38 +00:00
use uvname for dependencies between excuses
This commit is contained in:
parent
8369d6b0e7
commit
c410435859
@ -787,12 +787,11 @@ class Britney(object):
|
|||||||
# write excuses to the output file
|
# write excuses to the output file
|
||||||
if not self.options.dry_run:
|
if not self.options.dry_run:
|
||||||
self.logger.info("> Writing Excuses to %s", self.options.excuses_output)
|
self.logger.info("> Writing Excuses to %s", self.options.excuses_output)
|
||||||
sorted_excuses = sorted(excuses.values(), key=lambda x: x.sortkey())
|
write_excuses(excuses, self.options.excuses_output,
|
||||||
write_excuses(sorted_excuses, self.options.excuses_output,
|
|
||||||
output_format="legacy-html")
|
output_format="legacy-html")
|
||||||
if hasattr(self.options, 'excuses_yaml_output'):
|
if hasattr(self.options, 'excuses_yaml_output'):
|
||||||
self.logger.info("> Writing YAML Excuses to %s", self.options.excuses_yaml_output)
|
self.logger.info("> Writing YAML Excuses to %s", self.options.excuses_yaml_output)
|
||||||
write_excuses(sorted_excuses, self.options.excuses_yaml_output,
|
write_excuses(excuses, self.options.excuses_yaml_output,
|
||||||
output_format="yaml")
|
output_format="yaml")
|
||||||
|
|
||||||
self.logger.info("Update Excuses generation completed")
|
self.logger.info("Update Excuses generation completed")
|
||||||
|
@ -371,7 +371,7 @@ class Excuse(object):
|
|||||||
return VERDICT2DESC[verdict]
|
return VERDICT2DESC[verdict]
|
||||||
return "UNKNOWN: Missing description for {0} - Please file a bug against Britney".format(verdict.name)
|
return "UNKNOWN: Missing description for {0} - Please file a bug against Britney".format(verdict.name)
|
||||||
|
|
||||||
def _render_dep_issues(self):
|
def _render_dep_issues(self, excuses):
|
||||||
if self.dep_info_rendered:
|
if self.dep_info_rendered:
|
||||||
return
|
return
|
||||||
|
|
||||||
@ -379,14 +379,16 @@ class Excuse(object):
|
|||||||
for d in self.all_deps:
|
for d in self.all_deps:
|
||||||
dep = d.first_dep
|
dep = d.first_dep
|
||||||
info = ""
|
info = ""
|
||||||
if d.valid:
|
if not d.possible:
|
||||||
info = "%s: %s <a href=\"#%s\">%s</a>" % (d.deptype, self.uvname, dep, dep)
|
|
||||||
elif not d.possible:
|
|
||||||
desc = d.first_impossible_dep
|
desc = d.first_impossible_dep
|
||||||
info = "Impossible %s: %s -> %s" % (d.deptype, self.uvname, desc)
|
info = "Impossible %s: %s -> %s" % (d.deptype, self.uvname, desc)
|
||||||
else:
|
else:
|
||||||
info = "%s: %s <a href=\"#%s\">%s</a> (not considered)" % (d.deptype, self.uvname, dep, dep)
|
duv = excuses[dep].uvname
|
||||||
dep_issues[d.verdict].add("Invalidated by %s" % d.deptype.get_description())
|
if d.valid:
|
||||||
|
info = "%s: %s <a href=\"#%s\">%s</a>" % (d.deptype, self.uvname, duv, duv)
|
||||||
|
else:
|
||||||
|
info = "%s: %s <a href=\"#%s\">%s</a> (not considered)" % (d.deptype, self.uvname, duv, duv)
|
||||||
|
dep_issues[d.verdict].add("Invalidated by %s" % d.deptype.get_description())
|
||||||
dep_issues[d.verdict].add(info)
|
dep_issues[d.verdict].add(info)
|
||||||
|
|
||||||
seen = set()
|
seen = set()
|
||||||
@ -398,11 +400,11 @@ class Excuse(object):
|
|||||||
|
|
||||||
self.dep_info_rendered = True
|
self.dep_info_rendered = True
|
||||||
|
|
||||||
def html(self):
|
def html(self, excuses):
|
||||||
"""Render the excuse in HTML"""
|
"""Render the excuse in HTML"""
|
||||||
res = "<a id=\"%s\" name=\"%s\">%s</a> (%s to %s)\n<ul>\n" % \
|
res = "<a id=\"%s\" name=\"%s\">%s</a> (%s to %s)\n<ul>\n" % \
|
||||||
(self.uvname, self.uvname, self.uvname, self.ver[0], self.ver[1])
|
(self.uvname, self.uvname, self.uvname, self.ver[0], self.ver[1])
|
||||||
info = self._text()
|
info = self._text(excuses)
|
||||||
for l in info:
|
for l in info:
|
||||||
res += "<li>%s\n" % l
|
res += "<li>%s\n" % l
|
||||||
res = res + "</ul>\n"
|
res = res + "</ul>\n"
|
||||||
@ -417,9 +419,9 @@ class Excuse(object):
|
|||||||
""""adding reason"""
|
""""adding reason"""
|
||||||
self.reason[reason] = 1
|
self.reason[reason] = 1
|
||||||
|
|
||||||
def _text(self):
|
def _text(self, excuses):
|
||||||
"""Render the excuse in text"""
|
"""Render the excuse in text"""
|
||||||
self._render_dep_issues()
|
self._render_dep_issues(excuses)
|
||||||
res = []
|
res = []
|
||||||
res.append(
|
res.append(
|
||||||
"Migration status for %s (%s to %s): %s" %
|
"Migration status for %s (%s to %s): %s" %
|
||||||
@ -439,10 +441,10 @@ class Excuse(object):
|
|||||||
res.append("" + x + "")
|
res.append("" + x + "")
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def excusedata(self):
|
def excusedata(self, excuses):
|
||||||
"""Render the excuse in as key-value data"""
|
"""Render the excuse in as key-value data"""
|
||||||
excusedata = {}
|
excusedata = {}
|
||||||
excusedata["excuses"] = self._text()
|
excusedata["excuses"] = self._text(excuses)
|
||||||
excusedata["item-name"] = self.uvname
|
excusedata["item-name"] = self.uvname
|
||||||
excusedata["source"] = self.source
|
excusedata["source"] = self.source
|
||||||
excusedata["migration-policy-verdict"] = self._policy_verdict.name
|
excusedata["migration-policy-verdict"] = self._policy_verdict.name
|
||||||
@ -464,20 +466,24 @@ class Excuse(object):
|
|||||||
if self.all_deps \
|
if self.all_deps \
|
||||||
or self.break_deps or self.unsat_deps:
|
or self.break_deps or self.unsat_deps:
|
||||||
excusedata['dependencies'] = dep_data = {}
|
excusedata['dependencies'] = dep_data = {}
|
||||||
migrate_after = sorted(set(d.first_dep for d in self.all_deps if d.valid))
|
|
||||||
blocked_by = sorted(set(d.first_dep for d in self.all_deps
|
migrate_after = set(d.first_dep for d in self.all_deps if d.valid)
|
||||||
if not d.valid and d.possible))
|
blocked_by = set(d.first_dep for d in self.all_deps
|
||||||
|
if not d.valid and d.possible)
|
||||||
|
|
||||||
break_deps = [x for x, _ in self.break_deps if
|
break_deps = [x for x, _ in self.break_deps if
|
||||||
x not in migrate-after and
|
x not in migrate-after and
|
||||||
x not in blocked-by]
|
x not in blocked-by]
|
||||||
|
|
||||||
|
def sorted_uvnames(deps):
|
||||||
|
return sorted(excuses[d].uvname for d in deps)
|
||||||
|
|
||||||
if blocked_by:
|
if blocked_by:
|
||||||
dep_data['blocked-by'] = blocked_by
|
dep_data['blocked-by'] = sorted_uvnames(blocked_by)
|
||||||
if migrate_after:
|
if migrate_after:
|
||||||
dep_data['migrate-after'] = migrate_after
|
dep_data['migrate-after'] = sorted_uvnames(migrate_after)
|
||||||
if break_deps:
|
if break_deps:
|
||||||
dep_data['unimportant-dependencies'] = sorted(break_deps)
|
dep_data['unimportant-dependencies'] = sorted_uvnames(break_deps)
|
||||||
if self.unsat_deps:
|
if self.unsat_deps:
|
||||||
dep_data['unsatisfiable-dependencies'] = {x: sorted(self.unsat_deps[x]) for x in self.unsat_deps}
|
dep_data['unsatisfiable-dependencies'] = {x: sorted(self.unsat_deps[x]) for x in self.unsat_deps}
|
||||||
if self.needs_approval:
|
if self.needs_approval:
|
||||||
|
@ -300,16 +300,17 @@ def write_heidi_delta(filename, all_selected):
|
|||||||
item.version, item.architecture))
|
item.version, item.architecture))
|
||||||
|
|
||||||
|
|
||||||
def write_excuses(excuselist, dest_file, output_format="yaml"):
|
def write_excuses(excuses, dest_file, output_format="yaml"):
|
||||||
"""Write the excuses to dest_file
|
"""Write the excuses to dest_file
|
||||||
|
|
||||||
Writes a list of excuses in a specified output_format to the
|
Writes a list of excuses in a specified output_format to the
|
||||||
path denoted by dest_file. The output_format can either be "yaml"
|
path denoted by dest_file. The output_format can either be "yaml"
|
||||||
or "legacy-html".
|
or "legacy-html".
|
||||||
"""
|
"""
|
||||||
|
excuselist = sorted(excuses.values(), key=lambda x: x.sortkey())
|
||||||
if output_format == "yaml":
|
if output_format == "yaml":
|
||||||
with open(dest_file, 'w', encoding='utf-8') as f:
|
with open(dest_file, 'w', encoding='utf-8') as f:
|
||||||
edatalist = [e.excusedata() for e in excuselist]
|
edatalist = [e.excusedata(excuses) for e in excuselist]
|
||||||
excusesdata = {
|
excusesdata = {
|
||||||
'sources': edatalist,
|
'sources': edatalist,
|
||||||
'generated-date': datetime.utcnow(),
|
'generated-date': datetime.utcnow(),
|
||||||
@ -323,7 +324,7 @@ def write_excuses(excuselist, dest_file, output_format="yaml"):
|
|||||||
f.write("<p>Generated: " + time.strftime("%Y.%m.%d %H:%M:%S %z", time.gmtime(time.time())) + "</p>\n")
|
f.write("<p>Generated: " + time.strftime("%Y.%m.%d %H:%M:%S %z", time.gmtime(time.time())) + "</p>\n")
|
||||||
f.write("<ul>\n")
|
f.write("<ul>\n")
|
||||||
for e in excuselist:
|
for e in excuselist:
|
||||||
f.write("<li>%s" % e.html())
|
f.write("<li>%s" % e.html(excuses))
|
||||||
f.write("</ul></body></html>\n")
|
f.write("</ul></body></html>\n")
|
||||||
else: # pragma: no cover
|
else: # pragma: no cover
|
||||||
raise ValueError('Output format must be either "yaml or "legacy-html"')
|
raise ValueError('Output format must be either "yaml or "legacy-html"')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user