diff options
-rwxr-xr-x | bin/spack | 24 | ||||
-rw-r--r-- | lib/spack/spack/cmd/clean.py | 28 |
2 files changed, 15 insertions, 37 deletions
@@ -56,30 +56,6 @@ else: spack_yaml_libs = os.path.join(spack_external_libs, "yaml/lib3") sys.path.insert(0, spack_yaml_libs) -# Quick and dirty check to clean orphaned .pyc files left over from -# previous revisions. These files were present in earlier versions of -# Spack, were removed, but shadow system modules that Spack still -# imports. If we leave them, Spack will fail in mysterious ways. -# TODO: more elegant solution for orphaned pyc files. -orphaned_pyc_files = [ - os.path.join(spack_external_libs, 'functools.pyc'), - os.path.join(spack_external_libs, 'ordereddict.pyc'), - os.path.join(spack_lib_path, 'spack', 'platforms', 'cray_xc.pyc'), - os.path.join(spack_lib_path, 'spack', 'cmd', 'package-list.pyc'), - os.path.join(spack_lib_path, 'spack', 'cmd', 'test-install.pyc'), - os.path.join(spack_lib_path, 'spack', 'cmd', 'url-parse.pyc'), - os.path.join(spack_lib_path, 'spack', 'test', 'yaml.pyc') -] - -for pyc_file in orphaned_pyc_files: - if not os.path.exists(pyc_file): - continue - try: - os.remove(pyc_file) - except OSError as e: - print("WARNING: Spack may fail mysteriously. " - "Couldn't remove orphaned .pyc file: %s" % pyc_file) - # Once we've set up the system path, run the spack main method import spack.main # noqa sys.exit(spack.main.main()) diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index b61a02adb0..185a2c406a 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -32,7 +32,8 @@ import spack.caches import spack.cmd import spack.repo import spack.stage -from spack.paths import spack_root +from spack.paths import lib_path, var_path + description = "remove temporary build files and/or downloaded archives" section = "build" @@ -59,7 +60,7 @@ def setup_parser(subparser): '-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 + '-a', '--all', action=AllClean, help="equivalent to -sdmp", nargs=0 ) subparser.add_argument( 'specs', @@ -97,14 +98,15 @@ def clean(parser, args): 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) + for directory in [lib_path, var_path]: + for root, dirs, files in os.walk(directory): + 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) |