diff options
Diffstat (limited to 'lib/spack/spack/cmd/deprecate.py')
-rw-r--r-- | lib/spack/spack/cmd/deprecate.py | 103 |
1 files changed, 65 insertions, 38 deletions
diff --git a/lib/spack/spack/cmd/deprecate.py b/lib/spack/spack/cmd/deprecate.py index d9f7bd4b6e..cc59475a62 100644 --- a/lib/spack/spack/cmd/deprecate.py +++ b/lib/spack/spack/cmd/deprecate.py @@ -2,7 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -'''Deprecate one Spack install in favor of another +"""Deprecate one Spack install in favor of another Spack packages of different configurations cannot be installed to the same location. However, in some circumstances (e.g. security patches) old @@ -12,7 +12,7 @@ place. It is up to the user to ensure binary compatibility between the deprecated installation and its deprecator. -''' +""" from __future__ import print_function import argparse @@ -34,40 +34,66 @@ level = "long" # Arguments for display_specs when we find ambiguity display_args = { - 'long': True, - 'show_flags': True, - 'variants': True, - 'indent': 4, + "long": True, + "show_flags": True, + "variants": True, + "indent": 4, } def setup_parser(sp): setup_parser.parser = sp - arguments.add_common_arguments(sp, ['yes_to_all']) + arguments.add_common_arguments(sp, ["yes_to_all"]) deps = sp.add_mutually_exclusive_group() - deps.add_argument('-d', '--dependencies', action='store_true', - default=True, dest='dependencies', - help='Deprecate dependencies (default)') - deps.add_argument('-D', '--no-dependencies', action='store_false', - default=True, dest='dependencies', - help='Do not deprecate dependencies') + deps.add_argument( + "-d", + "--dependencies", + action="store_true", + default=True, + dest="dependencies", + help="Deprecate dependencies (default)", + ) + deps.add_argument( + "-D", + "--no-dependencies", + action="store_false", + default=True, + dest="dependencies", + help="Do not deprecate dependencies", + ) install = sp.add_mutually_exclusive_group() - install.add_argument('-i', '--install-deprecator', action='store_true', - default=False, dest='install', - help='Concretize and install deprecator spec') - install.add_argument('-I', '--no-install-deprecator', - action='store_false', default=False, dest='install', - help='Deprecator spec must already be installed (default)') - - sp.add_argument('-l', '--link-type', type=str, - default='soft', choices=['soft', 'hard'], - help="Type of filesystem link to use for deprecation (default soft)") - - sp.add_argument('specs', nargs=argparse.REMAINDER, - help="spec to deprecate and spec to use as deprecator") + install.add_argument( + "-i", + "--install-deprecator", + action="store_true", + default=False, + dest="install", + help="Concretize and install deprecator spec", + ) + install.add_argument( + "-I", + "--no-install-deprecator", + action="store_false", + default=False, + dest="install", + help="Deprecator spec must already be installed (default)", + ) + + sp.add_argument( + "-l", + "--link-type", + type=str, + default="soft", + choices=["soft", "hard"], + help="Type of filesystem link to use for deprecation (default soft)", + ) + + sp.add_argument( + "specs", nargs=argparse.REMAINDER, help="spec to deprecate and spec to use as deprecator" + ) def deprecate(parser, args): @@ -76,11 +102,10 @@ def deprecate(parser, args): specs = spack.cmd.parse_specs(args.specs) if len(specs) != 2: - raise SpackError('spack deprecate requires exactly two specs') + raise SpackError("spack deprecate requires exactly two specs") install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED] - deprecate = spack.cmd.disambiguate_spec(specs[0], env, local=True, - installed=install_query) + deprecate = spack.cmd.disambiguate_spec(specs[0], env, local=True, installed=install_query) if args.install: deprecator = specs[1].concretized() @@ -91,9 +116,11 @@ def deprecate(parser, args): all_deprecate = [] all_deprecators = [] - generator = deprecate.traverse( - order='post', type='link', root=True - ) if args.dependencies else [deprecate] + generator = ( + deprecate.traverse(order="post", type="link", root=True) + if args.dependencies + else [deprecate] + ) for spec in generator: all_deprecate.append(spec) all_deprecators.append(deprecator[spec.name]) @@ -101,7 +128,7 @@ def deprecate(parser, args): # that matches the name of a dep of the spec if not args.yes_to_all: - tty.msg('The following packages will be deprecated:\n') + tty.msg("The following packages will be deprecated:\n") spack.cmd.display_specs(all_deprecate, **display_args) tty.msg("In favor of (respectively):\n") spack.cmd.display_specs(all_deprecators, **display_args) @@ -115,16 +142,16 @@ def deprecate(parser, args): already_deprecated.append(spec) already_deprecated_for.append(deprecated_for) - tty.msg('The following packages are already deprecated:\n') + tty.msg("The following packages are already deprecated:\n") spack.cmd.display_specs(already_deprecated, **display_args) - tty.msg('In favor of (respectively):\n') + tty.msg("In favor of (respectively):\n") spack.cmd.display_specs(already_deprecated_for, **display_args) - answer = tty.get_yes_or_no('Do you want to proceed?', default=False) + answer = tty.get_yes_or_no("Do you want to proceed?", default=False) if not answer: - tty.die('Will not deprecate any packages.') + tty.die("Will not deprecate any packages.") - link_fn = os.link if args.link_type == 'hard' else symlink + link_fn = os.link if args.link_type == "hard" else symlink for dcate, dcator in zip(all_deprecate, all_deprecators): dcate.package.do_deprecate(dcator, link_fn) |