From 49069e4f5887e2ff6de0754cfd855163e524feab Mon Sep 17 00:00:00 2001 From: Michael Kuhn Date: Thu, 3 Mar 2022 14:21:15 +0100 Subject: 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. --- lib/spack/spack/installer.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index d08e828c80..41e29814e0 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -632,9 +632,14 @@ class TermTitle(object): # 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 @@ class PackageInstaller(object): 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 @@ class PackageInstaller(object): 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, -- cgit v1.2.3-60-g2f50