diff options
| author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2015-03-04 12:56:13 +0000 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-03-20 11:27:44 +0000 |
| commit | 9adae67e71f16b36a33479aa661ee0fd0180945c (patch) | |
| tree | e90068fe36b8af559ed82c713cb568f233d79afd /scripts/lib/devtool | |
| parent | e3cfb80f1e5df809663ec2cd63171e6fe7f78c04 (diff) | |
| download | poky-9adae67e71f16b36a33479aa661ee0fd0180945c.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.
(From OE-Core rev: 0c83788b111a761f6f500b86780cc51aed255402)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/devtool')
| -rw-r--r-- | scripts/lib/devtool/standard.py | 52 |
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): | |||
| 556 | 556 | ||
| 557 | def reset(args, config, basepath, workspace): | 557 | def reset(args, config, basepath, workspace): |
| 558 | import bb.utils | 558 | import bb.utils |
| 559 | if not args.recipename in workspace: | 559 | if args.recipename: |
| 560 | logger.error("no recipe named %s in your workspace" % args.recipename) | 560 | if args.all: |
| 561 | logger.error("Recipe cannot be specified if -a/--all is used") | ||
| 562 | return -1 | ||
| 563 | elif not args.recipename in workspace: | ||
| 564 | logger.error("no recipe named %s in your workspace" % args.recipename) | ||
| 565 | return -1 | ||
| 566 | elif not args.all: | ||
| 567 | logger.error("Recipe must be specified, or specify -a/--all to reset all recipes") | ||
| 561 | return -1 | 568 | return -1 |
| 562 | 569 | ||
| 563 | if not args.no_clean: | 570 | if args.all: |
| 564 | logger.info('Cleaning sysroot for recipe %s...' % args.recipename) | 571 | recipes = workspace |
| 565 | exec_build_env_command(config.init_path, basepath, 'bitbake -c clean %s' % args.recipename) | 572 | else: |
| 573 | recipes = [args.recipename] | ||
| 574 | |||
| 575 | for pn in recipes: | ||
| 576 | if not args.no_clean: | ||
| 577 | logger.info('Cleaning sysroot for recipe %s...' % pn) | ||
| 578 | exec_build_env_command(config.init_path, basepath, 'bitbake -c clean %s' % pn) | ||
| 566 | 579 | ||
| 567 | _check_preserve(config, args.recipename) | 580 | _check_preserve(config, pn) |
| 568 | 581 | ||
| 569 | preservepath = os.path.join(config.workspace_path, 'attic', args.recipename) | 582 | preservepath = os.path.join(config.workspace_path, 'attic', pn) |
| 570 | def preservedir(origdir): | 583 | def preservedir(origdir): |
| 571 | if os.path.exists(origdir): | 584 | if os.path.exists(origdir): |
| 572 | for fn in os.listdir(origdir): | 585 | for fn in os.listdir(origdir): |
| 573 | logger.warn('Preserving %s in %s' % (fn, preservepath)) | 586 | logger.warn('Preserving %s in %s' % (fn, preservepath)) |
| 574 | bb.utils.mkdirhier(preservepath) | 587 | bb.utils.mkdirhier(preservepath) |
| 575 | shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn)) | 588 | shutil.move(os.path.join(origdir, fn), os.path.join(preservepath, fn)) |
| 576 | os.rmdir(origdir) | 589 | os.rmdir(origdir) |
| 590 | |||
| 591 | preservedir(os.path.join(config.workspace_path, 'recipes', pn)) | ||
| 592 | # We don't automatically create this dir next to appends, but the user can | ||
| 593 | preservedir(os.path.join(config.workspace_path, 'appends', pn)) | ||
| 577 | 594 | ||
| 578 | preservedir(os.path.join(config.workspace_path, 'recipes', args.recipename)) | ||
| 579 | # We don't automatically create this dir next to appends, but the user can | ||
| 580 | preservedir(os.path.join(config.workspace_path, 'appends', args.recipename)) | ||
| 581 | return 0 | 595 | return 0 |
| 582 | 596 | ||
| 583 | 597 | ||
| @@ -644,7 +658,7 @@ def register_commands(subparsers, context): | |||
| 644 | parser_reset = subparsers.add_parser('reset', help='Remove a recipe from your workspace', | 658 | parser_reset = subparsers.add_parser('reset', help='Remove a recipe from your workspace', |
| 645 | description='Removes the specified recipe from your workspace (resetting its state)', | 659 | description='Removes the specified recipe from your workspace (resetting its state)', |
| 646 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) | 660 | formatter_class=argparse.ArgumentDefaultsHelpFormatter) |
| 647 | parser_reset.add_argument('recipename', help='Recipe to reset') | 661 | parser_reset.add_argument('recipename', nargs='?', help='Recipe to reset') |
| 662 | parser_reset.add_argument('--all', '-a', action="store_true", help='Reset all recipes (clear workspace)') | ||
| 648 | parser_reset.add_argument('--no-clean', '-n', action="store_true", help='Don\'t clean the sysroot to remove recipe output') | 663 | parser_reset.add_argument('--no-clean', '-n', action="store_true", help='Don\'t clean the sysroot to remove recipe output') |
| 649 | parser_reset.set_defaults(func=reset) | 664 | parser_reset.set_defaults(func=reset) |
| 650 | |||
