Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: shell/subcmds/clean_cmd.py

Issue 6626039: Revert "Plumb in crprocess instead of RunCommand to allow quiet operation." (Closed) Base URL: http://git.chromium.org/git/chromite.git@master
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « shell/subcmds/build_cmd.py ('k') | shell/subcmds/portage_cmds.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Implementation of the 'clean' chromite command.""" 5 """Implementation of the 'clean' chromite command."""
6 6
7 # Python imports 7 # Python imports
8 import optparse 8 import optparse
9 import os 9 import os
10 import sys 10 import sys
11 11
12 12
13 # Local imports 13 # Local imports
14 import chromite.lib.cros_build_lib as cros_lib 14 import chromite.lib.cros_build_lib as cros_lib
15 from chromite.shell import utils 15 from chromite.shell import utils
16 from chromite.shell import subcmd 16 from chromite.shell import subcmd
17 17
18 18
19 def _DoClean(cros_env, chroot_config, build_config, want_force_yes): 19 def _DoClean(chroot_config, build_config, want_force_yes):
20 """Clean a target. 20 """Clean a target.
21 21
22 Args: 22 Args:
23 cros_env: Chromite environment to use for this command.
24 chroot_config: A SafeConfigParser representing the config for the chroot. 23 chroot_config: A SafeConfigParser representing the config for the chroot.
25 build_config: A SafeConfigParser representing the build config. 24 build_config: A SafeConfigParser representing the build config.
26 want_force_yes: If True, we won't ask any questions--we'll just assume 25 want_force_yes: If True, we won't ask any questions--we'll just assume
27 that the user really wants to kill the directory. If False, we'll 26 that the user really wants to kill the directory. If False, we'll
28 show UI asking the user to confirm. 27 show UI asking the user to confirm.
29 """ 28 """
30 # We'll need the directory so we can delete stuff; this is a chroot path. 29 # We'll need the directory so we can delete stuff; this is a chroot path.
31 board_dir = utils.GetBoardDir(build_config) 30 board_dir = utils.GetBoardDir(build_config)
32 31
33 # If not in the chroot, convert board_dir into a non-chroot path... 32 # If not in the chroot, convert board_dir into a non-chroot path...
(...skipping 23 matching lines...) Expand all
57 # can be turned off), but better safe than sorry. 56 # can be turned off), but better safe than sorry.
58 # Note that the restriction on '*' is a bit unnecessary, since no shell 57 # Note that the restriction on '*' is a bit unnecessary, since no shell
59 # expansion should happen. ...but again, I'd rather be safe. 58 # expansion should happen. ...but again, I'd rather be safe.
60 assert os.path.isabs(board_dir), 'Board dir better be absolute' 59 assert os.path.isabs(board_dir), 'Board dir better be absolute'
61 assert board_dir != '/', 'Board dir better not be /' 60 assert board_dir != '/', 'Board dir better not be /'
62 assert '*' not in board_dir, 'Board dir better not have any *s' 61 assert '*' not in board_dir, 'Board dir better not have any *s'
63 assert build_config.get('DEFAULT', 'target'), 'Target better not be blank' 62 assert build_config.get('DEFAULT', 'target'), 'Target better not be blank'
64 assert build_config.get('DEFAULT', 'target') in board_dir, \ 63 assert build_config.get('DEFAULT', 'target') in board_dir, \
65 'Target name better be in board dir' 64 'Target name better be in board dir'
66 65
67 arg_list = ['--', 'rm', '-rf', board_dir] 66 argv = ['sudo', '--', 'rm', '-rf', board_dir]
68 cros_env.RunScript('DELETING: %s' % board_dir, 'sudo', arg_list) 67 cros_lib.RunCommand(argv)
68 cros_lib.Info('Deleted: %s' % board_dir)
69 69
70 70
71 def _DoDistClean(cros_env, chroot_config, want_force_yes): 71 def _DoDistClean(chroot_config, want_force_yes):
72 """Remove the whole chroot. 72 """Remove the whole chroot.
73 73
74 Args: 74 Args:
75 cros_env: Chromite environment to use for this command.
76 chroot_config: A SafeConfigParser representing the config for the chroot. 75 chroot_config: A SafeConfigParser representing the config for the chroot.
77 want_force_yes: If True, we won't ask any questions--we'll just assume 76 want_force_yes: If True, we won't ask any questions--we'll just assume
78 that the user really wants to kill the directory. If False, we'll 77 that the user really wants to kill the directory. If False, we'll
79 show UI asking the user to confirm. 78 show UI asking the user to confirm.
80 """ 79 """
81 if cros_lib.IsInsideChroot(): 80 if cros_lib.IsInsideChroot():
82 cros_lib.Die('Please exit the chroot before trying to delete it.') 81 cros_lib.Die('Please exit the chroot before trying to delete it.')
83 82
84 chroot_dir = utils.GetChrootAbsDir(chroot_config) 83 chroot_dir = utils.GetChrootAbsDir(chroot_config)
85 if not want_force_yes: 84 if not want_force_yes:
86 sys.stderr.write('\n' 85 sys.stderr.write('\n'
87 'Chroot is at: %s\n' 86 'Chroot is at: %s\n'
88 'Are you sure you want to delete it (YES/NO)? ' % 87 'Are you sure you want to delete it (YES/NO)? ' %
89 chroot_dir) 88 chroot_dir)
90 answer = raw_input() 89 answer = raw_input()
91 if answer.lower() not in ('y', 'ye', 'yes'): 90 if answer.lower() not in ('y', 'ye', 'yes'):
92 cros_lib.Die("You must answer 'yes' if you want to proceed.") 91 cros_lib.Die("You must answer 'yes' if you want to proceed.")
93 92
94 # Can pass argv and not shell=True, since no user flags. :) 93 # Can pass argv and not shell=True, since no user flags. :)
95 arg_list = ['--chroot=%s' % chroot_dir, '--delete'] 94 argv = ['./make_chroot', '--chroot=%s' % chroot_dir, '--delete']
95
96 # We'll put CWD as src/scripts when running the command. Since everyone
97 # running by hand has their cwd there, it is probably the safest.
98 cwd = os.path.join(utils.SRCROOT_PATH, 'src', 'scripts')
96 99
97 # Run it. Pass any failures upward. 100 # Run it. Pass any failures upward.
98 cros_env.RunScript('REMOVING CHROOT', './make_chroot', arg_list, cwd=cwd) 101 cros_lib.RunCommand(argv, cwd=cwd)
99 102
100 103
101 class CleanCmd(subcmd.ChromiteCmd): 104 class CleanCmd(subcmd.ChromiteCmd):
102 """Clean out built packages for a target; if target=host, deletes chroot.""" 105 """Clean out built packages for a target; if target=host, deletes chroot."""
103 106
104 def Run(self, raw_argv, chroot_config=None): 107 def Run(self, raw_argv, chroot_config=None):
105 """Run the command. 108 """Run the command.
106 109
107 Args: 110 Args:
108 raw_argv: Command line arguments, including this command's name, but not 111 raw_argv: Command line arguments, including this command's name, but not
(...skipping 16 matching lines...) Expand all
125 cros_lib.Die("Nothing to clean: the chroot doesn't exist.\n %s" % 128 cros_lib.Die("Nothing to clean: the chroot doesn't exist.\n %s" %
126 utils.GetChrootAbsDir(chroot_config)) 129 utils.GetChrootAbsDir(chroot_config))
127 130
128 # Load the build config... 131 # Load the build config...
129 argv, build_config = utils.GetBuildConfigFromArgs(argv) 132 argv, build_config = utils.GetBuildConfigFromArgs(argv)
130 if argv: 133 if argv:
131 cros_lib.Die('Unknown arguments: %s' % ' '.join(argv)) 134 cros_lib.Die('Unknown arguments: %s' % ' '.join(argv))
132 135
133 # If they do clean host, we'll delete the whole chroot 136 # If they do clean host, we'll delete the whole chroot
134 if build_config is None: 137 if build_config is None:
135 _DoDistClean(self.cros_env, chroot_config, options.yes) 138 _DoDistClean(chroot_config, options.yes)
136 else: 139 else:
137 _DoClean(self.cros_env, chroot_config, build_config, options.yes) 140 _DoClean(chroot_config, build_config, options.yes)
OLDNEW
« no previous file with comments | « shell/subcmds/build_cmd.py ('k') | shell/subcmds/portage_cmds.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698