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:
parent
20471b8420
commit
49069e4f58
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user