diff options
Diffstat (limited to 'scripts/lib/devtool/standard.py')
| -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 | |||
