summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoralalazo <massimiliano.culpo@googlemail.com>2016-02-01 10:54:17 +0100
committeralalazo <massimiliano.culpo@googlemail.com>2016-02-01 10:54:17 +0100
commitb0707a61e7b8211dfa1c70877a08cd1ff3a50af0 (patch)
tree63361848ef2178850d7e8388afcd9b789e2813d8 /lib
parent360abb070a639711f740aa7ef73a84ab76aff14f (diff)
parent9eb037bc8745b4a7f69a0e79e491493ad817de69 (diff)
downloadspack-b0707a61e7b8211dfa1c70877a08cd1ff3a50af0.tar.gz
spack-b0707a61e7b8211dfa1c70877a08cd1ff3a50af0.tar.bz2
spack-b0707a61e7b8211dfa1c70877a08cd1ff3a50af0.tar.xz
spack-b0707a61e7b8211dfa1c70877a08cd1ff3a50af0.zip
Merge branch 'develop' of https://github.com/LLNL/spack into issues/trilinos_385
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/cmd/md5.py33
1 files changed, 26 insertions, 7 deletions
diff --git a/lib/spack/spack/cmd/md5.py b/lib/spack/spack/cmd/md5.py
index ef1e4f3475..879ef9f7b7 100644
--- a/lib/spack/spack/cmd/md5.py
+++ b/lib/spack/spack/cmd/md5.py
@@ -23,15 +23,31 @@
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
import os
-import hashlib
import argparse
+import hashlib
+
+from contextlib import contextmanager
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/urls."
-description = "Calculate md5 checksums for files."
+@contextmanager
+def stager(url):
+ _cwd = os.getcwd()
+ _stager = Stage(url)
+ try:
+ _stager.fetch()
+ yield _stager
+ except FailedDownloadError:
+ tty.msg("Failed to fetch %s" % url)
+ finally:
+ _stager.destroy()
+ os.chdir(_cwd) # the Stage class changes the current working dir so it has to be restored
def setup_parser(subparser):
setup_parser.parser = subparser
@@ -45,9 +61,12 @@ 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)
+ with stager(f) as stage:
+ checksum = spack.util.crypto.checksum(hashlib.md5, stage.archive_file)
+ print "%s %s" % (checksum, f)
+ 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)
+ checksum = spack.util.crypto.checksum(hashlib.md5, f)
+ print "%s %s" % (checksum, f)