diff options
author | Massimiliano Culpo <massimiliano.culpo@gmail.com> | 2019-12-02 23:05:02 +0100 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2019-12-02 14:05:35 -0800 |
commit | a93a6136682debfd58d295e3035ad2c6d142bda1 (patch) | |
tree | 8665dfce9a735d5284bd542a671a32702f1e4dbe /var | |
parent | c36d9f297fafd1f9a1fd3d309a46eb3ee8987f44 (diff) | |
download | spack-a93a6136682debfd58d295e3035ad2c6d142bda1.tar.gz spack-a93a6136682debfd58d295e3035ad2c6d142bda1.tar.bz2 spack-a93a6136682debfd58d295e3035ad2c6d142bda1.tar.xz spack-a93a6136682debfd58d295e3035ad2c6d142bda1.zip |
Speedup environment activation (#13557)
* Add a transaction around repeated calls to `spec.prefix` in the activation process
* cache the computation of home in the python package to speed up setting deps
* ensure that module-scope variables are only set *once* per module
Diffstat (limited to 'var')
-rw-r--r-- | var/spack/repos/builtin/packages/python/package.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 15901872e9..a92d1c6c79 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -163,6 +163,9 @@ class Python(AutotoolsPackage): _DISTUTIL_CACHE_FILENAME = 'sysconfig.json' _distutil_vars = None + # Used to cache home locations, since computing them might be expensive + _homes = {} + # An in-source build with --enable-optimizations fails for python@3.X build_directory = 'spack-build' @@ -622,8 +625,11 @@ class Python(AutotoolsPackage): ``packages.yaml`` unknowingly. Query the python executable to determine exactly where it is installed.""" - prefix = self.get_config_var('prefix') - return Prefix(prefix) + dag_hash = self.spec.dag_hash() + if dag_hash not in self._homes: + prefix = self.get_config_var('prefix') + self._homes[dag_hash] = Prefix(prefix) + return self._homes[dag_hash] @property def libs(self): |