diff options
author | alalazo <massimiliano.culpo@googlemail.com> | 2016-02-01 10:54:17 +0100 |
---|---|---|
committer | alalazo <massimiliano.culpo@googlemail.com> | 2016-02-01 10:54:17 +0100 |
commit | b0707a61e7b8211dfa1c70877a08cd1ff3a50af0 (patch) | |
tree | 63361848ef2178850d7e8388afcd9b789e2813d8 /lib | |
parent | 360abb070a639711f740aa7ef73a84ab76aff14f (diff) | |
parent | 9eb037bc8745b4a7f69a0e79e491493ad817de69 (diff) | |
download | spack-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.py | 33 |
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) |