diff options
Diffstat (limited to 'lib/spack/spack/cmd/deactivate.py')
-rw-r--r-- | lib/spack/spack/cmd/deactivate.py | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/lib/spack/spack/cmd/deactivate.py b/lib/spack/spack/cmd/deactivate.py index ae5241dfe8..ef450b1c94 100644 --- a/lib/spack/spack/cmd/deactivate.py +++ b/lib/spack/spack/cmd/deactivate.py @@ -1,34 +1,14 @@ -############################################################################## -# Copyright (c) 2013-2017, Lawrence Livermore National Security, LLC. -# Produced at the Lawrence Livermore National Laboratory. +# Copyright 2013-2018 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. # -# This file is part of Spack. -# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. -# LLNL-CODE-647188 -# -# For details, see https://github.com/spack/spack -# Please also see the NOTICE and LICENSE files for our notice and the LGPL. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License (as -# published by the Free Software Foundation) version 2.1, February 1999. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and -# conditions of the GNU Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -############################################################################## +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + import argparse import llnl.util.tty as tty -import spack import spack.cmd import spack.store -from spack.directory_layout import YamlViewExtensionsLayout +from spack.filesystem_view import YamlFilesystemView from spack.graph import topological_sort description = "deactivate a package extension" @@ -60,24 +40,29 @@ def deactivate(parser, args): spec = spack.cmd.disambiguate_spec(specs[0]) pkg = spec.package - layout = spack.store.extensions - if args.view is not None: - layout = YamlViewExtensionsLayout(args.view, spack.store.layout) + if args.view: + target = args.view + elif pkg.is_extension: + target = pkg.extendee_spec.prefix + elif pkg.extendable: + target = spec.prefix + + view = YamlFilesystemView(target, spack.store.layout) if args.all: if pkg.extendable: tty.msg("Deactivating all extensions of %s" % pkg.spec.short_spec) ext_pkgs = spack.store.db.activated_extensions_for( - spec, extensions_layout=layout) + spec, view.extensions_layout) for ext_pkg in ext_pkgs: ext_pkg.spec.normalize() - if ext_pkg.is_activated(): - ext_pkg.do_deactivate(force=True, extensions_layout=layout) + if ext_pkg.is_activated(view): + ext_pkg.do_deactivate(view, force=True) elif pkg.is_extension: if not args.force and \ - not spec.package.is_activated(extensions_layout=layout): + not spec.package.is_activated(view): tty.die("%s is not activated." % pkg.spec.short_spec) tty.msg("Deactivating %s and all dependencies." % @@ -90,11 +75,8 @@ def deactivate(parser, args): espec = index[name] epkg = espec.package if epkg.extends(pkg.extendee_spec): - if epkg.is_activated(extensions_layout=layout) or \ - args.force: - - epkg.do_deactivate( - force=args.force, extensions_layout=layout) + if epkg.is_activated(view) or args.force: + epkg.do_deactivate(view, force=args.force) else: tty.die( @@ -107,7 +89,7 @@ def deactivate(parser, args): "Did you mean 'spack deactivate --all'?") if not args.force and \ - not spec.package.is_activated(extensions_layout=layout): + not spec.package.is_activated(view): tty.die("Package %s is not activated." % specs[0].short_spec) - spec.package.do_deactivate(force=args.force, extensions_layout=layout) + spec.package.do_deactivate(view, force=args.force) |