summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNicolas Richart <nicolas.richart@epfl.ch>2016-01-28 14:22:28 +0100
committerNicolas Richart <nicolas.richart@epfl.ch>2016-01-28 14:22:28 +0100
commit5850d8530ef0570e508fb1ebd53428e98cc761a3 (patch)
treeb10375ddfe8a792c5cfbe593750987d9fdc8c8a4 /lib
parentc2bb00ca2f925c1a8c4b49f7b0a7b22e7c0b43a8 (diff)
downloadspack-5850d8530ef0570e508fb1ebd53428e98cc761a3.tar.gz
spack-5850d8530ef0570e508fb1ebd53428e98cc761a3.tar.bz2
spack-5850d8530ef0570e508fb1ebd53428e98cc761a3.tar.xz
spack-5850d8530ef0570e508fb1ebd53428e98cc761a3.zip
Adding the stager to checksum any url that spack can handle
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/cmd/md5.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py
index ef1e4f3475..b8ffb5dec7 100644
--- a/lib/spack/spack/cmd/md5.py
+++ b/lib/spack/spack/cmd/md5.py
@@ -30,8 +30,9 @@ import llnl.util.tty as tty
from llnl.util.filesystem import *
import spack.util.crypto
+from spack.stage import Stage, FailedDownloadError
-description = "Calculate md5 checksums for files."
+description = "Calculate md5 checksums for files/urls."
def setup_parser(subparser):
setup_parser.parser = subparser
@@ -45,9 +46,20 @@ def md5(parser, args):
for f in args.files:
if not os.path.isfile(f):
- tty.die("Not a file: %s" % f)
- if not can_access(f):
- tty.die("Cannot read file: %s" % f)
+ stage = Stage(f)
+ try:
+ stage.fetch()
+ checksum = spack.util.crypto.checksum(hashlib.md5, stage.archive_file)
+ print "%s %s" % (checksum, f)
+ except FailedDownloadError, e:
+ tty.msg("Failed to fetch %s" % url)
+ continue
- checksum = spack.util.crypto.checksum(hashlib.md5, f)
- print "%s %s" % (checksum, f)
+ finally:
+ stage.destroy()
+ else:
+ if not can_access(f):
+ tty.die("Cannot read file: %s" % f)
+
+ checksum = spack.util.crypto.checksum(hashlib.md5, f)
+ print "%s %s" % (checksum, f)