summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2015-01-07 17:41:24 -0500
committerTodd Gamblin <tgamblin@llnl.gov>2015-02-02 11:15:24 -0800
commitba593ccb260e46568fc2620ad5f300f89495a604 (patch)
tree322c80105c28fa01cedc1bd6b4fbad23c3472fc3 /lib
parent0ac6ffb3ef8aee18b5b559df691b6d81d5a00d35 (diff)
downloadspack-ba593ccb260e46568fc2620ad5f300f89495a604.tar.gz
spack-ba593ccb260e46568fc2620ad5f300f89495a604.tar.bz2
spack-ba593ccb260e46568fc2620ad5f300f89495a604.tar.xz
spack-ba593ccb260e46568fc2620ad5f300f89495a604.zip
Fix bug in mirror path construction.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/mirror.py13
-rw-r--r--lib/spack/spack/package.py2
-rw-r--r--lib/spack/spack/test/mirror.py8
3 files changed, 13 insertions, 10 deletions
diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py
index 929c514b61..114c7b6a35 100644
--- a/lib/spack/spack/mirror.py
+++ b/lib/spack/spack/mirror.py
@@ -46,7 +46,7 @@ from spack.util.compression import extension
def mirror_archive_filename(spec):
- """Get the path that this spec will live at within a mirror."""
+ """Get the name of the spec's archive in the mirror."""
if not spec.version.concrete:
raise ValueError("mirror.path requires spec with concrete version.")
@@ -61,6 +61,11 @@ def mirror_archive_filename(spec):
return "%s-%s.%s" % (spec.package.name, spec.version, ext)
+def mirror_archive_path(spec):
+ """Get the relative path to the spec's archive within a mirror."""
+ return join_path(spec.name, mirror_archive_filename(spec))
+
+
def get_matching_versions(specs, **kwargs):
"""Get a spec for EACH known version matching any spec in the list."""
matching = []
@@ -141,12 +146,10 @@ def create(path, specs, **kwargs):
stage = None
try:
# create a subdirectory for the current package@version
- subdir = join_path(mirror_root, pkg.name)
+ archive_path = join_path(path, mirror_archive_path(spec))
+ subdir = os.path.dirname(archive_path)
mkdirp(subdir)
- archive_file = mirror_archive_filename(spec)
- archive_path = join_path(subdir, archive_file)
-
if os.path.exists(archive_path):
tty.msg("Already added %s" % spec.format("$_$@"))
present.append(spec)
diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py
index fe4fc748d8..1dfd3d1c83 100644
--- a/lib/spack/spack/package.py
+++ b/lib/spack/spack/package.py
@@ -459,7 +459,7 @@ class Package(object):
raise ValueError("Can only get a stage for a concrete package.")
if self._stage is None:
- mp = spack.mirror.mirror_archive_filename(self.spec)
+ mp = spack.mirror.mirror_archive_path(self.spec)
self._stage = Stage(
self.fetcher, mirror_path=mp, name=self.spec.short_spec)
return self._stage
diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py
index 51334198ec..89ab14359e 100644
--- a/lib/spack/spack/test/mirror.py
+++ b/lib/spack/spack/test/mirror.py
@@ -44,7 +44,7 @@ class MirrorTest(MockPackagesTest):
self.repos = {}
- def set_up_package(self, name, mock_repo_class, url_attr):
+ def set_up_package(self, name, MockRepoClass, url_attr):
"""Use this to set up a mock package to be mirrored.
Each package needs us to:
1. Set up a mock repo/archive to fetch from.
@@ -56,7 +56,7 @@ class MirrorTest(MockPackagesTest):
# Get the package and fix its fetch args to point to a mock repo
pkg = spack.db.get(spec)
- repo = mock_repo_class()
+ repo = MockRepoClass()
self.repos[name] = repo
# change the fetch args of the first (only) version.
@@ -71,7 +71,7 @@ class MirrorTest(MockPackagesTest):
for name, repo in self.repos.items():
if repo.stage:
- repo.stage.destroy()
+ pass #repo.stage.destroy()
self.repos.clear()
@@ -129,7 +129,7 @@ class MirrorTest(MockPackagesTest):
self.assertTrue(all(l in exclude for l in dcmp.left_only))
finally:
- stage.destroy()
+ pass #stage.destroy()
def test_git_mirror(self):