move binary indices are stored into the misc_cache (#22500)
Remote buildcache indices need to be stored in a place that does not require writing to the Spack prefix. Move them from the install_tree to the misc_cache.
This commit is contained in:
		| @@ -37,13 +37,11 @@ | |||||||
| import spack.mirror | import spack.mirror | ||||||
| import spack.util.url as url_util | import spack.util.url as url_util | ||||||
| import spack.util.web as web_util | import spack.util.web as web_util | ||||||
|  | from spack.caches import misc_cache_location | ||||||
| from spack.spec import Spec | from spack.spec import Spec | ||||||
| from spack.stage import Stage | from spack.stage import Stage | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #: default root, relative to the Spack install path |  | ||||||
| default_binary_index_root = os.path.join(spack.paths.opt_path, 'spack') |  | ||||||
| 
 |  | ||||||
| _build_cache_relative_path = 'build_cache' | _build_cache_relative_path = 'build_cache' | ||||||
| _build_cache_keys_relative_path = '_pgp' | _build_cache_keys_relative_path = '_pgp' | ||||||
| 
 | 
 | ||||||
| @@ -67,9 +65,8 @@ class BinaryCacheIndex(object): | |||||||
|     mean we should have paid the price to update the cache earlier? |     mean we should have paid the price to update the cache earlier? | ||||||
|     """ |     """ | ||||||
| 
 | 
 | ||||||
|     def __init__(self, cache_root=None): |     def __init__(self, cache_root): | ||||||
|         self._cache_root = cache_root or default_binary_index_root |         self._index_cache_root = cache_root | ||||||
|         self._index_cache_root = os.path.join(self._cache_root, 'indices') |  | ||||||
| 
 | 
 | ||||||
|         # the key associated with the serialized _local_index_cache |         # the key associated with the serialized _local_index_cache | ||||||
|         self._index_contents_key = 'contents.json' |         self._index_contents_key = 'contents.json' | ||||||
| @@ -440,13 +437,15 @@ def _fetch_and_cache_index(self, mirror_url, expect_hash=None): | |||||||
|         return True |         return True | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def binary_index_location(): | ||||||
|  |     """Set up a BinaryCacheIndex for remote buildcache dbs in the user's homedir.""" | ||||||
|  |     cache_root = os.path.join(misc_cache_location(), 'indices') | ||||||
|  |     return spack.util.path.canonicalize_path(cache_root) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| def _binary_index(): | def _binary_index(): | ||||||
|     """Get the singleton store instance.""" |     """Get the singleton store instance.""" | ||||||
|     cache_root = spack.config.get( |     return BinaryCacheIndex(binary_index_location()) | ||||||
|         'config:binary_index_root', default_binary_index_root) |  | ||||||
|     cache_root = spack.util.path.canonicalize_path(cache_root) |  | ||||||
| 
 |  | ||||||
|     return BinaryCacheIndex(cache_root) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #: Singleton binary_index instance | #: Singleton binary_index instance | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ | |||||||
| import spack.util.path | import spack.util.path | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _misc_cache(): | def misc_cache_location(): | ||||||
|     """The ``misc_cache`` is Spack's cache for small data. |     """The ``misc_cache`` is Spack's cache for small data. | ||||||
| 
 | 
 | ||||||
|     Currently the ``misc_cache`` stores indexes for virtual dependency |     Currently the ``misc_cache`` stores indexes for virtual dependency | ||||||
| @@ -27,7 +27,11 @@ def _misc_cache(): | |||||||
|     if not path: |     if not path: | ||||||
|         path = os.path.join(spack.paths.user_config_path, 'cache') |         path = os.path.join(spack.paths.user_config_path, 'cache') | ||||||
|     path = spack.util.path.canonicalize_path(path) |     path = spack.util.path.canonicalize_path(path) | ||||||
|  |     return path | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | def _misc_cache(): | ||||||
|  |     path = misc_cache_location() | ||||||
|     return spack.util.file_cache.FileCache(path) |     return spack.util.file_cache.FileCache(path) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @@ -35,7 +39,7 @@ def _misc_cache(): | |||||||
| misc_cache = llnl.util.lang.Singleton(_misc_cache) | misc_cache = llnl.util.lang.Singleton(_misc_cache) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def _fetch_cache(): | def fetch_cache_location(): | ||||||
|     """Filesystem cache of downloaded archives. |     """Filesystem cache of downloaded archives. | ||||||
| 
 | 
 | ||||||
|     This prevents Spack from repeatedly fetch the same files when |     This prevents Spack from repeatedly fetch the same files when | ||||||
| @@ -45,7 +49,11 @@ def _fetch_cache(): | |||||||
|     if not path: |     if not path: | ||||||
|         path = os.path.join(spack.paths.var_path, "cache") |         path = os.path.join(spack.paths.var_path, "cache") | ||||||
|     path = spack.util.path.canonicalize_path(path) |     path = spack.util.path.canonicalize_path(path) | ||||||
|  |     return path | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | def _fetch_cache(): | ||||||
|  |     path = fetch_cache_location() | ||||||
|     return spack.fetch_strategy.FsCache(path) |     return spack.fetch_strategy.FsCache(path) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Danny McClanahan
					Danny McClanahan