summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kuhn <michael.kuhn@ovgu.de>2022-03-03 14:21:15 +0100
committerMassimiliano Culpo <massimiliano.culpo@gmail.com>2022-04-14 11:08:17 +0200
commita2a403ae0a16ccf784d5bd5b1c42d55b0397fdec (patch)
treeadc409b6fccc02010e291e3a3a3842186e3c3079
parent3b12a8b192b7438c06e2a10eb0d15275b9ef225d (diff)
downloadspack-a2a403ae0a16ccf784d5bd5b1c42d55b0397fdec.tar.gz
spack-a2a403ae0a16ccf784d5bd5b1c42d55b0397fdec.tar.bz2
spack-a2a403ae0a16ccf784d5bd5b1c42d55b0397fdec.tar.xz
spack-a2a403ae0a16ccf784d5bd5b1c42d55b0397fdec.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.
-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 df1d704cd7..fc0aa52dff 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):
@@ -1500,8 +1505,6 @@ class PackageInstaller(object):
term_title = TermTitle(len(self.build_pq))
while self.build_pq:
- term_title.next_pkg()
-
task = self._pop_task()
if task is None:
continue
@@ -1511,6 +1514,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,