summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/spack/spack/__init__.py11
-rw-r--r--lib/spack/spack/binary_distribution.py36
2 files changed, 21 insertions, 26 deletions
diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py
index 2467596a34..714f0e7377 100644
--- a/lib/spack/spack/__init__.py
+++ b/lib/spack/spack/__init__.py
@@ -26,17 +26,6 @@
import sys
#-----------------------------------------------------------------------------
-# Below code imports spack packages.
-#-----------------------------------------------------------------------------
-# The imports depend on paths above, or on each other, so ordering is tricky.
-# TODO: refactor everything below to be more init order agnostic.
-
-
-# TODO: get this out of __init__.py
-binary_cache_retrieved_specs = set()
-
-
-#-----------------------------------------------------------------------------
# Initialize various data structures & objects at the core of Spack.
#
# TODO: move all of these imports out of __init__ to avoid importing the whole
diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py
index fe0924fddb..2a0dd7633d 100644
--- a/lib/spack/spack/binary_distribution.py
+++ b/lib/spack/spack/binary_distribution.py
@@ -26,24 +26,26 @@
import os
import re
import tarfile
-import yaml
import shutil
import platform
import tempfile
+import hashlib
+from contextlib import closing
+
+import yaml
import llnl.util.tty as tty
-from spack.util.gpg import Gpg
from llnl.util.filesystem import mkdirp, join_path, install_tree
-from spack.util.web import spider
-import spack.cmd
+
import spack
-from spack.stage import Stage
+import spack.cmd
import spack.fetch_strategy as fs
-from contextlib import closing
import spack.util.gpg as gpg_util
-import hashlib
-from spack.util.executable import ProcessError
import spack.relocate as relocate
+from spack.stage import Stage
+from spack.util.gpg import Gpg
+from spack.util.web import spider
+from spack.util.executable import ProcessError
class NoOverwriteException(Exception):
@@ -529,14 +531,19 @@ def extract_tarball(spec, filename, allow_root=False, unsigned=False,
shutil.rmtree(tmpdir)
+#: Internal cache for get_specs
+_cached_specs = None
+
+
def get_specs(force=False):
"""
Get spec.yaml's for build caches available on mirror
"""
- if spack.binary_cache_retrieved_specs:
+ global _cached_specs
+
+ if _cached_specs:
tty.debug("Using previously-retrieved specs")
- previously_retrieved = spack.binary_cache_retrieved_specs
- return previously_retrieved
+ return _cached_specs
mirrors = spack.config.get('mirrors')
if len(mirrors) == 0:
@@ -562,7 +569,7 @@ def get_specs(force=False):
if re.search("spec.yaml", link) and re.search(path, link):
urls.add(link)
- specs = set()
+ _cached_specs = set()
for link in urls:
with Stage(link, name="build_cache", keep=True) as stage:
if force and os.path.exists(stage.save_filename):
@@ -578,10 +585,9 @@ def get_specs(force=False):
# we need to mark this spec concrete on read-in.
spec = spack.spec.Spec.from_yaml(f)
spec._mark_concrete()
- specs.add(spec)
+ _cached_specs.add(spec)
- spack.binary_cache_retrieved_specs = specs
- return specs
+ return _cached_specs
def get_keys(install=False, trust=False, force=False):