diff options
author | Michael Kuhn <michael.kuhn@ovgu.de> | 2022-03-03 14:21:15 +0100 |
---|---|---|
committer | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2022-04-14 11:08:17 +0200 |
commit | a2a403ae0a16ccf784d5bd5b1c42d55b0397fdec (patch) | |
tree | adc409b6fccc02010e291e3a3a3842186e3c3079 | |
parent | 3b12a8b192b7438c06e2a10eb0d15275b9ef225d (diff) | |
download | spack-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.py | 12 |
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, |