installer: Fix cosmetic problem with terminal title (#29070)

The status displayed in the terminal title could be wrong when doing
distributed builds. For instance, doing `spack install glib` in two
different terminals could lead to the current package being reported as
`40/29` due to the way Spack handles retrying locks.

Work around this by keeping track of the package IDs that were already
encountered to avoid counting packages twice.
This commit is contained in:
Michael Kuhn 2022-03-03 14:21:15 +01:00 committed by GitHub
parent 20471b8420
commit 49069e4f58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -632,9 +632,14 @@ def __init__(self, pkg_count):
# Counters used for showing status information in the terminal title
self.pkg_num = 0
self.pkg_count = pkg_count
self.pkg_ids = set()
def next_pkg(self):
self.pkg_num += 1
def next_pkg(self, pkg):
pkg_id = package_id(pkg)
if pkg_id not in self.pkg_ids:
self.pkg_num += 1
self.pkg_ids.add(pkg_id)
def set(self, text):
if not spack.config.get('config:terminal_title', False):
@ -1548,8 +1553,6 @@ def install(self):
term_status = TermStatusLine(enabled=sys.stdout.isatty() and not tty.is_debug())
while self.build_pq:
term_title.next_pkg()
task = self._pop_task()
if task is None:
continue
@ -1559,6 +1562,7 @@ def install(self):
keep_prefix = install_args.get('keep_prefix')
pkg, pkg_id, spec = task.pkg, task.pkg_id, task.pkg.spec
term_title.next_pkg(pkg)
term_title.set('Processing {0}'.format(pkg.name))
tty.debug('Processing {0}: task={1}'.format(pkg_id, task))
# Ensure that the current spec has NO uninstalled dependencies,