[OE-core] [OE-Core][master][PATCH] standard.py: Provide an additional option for devtool reset

Sai Hari Chandana Kalluri chandana.kalluri at xilinx.com
Fri Feb 8 01:57:32 UTC 2019

The devtool reset command cleans the sysroot for a recipe in workspace.
It also removes the append file but leaves the source code as in
workspace. The source is not cleaned intentionally and the user has to
manually remove it before calling devtool modify again.

Provide the user with an option to remove the source code from workspace
by adding a flag to the devtool reset command. The --rm-source option for
the devtool reset command will also clean the source code from the
workspace along with the sysroot and the append file.
Ex: devtool reset --rm-source zip or devtool reset -r zip

Signed-off-by: Sai Hari Chandana Kalluri <chandana.kalluri at xilinx.com>
 scripts/lib/devtool/standard.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index b7d4d47..e3bb0d1 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -1751,7 +1751,7 @@ def status(args, config, basepath, workspace):
     return 0
-def _reset(recipes, no_clean, config, basepath, workspace):
+def _reset(recipes, no_clean, rm_source, config, basepath, workspace):
     """Reset one or more recipes"""
     import oe.path
@@ -1828,11 +1828,14 @@ def _reset(recipes, no_clean, config, basepath, workspace):
         srctreebase = workspace[pn]['srctreebase']
         if os.path.isdir(srctreebase):
-            if os.listdir(srctreebase):
+            if os.listdir(srctreebase) and not rm_source:
                 # We don't want to risk wiping out any work in progress
                 logger.info('Leaving source tree %s as-is; if you no '
                             'longer need it then please delete it manually'
                             % srctreebase)
+            elif rm_source:
+                 logger.info('Cleaning source tree from workspace ')
+                 shutil.rmtree(srctreebase)
                 # This is unlikely, but if it's empty we can just remove it
@@ -1856,7 +1859,7 @@ def reset(args, config, basepath, workspace):
         recipes = args.recipename
-    _reset(recipes, args.no_clean, config, basepath, workspace)
+    _reset(recipes, args.no_clean, args.rm_source, config, basepath, workspace)
     return 0
@@ -2157,6 +2160,7 @@ def register_commands(subparsers, context):
     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.add_argument('--rm-source', '-r', action="store_true", help='Remove source code from the workspace')
     parser_finish = subparsers.add_parser('finish', help='Finish working on a recipe in your workspace',

More information about the Openembedded-core mailing list