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 | |||