add python cache removal to spack clean
(#8419)
Remove .pyc and .pyo files along with __pycache__directory if the user provides the -p/--python-cache option to "spack clean"
This commit is contained in:
parent
1d3ad6ea7e
commit
980817575a
@ -23,6 +23,8 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
##############################################################################
|
||||
import argparse
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import llnl.util.tty as tty
|
||||
|
||||
@ -30,6 +32,7 @@
|
||||
import spack.cmd
|
||||
import spack.repo
|
||||
import spack.stage
|
||||
from spack.paths import spack_root
|
||||
|
||||
description = "remove temporary build files and/or downloaded archives"
|
||||
section = "build"
|
||||
@ -37,9 +40,9 @@
|
||||
|
||||
|
||||
class AllClean(argparse.Action):
|
||||
"""Activates flags -s -d and -m simultaneously"""
|
||||
"""Activates flags -s -d -m and -p simultaneously"""
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
parser.parse_args(['-sdm'], namespace=namespace)
|
||||
parser.parse_args(['-sdmp'], namespace=namespace)
|
||||
|
||||
|
||||
def setup_parser(subparser):
|
||||
@ -52,6 +55,9 @@ def setup_parser(subparser):
|
||||
subparser.add_argument(
|
||||
'-m', '--misc-cache', action='store_true',
|
||||
help="remove long-lived caches, like the virtual package index")
|
||||
subparser.add_argument(
|
||||
'-p', '--python-cache', action='store_true',
|
||||
help="remove .pyc, .pyo files and __pycache__ folders")
|
||||
subparser.add_argument(
|
||||
'-a', '--all', action=AllClean, help="equivalent to -sdm", nargs=0
|
||||
)
|
||||
@ -63,9 +69,9 @@ def setup_parser(subparser):
|
||||
|
||||
|
||||
def clean(parser, args):
|
||||
|
||||
# If nothing was set, activate the default
|
||||
if not any([args.specs, args.stage, args.downloads, args.misc_cache]):
|
||||
if not any([args.specs, args.stage, args.downloads, args.misc_cache,
|
||||
args.python_cache]):
|
||||
args.stage = True
|
||||
|
||||
# Then do the cleaning falling through the cases
|
||||
@ -88,3 +94,17 @@ def clean(parser, args):
|
||||
if args.misc_cache:
|
||||
tty.msg('Removing cached information on repositories')
|
||||
spack.caches.misc_cache.destroy()
|
||||
|
||||
if args.python_cache:
|
||||
tty.msg('Removing python cache files')
|
||||
for root, dirs, files in os.walk(spack_root):
|
||||
for f in files:
|
||||
if f.endswith('.pyc') or f.endswith('.pyo'):
|
||||
fname = os.path.join(root, f)
|
||||
tty.debug('Removing {0}'.format(fname))
|
||||
os.remove(fname)
|
||||
for d in dirs:
|
||||
if d == '__pycache__':
|
||||
dname = os.path.join(root, d)
|
||||
tty.debug('Removing {0}'.format(dname))
|
||||
shutil.rmtree(dname)
|
||||
|
Loading…
Reference in New Issue
Block a user