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 /lib | |
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.
Diffstat (limited to 'lib')
-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, |