aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-03-04 12:56:13 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-03-20 11:03:11 +0000
commit0c83788b111a761f6f500b86780cc51aed255402 (patch)
treee9ccf8f2045234524f4bae6d9a2061352d510205 /scripts
parent5fabc59d6221c3fe7137b70e31ec2761a4276a6c (diff)
downloadopenembedded-core-contrib-0c83788b111a761f6f500b86780cc51aed255402.tar.gz
devtool: reset: add ability to reset entire workspace
Add a -a/--all option to allow you to quickly reset all recipes in your workspace. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/devtool/standard.py52
1 files changed, 33 insertions, 19 deletions
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 435878cef9..32fb3b656b 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -556,28 +556,42 @@ def status(args, config, basepath, workspace):
def reset(args, config, basepath, workspace):
import bb.utils
- if not args.recipename in workspace:
- logger.error("no recipe named %s in your workspace" % args.recipename)
+ if args.recipename:
+ if args.all:
+ logger.error("Recipe cannot be specified if -a/--all is used")
+ return -1
+ elif not args.recipename in workspace:
+ logger.error("no recipe named %s in your workspace" % args.recipename)
+ return -1
+ elif not args.all:
+ logger.error("Recipe must be specified, or specify -a/--all to reset all recipes")
return -1
- if not args.no_clean:
- logger.info('Cleaning sysroot for recipe %s...' % args.recipename)
- exec_build_env_command(config.init_path, basepath, 'bitbake -c clean %s' % args.recipename)
+ if args.all:
+ recipes = workspace
+ else:
+ recipes = [args.recipename]
+
+ for pn in recipes:
+ if not args.no_clean:
+ logger.info('Cleaning sysroot for recipe %s...' % pn)
+ exec_build_env_command(config.init_path, basepath, 'bitbake -c clean %s' % pn)
- _check_preserve(config, args.recipename)
+ _check_preserve(config, pn)
- preservepath = os.path.join(config.workspace_path, 'attic', args.recipename)
- def preservedir(origdir):
- if os.path.exists(origdir):
- for fn in os.listdir(origdir):
- logger.warn('Preserving %s in %s' % (fn, preservepath))
- bb.utils.mkdirhier(preservepath)
- shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn))
- os.rmdir(origdir)
+ preservepath = os.path.join(config.workspace_path, 'attic', pn)
+ def preservedir(origdir):
+ if os.path.exists(origdir):
+ for fn in os.listdir(origdir):
+ logger.warn('Preserving %s in %s' % (fn, preservepath))
+ bb.utils.mkdirhier(preservepath)
+ shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn))
+ os.rmdir(origdir)
+
+ preservedir(os.path.join(config.workspace_path, 'recipes', pn))
+ # We don't automatically create this dir next to appends, but the user can
+ preservedir(os.path.join(config.workspace_path, 'appends', pn))
- preservedir(os.path.join(config.workspace_path, 'recipes', args.recipename))
- # We don't automatically create this dir next to appends, but the user can
- preservedir(os.path.join(config.workspace_path, 'appends', args.recipename))
return 0
@@ -644,7 +658,7 @@ def register_commands(subparsers, context):
parser_reset = subparsers.add_parser('reset', help='Remove a recipe from your workspace',
description='Removes the specified recipe from your workspace (resetting its state)',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
- parser_reset.add_argument('recipename', help='Recipe to reset')
+ parser_reset.add_argument('recipename', nargs='?', help='Recipe to reset')
+ parser_reset.add_argument('--all', '-a', action="store_true", help='Reset all recipes (clear workspace)')
parser_reset.add_argument('--no-clean', '-n', action="store_true", help='Don\'t clean the sysroot to remove recipe output')
parser_reset.set_defaults(func=reset)
-