Add helpful error message for uncompressed downloads (#4205)

This commit is contained in:
Adam J. Stewart 2017-05-12 09:52:01 -05:00 committed by GitHub
parent d972ba7fbc
commit 1a6b4afe7f

View File

@ -53,13 +53,33 @@ def mirror_archive_filename(spec, fetcher, resourceId=None):
if fetcher.expand_archive: if fetcher.expand_archive:
# If we fetch with a URLFetchStrategy, use URL's archive type # If we fetch with a URLFetchStrategy, use URL's archive type
ext = url.determine_url_file_extension(fetcher.url) ext = url.determine_url_file_extension(fetcher.url)
ext = ext or spec.package.versions[spec.package.version].get(
'extension', None) # If the filename does not end with a normal suffix,
ext = ext.lstrip('.') # see if the package explicitly declares the extension
if not ext: if not ext:
raise MirrorError( ext = spec.package.versions[spec.package.version].get(
"%s version does not specify an extension" % spec.name + 'extension', None)
" and could not parse extension from %s" % fetcher.url)
if ext:
# Remove any leading dots
ext = ext.lstrip('.')
if not ext:
msg = """\
Unable to parse extension from {0}.
If this URL is for a tarball but does not include the file extension
in the name, you can explicitly declare it with the following syntax:
version('1.2.3', 'hash', extension='tar.gz')
If this URL is for a download like a .jar or .whl that does not need
to be expanded, or an uncompressed installation script, you can tell
Spack not to expand it with the following syntax:
version('1.2.3', 'hash', expand=False)
"""
raise MirrorError(msg.format(fetcher.url))
else: else:
# If the archive shouldn't be expanded, don't check extension. # If the archive shouldn't be expanded, don't check extension.
ext = None ext = None