'Creates a stage directory and downloads the tarball for this package.
Working directory will be set to the stage directory.'

def do_fetch(self, mirror_only=False):

    if (not self.spec.concrete):
        raise ValueError('Can    only    fetch    concrete    packages.')
    start_time = time.time()
    if (spack.do_checksum and (self.version not in self.versions)):
        tty.warn(('There    is    no    checksum    on    file    to    fetch    %s    safely.' % self.spec.cformat('$_$@')))
        ck_msg = 'Add    a    checksum    or    use    --no-checksum    to    skip    this    check.'
        ignore_checksum = False
        if sys.stdout.isatty():
            ignore_checksum = tty.get_yes_or_no('        Fetch    anyway?', default=False)
            if ignore_checksum:
                tty.msg('Fetching    with    no    checksum.', ck_msg)
        if (not ignore_checksum):
            raise FetchError(('Will    not    fetch    %s' % self.spec.format('$_$@')), ck_msg)
    self.stage.fetch(mirror_only)
    self._fetch_time = (time.time() - start_time)
    if (spack.do_checksum and (self.version in self.versions)):
        self.stage.check()
    self.stage.cache_local()
