summaryrefslogtreecommitdiffstats
path: root/scripts/lib/devtool/standard.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lib/devtool/standard.py')
-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):
556 556
557def reset(args, config, basepath, workspace): 557def 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