summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Kuhn <michael.kuhn@ovgu.de>2022-03-03 14:21:15 +0100
committerGitHub <noreply@github.com>2022-03-03 14:21:15 +0100
commit49069e4f5887e2ff6de0754cfd855163e524feab (patch)
treeb6607390363b488bd54e333072b1af6d32a2461c /lib
parent20471b8420ff1c6f35f6e71434b9d18694ea6e0f (diff)
downloadspack-49069e4f5887e2ff6de0754cfd855163e524feab.tar.gz
spack-49069e4f5887e2ff6de0754cfd855163e524feab.tar.bz2
spack-49069e4f5887e2ff6de0754cfd855163e524feab.tar.xz
spack-49069e4f5887e2ff6de0754cfd855163e524feab.zip
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/installer.py12
1 files 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,