summaryrefslogtreecommitdiff
path: root/lib
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 /lib
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.
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 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,