mirror of
https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
synced 2025-05-30 03:41:30 +00:00
Remove remaining calls to output_write and output_write itself
Signed-off-by: Niels Thykier <niels@thykier.net>
This commit is contained in:
parent
a344a9b375
commit
d35a831a0c
109
britney.py
109
britney.py
@ -2221,6 +2221,7 @@ class Britney(object):
|
|||||||
group_info = {}
|
group_info = {}
|
||||||
rescheduled_packages = packages
|
rescheduled_packages = packages
|
||||||
maybe_rescheduled_packages = []
|
maybe_rescheduled_packages = []
|
||||||
|
output_logger = self.output_logger
|
||||||
|
|
||||||
for y in sorted((y for y in packages), key=attrgetter('uvname')):
|
for y in sorted((y for y in packages), key=attrgetter('uvname')):
|
||||||
updates, rms, _ = self._compute_groups(y.package, y.suite, y.architecture, y.is_removal)
|
updates, rms, _ = self._compute_groups(y.package, y.suite, y.architecture, y.is_removal)
|
||||||
@ -2234,7 +2235,7 @@ class Britney(object):
|
|||||||
|
|
||||||
nuninst_last_accepted = nuninst_orig
|
nuninst_last_accepted = nuninst_orig
|
||||||
|
|
||||||
self.output_write("recur: [] %s %d/0\n" % (",".join(x.uvname for x in selected), len(packages)))
|
output_logger.info("recur: [] %s %d/0", ",".join(x.uvname for x in selected), len(packages))
|
||||||
while rescheduled_packages:
|
while rescheduled_packages:
|
||||||
groups = {group_info[x] for x in rescheduled_packages}
|
groups = {group_info[x] for x in rescheduled_packages}
|
||||||
worklist = self._inst_tester.solve_groups(groups)
|
worklist = self._inst_tester.solve_groups(groups)
|
||||||
@ -2245,20 +2246,22 @@ class Britney(object):
|
|||||||
while worklist:
|
while worklist:
|
||||||
comp = worklist.pop()
|
comp = worklist.pop()
|
||||||
comp_name = ' '.join(item.uvname for item in comp)
|
comp_name = ' '.join(item.uvname for item in comp)
|
||||||
self.output_write("trying: %s\n" % comp_name)
|
output_logger.info("trying: %s" % comp_name)
|
||||||
accepted, nuninst_after, comp_undo, failed_arch = self.try_migration(comp, nuninst_last_accepted, lundo)
|
accepted, nuninst_after, comp_undo, failed_arch = self.try_migration(comp, nuninst_last_accepted, lundo)
|
||||||
if accepted:
|
if accepted:
|
||||||
selected.extend(comp)
|
selected.extend(comp)
|
||||||
if lundo is not None:
|
if lundo is not None:
|
||||||
lundo.extend(comp_undo)
|
lundo.extend(comp_undo)
|
||||||
self.output_write("accepted: %s\n" % comp_name)
|
output_logger.info("accepted: %s", comp_name)
|
||||||
self.output_write(" ori: %s\n" % (self.eval_nuninst(nuninst_orig)))
|
output_logger.info(" ori: %s", self.eval_nuninst(nuninst_orig))
|
||||||
self.output_write(" pre: %s\n" % (self.eval_nuninst(nuninst_last_accepted)))
|
output_logger.info(" pre: %s", self.eval_nuninst(nuninst_last_accepted))
|
||||||
self.output_write(" now: %s\n" % (self.eval_nuninst(nuninst_after)))
|
output_logger.info(" now: %s", self.eval_nuninst(nuninst_after))
|
||||||
if len(selected) <= 20:
|
if len(selected) <= 20:
|
||||||
self.output_write(" all: %s\n" % (" ".join(x.uvname for x in selected)))
|
output_logger.info(" all: %s", " ".join(x.uvname for x in selected))
|
||||||
else:
|
else:
|
||||||
self.output_write(" most: (%d) .. %s\n" % (len(selected), " ".join(x.uvname for x in selected[-20:])))
|
output_logger.info(" most: (%d) .. %s",
|
||||||
|
len(selected),
|
||||||
|
" ".join(x.uvname for x in selected[-20:]))
|
||||||
nuninst_last_accepted = nuninst_after
|
nuninst_last_accepted = nuninst_after
|
||||||
rescheduled_packages.extend(maybe_rescheduled_packages)
|
rescheduled_packages.extend(maybe_rescheduled_packages)
|
||||||
maybe_rescheduled_packages.clear()
|
maybe_rescheduled_packages.clear()
|
||||||
@ -2269,25 +2272,29 @@ class Britney(object):
|
|||||||
if any(item for item in comp if item.architecture != 'source'):
|
if any(item for item in comp if item.architecture != 'source'):
|
||||||
compare_nuninst = nuninst_last_accepted
|
compare_nuninst = nuninst_last_accepted
|
||||||
# NB: try_migration already reverted this for us, so just print the results and move on
|
# NB: try_migration already reverted this for us, so just print the results and move on
|
||||||
self.output_write("skipped: %s (%d, %d, %d)\n" % (comp_name, len(rescheduled_packages),
|
output_logger.info("skipped: %s (%d, %d, %d)",
|
||||||
len(maybe_rescheduled_packages), len(worklist)))
|
comp_name,
|
||||||
self.output_write(" got: %s\n" % (self.eval_nuninst(nuninst_after, compare_nuninst)))
|
len(rescheduled_packages),
|
||||||
self.output_write(" * %s: %s\n" % (failed_arch, ", ".join(broken)))
|
len(maybe_rescheduled_packages),
|
||||||
|
len(worklist)
|
||||||
|
)
|
||||||
|
output_logger.info(" got: %s", self.eval_nuninst(nuninst_after, compare_nuninst))
|
||||||
|
output_logger.info(" * %s: %s", failed_arch, ", ".join(broken))
|
||||||
|
|
||||||
if len(comp) > 1:
|
if len(comp) > 1:
|
||||||
self.output_write(" - splitting the component into single items and retrying them\n")
|
output_logger.info(" - splitting the component into single items and retrying them")
|
||||||
worklist.extend([item] for item in comp)
|
worklist.extend([item] for item in comp)
|
||||||
else:
|
else:
|
||||||
maybe_rescheduled_packages.append(comp[0])
|
maybe_rescheduled_packages.append(comp[0])
|
||||||
|
|
||||||
self.output_write(" finish: [%s]\n" % ",".join( x.uvname for x in selected ))
|
output_logger.info(" finish: [%s]", ",".join(x.uvname for x in selected))
|
||||||
self.output_write("endloop: %s\n" % (self.eval_nuninst(self.nuninst_orig)))
|
output_logger.info("endloop: %s", self.eval_nuninst(self.nuninst_orig))
|
||||||
self.output_write(" now: %s\n" % (self.eval_nuninst(nuninst_last_accepted)))
|
output_logger.info(" now: %s", self.eval_nuninst(nuninst_last_accepted))
|
||||||
format_and_log_uninst(self.output_logger,
|
format_and_log_uninst(output_logger,
|
||||||
self.options.architectures,
|
self.options.architectures,
|
||||||
newly_uninst(self.nuninst_orig, nuninst_last_accepted)
|
newly_uninst(self.nuninst_orig, nuninst_last_accepted)
|
||||||
)
|
)
|
||||||
self.output_write("\n")
|
output_logger.info("")
|
||||||
|
|
||||||
return (nuninst_last_accepted, maybe_rescheduled_packages)
|
return (nuninst_last_accepted, maybe_rescheduled_packages)
|
||||||
|
|
||||||
@ -2305,6 +2312,7 @@ class Britney(object):
|
|||||||
else:
|
else:
|
||||||
upgrade_me = self.upgrade_me[:]
|
upgrade_me = self.upgrade_me[:]
|
||||||
nuninst_start = self.nuninst_orig
|
nuninst_start = self.nuninst_orig
|
||||||
|
output_logger = self.output_logger
|
||||||
|
|
||||||
# these are special parameters for hints processing
|
# these are special parameters for hints processing
|
||||||
force = False
|
force = False
|
||||||
@ -2323,13 +2331,13 @@ class Britney(object):
|
|||||||
lundo = []
|
lundo = []
|
||||||
for x in init:
|
for x in init:
|
||||||
if x not in upgrade_me:
|
if x not in upgrade_me:
|
||||||
self.output_write("failed: %s is not a valid candidate (or it already migrated)\n" % (x.uvname))
|
output_logger.warning("failed: %s is not a valid candidate (or it already migrated)", x.uvname)
|
||||||
return None
|
return None
|
||||||
selected.append(x)
|
selected.append(x)
|
||||||
upgrade_me.remove(x)
|
upgrade_me.remove(x)
|
||||||
|
|
||||||
self.output_write("start: %s\n" % self.eval_nuninst(nuninst_start))
|
output_logger.info("start: %s", self.eval_nuninst(nuninst_start))
|
||||||
self.output_write("orig: %s\n" % self.eval_nuninst(nuninst_start))
|
output_logger.info("orig: %s", self.eval_nuninst(nuninst_start))
|
||||||
|
|
||||||
if init:
|
if init:
|
||||||
# init => a hint (e.g. "easy") - so do the hint run
|
# init => a hint (e.g. "easy") - so do the hint run
|
||||||
@ -2354,7 +2362,7 @@ class Britney(object):
|
|||||||
|
|
||||||
if not recurse:
|
if not recurse:
|
||||||
# easy or force-hint
|
# easy or force-hint
|
||||||
self.output_write("easy: %s\n" % nuninst_end_str)
|
output_logger.info("easy: %s", nuninst_end_str)
|
||||||
|
|
||||||
if not force:
|
if not force:
|
||||||
format_and_log_uninst(self.output_logger,
|
format_and_log_uninst(self.output_logger,
|
||||||
@ -2380,22 +2388,22 @@ class Britney(object):
|
|||||||
|
|
||||||
if better:
|
if better:
|
||||||
# Result accepted either by force or by being better than the original result.
|
# Result accepted either by force or by being better than the original result.
|
||||||
self.output_write("final: %s\n" % ",".join(sorted( x.uvname for x in selected )))
|
output_logger.info("final: %s", ",".join(sorted(x.uvname for x in selected)))
|
||||||
self.output_write("start: %s\n" % self.eval_nuninst(nuninst_start))
|
output_logger.info("start: %s", self.eval_nuninst(nuninst_start))
|
||||||
self.output_write(" orig: %s\n" % self.eval_nuninst(self.nuninst_orig))
|
output_logger.info(" orig: %s", self.eval_nuninst(self.nuninst_orig))
|
||||||
self.output_write(" end: %s\n" % nuninst_end_str)
|
output_logger.info(" end: %s", nuninst_end_str)
|
||||||
if force:
|
if force:
|
||||||
broken = newly_uninst(nuninst_start, nuninst_end)
|
broken = newly_uninst(nuninst_start, nuninst_end)
|
||||||
if broken:
|
if broken:
|
||||||
self.output_logger.warning("force breaks:")
|
output_logger.warning("force breaks:")
|
||||||
format_and_log_uninst(self.output_logger,
|
format_and_log_uninst(self.output_logger,
|
||||||
self.options.architectures,
|
self.options.architectures,
|
||||||
broken,
|
broken,
|
||||||
loglevel=logging.WARNING,
|
loglevel=logging.WARNING,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.output_logger.info("force did not break any packages")
|
output_logger.info("force did not break any packages")
|
||||||
self.output_write("SUCCESS (%d/%d)\n" % (len(actions or self.upgrade_me), len(extra)))
|
output_logger.info("SUCCESS (%d/%d)", len(actions or self.upgrade_me), len(extra))
|
||||||
self.nuninst_orig = nuninst_end
|
self.nuninst_orig = nuninst_end
|
||||||
self.all_selected += selected
|
self.all_selected += selected
|
||||||
if not actions:
|
if not actions:
|
||||||
@ -2404,13 +2412,14 @@ class Britney(object):
|
|||||||
else:
|
else:
|
||||||
self.upgrade_me = [x for x in self.upgrade_me if x not in set(selected)]
|
self.upgrade_me = [x for x in self.upgrade_me if x not in set(selected)]
|
||||||
else:
|
else:
|
||||||
self.output_write("FAILED\n")
|
output_logger.info("FAILED\n")
|
||||||
if not lundo: return
|
if not lundo:
|
||||||
|
return
|
||||||
lundo.reverse()
|
lundo.reverse()
|
||||||
|
|
||||||
undo_changes(lundo, self._inst_tester, self.sources, self.binaries, self.all_binaries)
|
undo_changes(lundo, self._inst_tester, self.sources, self.binaries, self.all_binaries)
|
||||||
|
|
||||||
self.output_write("\n")
|
output_logger.info("")
|
||||||
|
|
||||||
def assert_nuninst_is_correct(self):
|
def assert_nuninst_is_correct(self):
|
||||||
self.logger.info("> Update complete - Verifying non-installability counters")
|
self.logger.info("> Update complete - Verifying non-installability counters")
|
||||||
@ -2452,9 +2461,10 @@ class Britney(object):
|
|||||||
commands.
|
commands.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
output_logger = self.output_logger
|
||||||
self.logger.info("Starting the upgrade test")
|
self.logger.info("Starting the upgrade test")
|
||||||
self.output_write("Generated on: %s\n" % (time.strftime("%Y.%m.%d %H:%M:%S %z", time.gmtime(time.time()))))
|
output_logger.info("Generated on: %s", time.strftime("%Y.%m.%d %H:%M:%S %z", time.gmtime(time.time())))
|
||||||
self.output_write("Arch order is: %s\n" % ", ".join(self.options.architectures))
|
output_logger.info("Arch order is: %s", ", ".join(self.options.architectures))
|
||||||
|
|
||||||
self.logger.info("> Calculating current uninstallability counters")
|
self.logger.info("> Calculating current uninstallability counters")
|
||||||
self.nuninst_orig = self.get_nuninst()
|
self.nuninst_orig = self.get_nuninst()
|
||||||
@ -2479,14 +2489,14 @@ class Britney(object):
|
|||||||
archpackages[a] = [p for p in normpackages if p.architecture == a]
|
archpackages[a] = [p for p in normpackages if p.architecture == a]
|
||||||
normpackages = [p for p in normpackages if p not in archpackages[a]]
|
normpackages = [p for p in normpackages if p not in archpackages[a]]
|
||||||
self.upgrade_me = normpackages
|
self.upgrade_me = normpackages
|
||||||
self.output_write("info: main run\n")
|
output_logger.info("info: main run")
|
||||||
self.do_all()
|
self.do_all()
|
||||||
allpackages += self.upgrade_me
|
allpackages += self.upgrade_me
|
||||||
for a in self.options.break_arches:
|
for a in self.options.break_arches:
|
||||||
backup = self.options.break_arches
|
backup = self.options.break_arches
|
||||||
self.options.break_arches = " ".join(x for x in self.options.break_arches if x != a)
|
self.options.break_arches = " ".join(x for x in self.options.break_arches if x != a)
|
||||||
self.upgrade_me = archpackages[a]
|
self.upgrade_me = archpackages[a]
|
||||||
self.output_write("info: broken arch run for %s\n" % (a))
|
output_logger.info("info: broken arch run for %s", a)
|
||||||
self.do_all()
|
self.do_all()
|
||||||
allpackages += self.upgrade_me
|
allpackages += self.upgrade_me
|
||||||
self.options.break_arches = backup
|
self.options.break_arches = backup
|
||||||
@ -2500,7 +2510,7 @@ class Britney(object):
|
|||||||
hintcnt = 0
|
hintcnt = 0
|
||||||
for x in self.hints["hint"][:50]:
|
for x in self.hints["hint"][:50]:
|
||||||
if hintcnt > 50:
|
if hintcnt > 50:
|
||||||
self.output_write("Skipping remaining hints...")
|
output_logger.info("Skipping remaining hints...")
|
||||||
break
|
break
|
||||||
if self.do_hint("hint", x.user, x.packages):
|
if self.do_hint("hint", x.user, x.packages):
|
||||||
hintcnt += 1
|
hintcnt += 1
|
||||||
@ -2524,7 +2534,7 @@ class Britney(object):
|
|||||||
for source in sources if source not in used
|
for source in sources if source not in used
|
||||||
]
|
]
|
||||||
if removals:
|
if removals:
|
||||||
self.output_write("Removing obsolete source packages from testing (%d):\n" % (len(removals)))
|
output_logger.info("Removing obsolete source packages from testing (%d):", len(removals))
|
||||||
self.do_all(actions=removals)
|
self.do_all(actions=removals)
|
||||||
|
|
||||||
# smooth updates
|
# smooth updates
|
||||||
@ -2532,7 +2542,7 @@ class Britney(object):
|
|||||||
if self.options.smooth_updates:
|
if self.options.smooth_updates:
|
||||||
self.logger.info("> Removing old packages left in testing from smooth updates")
|
self.logger.info("> Removing old packages left in testing from smooth updates")
|
||||||
if removals:
|
if removals:
|
||||||
self.output_logger.info("Removing packages left in testing for smooth updates (%d):", len(removals))
|
output_logger.info("Removing packages left in testing for smooth updates (%d):", len(removals))
|
||||||
log_and_format_old_libraries(self.output_logger, removals)
|
log_and_format_old_libraries(self.output_logger, removals)
|
||||||
self.do_all(actions=removals)
|
self.do_all(actions=removals)
|
||||||
removals = old_libraries(self.sources, self.binaries, self.options.outofsync_arches)
|
removals = old_libraries(self.sources, self.binaries, self.options.outofsync_arches)
|
||||||
@ -2540,7 +2550,7 @@ class Britney(object):
|
|||||||
self.logger.info("> Not removing old packages left in testing from smooth updates"
|
self.logger.info("> Not removing old packages left in testing from smooth updates"
|
||||||
" (smooth-updates disabled)")
|
" (smooth-updates disabled)")
|
||||||
|
|
||||||
self.output_logger.info("List of old libraries in testing (%d):", len(removals))
|
output_logger.info("List of old libraries in testing (%d):", len(removals))
|
||||||
log_and_format_old_libraries(self.output_logger, removals)
|
log_and_format_old_libraries(self.output_logger, removals)
|
||||||
|
|
||||||
self.assert_nuninst_is_correct()
|
self.assert_nuninst_is_correct()
|
||||||
@ -2797,23 +2807,6 @@ class Britney(object):
|
|||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
def output_write(self, msg):
|
|
||||||
"""Simple wrapper for output writing"""
|
|
||||||
# This method used to take full lines and write them directly to a file.
|
|
||||||
# As such msg is expected to contain a character to be written plus
|
|
||||||
# explicit newlines.
|
|
||||||
if not msg:
|
|
||||||
# Empty string -> nothing is written (emulating fd.write(''))
|
|
||||||
return
|
|
||||||
# Remove trailing \n as the logger will add one.
|
|
||||||
# - Note that we cannot emulate partial lines (but nothing uses that
|
|
||||||
# so we do not bother trying either).
|
|
||||||
if msg and msg[-1] == '\n':
|
|
||||||
msg = msg[:-1]
|
|
||||||
|
|
||||||
for line in msg.split('\n'):
|
|
||||||
self.output_logger.info(line)
|
|
||||||
|
|
||||||
def main(self):
|
def main(self):
|
||||||
"""Main method
|
"""Main method
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user