Add spack purge --cache to purge local archive cache.
This commit is contained in:
parent
bc1320d83a
commit
c996632113
3 changed files with 30 additions and 4 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
/var/spack/stage
|
/var/spack/stage
|
||||||
|
/var/spack/cache
|
||||||
*.pyc
|
*.pyc
|
||||||
/opt/
|
/opt/
|
||||||
*~
|
*~
|
||||||
|
|
|
@ -22,9 +22,31 @@
|
||||||
# License along with this program; if not, write to the Free Software
|
# License along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
import spack
|
||||||
import spack.stage as stage
|
import spack.stage as stage
|
||||||
|
|
||||||
description = "Remove all temporary build files and downloaded archives"
|
description = "Remove temporary build files and/or downloaded archives"
|
||||||
|
|
||||||
|
|
||||||
|
def setup_parser(subparser):
|
||||||
|
subparser.add_argument(
|
||||||
|
'-s', '--stage', action='store_true', default=True,
|
||||||
|
help="Remove all temporary build stages (default).")
|
||||||
|
subparser.add_argument(
|
||||||
|
'-c', '--cache', action='store_true', help="Remove cached downloads.")
|
||||||
|
subparser.add_argument(
|
||||||
|
'-a', '--all', action='store_true',
|
||||||
|
help="Remove all of the above.")
|
||||||
|
|
||||||
|
|
||||||
def purge(parser, args):
|
def purge(parser, args):
|
||||||
stage.purge()
|
# Special case: no flags.
|
||||||
|
if not any((args.stage, args.cache, args.all)):
|
||||||
|
stage.purge()
|
||||||
|
return
|
||||||
|
|
||||||
|
# handle other flags with fall through.
|
||||||
|
if args.stage or args.all:
|
||||||
|
stage.purge()
|
||||||
|
if args.cache or args.all:
|
||||||
|
spack.cache.destroy()
|
||||||
|
|
|
@ -361,7 +361,7 @@ class CacheURLFetchStrategy(URLFetchStrategy):
|
||||||
"""The resource associated with a cache URL may be out of date."""
|
"""The resource associated with a cache URL may be out of date."""
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(CacheURLFetchStrategy, self).__init__(*args, **kwargs)
|
super(CacheURLFetchStrategy, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
@_needs_stage
|
@_needs_stage
|
||||||
def fetch(self):
|
def fetch(self):
|
||||||
super(CacheURLFetchStrategy, self).fetch()
|
super(CacheURLFetchStrategy, self).fetch()
|
||||||
|
@ -853,11 +853,14 @@ def store(self, fetcher, relativeDst):
|
||||||
dst = join_path(self.root, relativeDst)
|
dst = join_path(self.root, relativeDst)
|
||||||
mkdirp(os.path.dirname(dst))
|
mkdirp(os.path.dirname(dst))
|
||||||
fetcher.archive(dst)
|
fetcher.archive(dst)
|
||||||
|
|
||||||
def fetcher(self, targetPath, digest):
|
def fetcher(self, targetPath, digest):
|
||||||
url = "file://" + join_path(self.root, targetPath)
|
url = "file://" + join_path(self.root, targetPath)
|
||||||
return CacheURLFetchStrategy(url, digest)
|
return CacheURLFetchStrategy(url, digest)
|
||||||
|
|
||||||
|
def destroy(self):
|
||||||
|
shutil.rmtree(self.root, ignore_errors=True)
|
||||||
|
|
||||||
|
|
||||||
class FetchError(spack.error.SpackError):
|
class FetchError(spack.error.SpackError):
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue