[OE-core] [OE-Core][master][PATCH] devtool: Add --remove-work option for devtool reset command

Paul Eggleton paul.eggleton at linux.intel.com
Wed Oct 9 02:03:57 UTC 2019


Hi Chandana,

On Saturday, 5 October 2019 11:52:29 AM NZDT Sai Hari Chandana Kalluri wrote:
> Enable --remove-work option for devtool reset command that allows user
> to clean up source directory within workspace.
> 
> Currently devtool reset command only removes recipes and user is forced
> to manually remove the sources directory within the workspace before
> running devtool modify again.
> 
> Using devtool reset -r or devtool reset --remove-work option, user can
> cleanup the sources directory along with the recipe instead of manually
> cleaning it.

Thanks for adding this, some comments below.
 
> syntax: devtool reset -r <recipename>
>     Ex: devtool reset -r zip
> 
> 	devtool finish -r <recipename> <layer-name>
>     Ex: devtool finish -r zip meta-yocto-bsp
> 
> Signed-off-by: Sai Hari Chandana Kalluri <chandana.kalluri at xilinx.com>
> ---
>  scripts/lib/devtool/standard.py | 26 +++++++++++++++++++-------
>  1 file changed, 19 insertions(+), 7 deletions(-)
> 
> diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
> index 60c9a04..1c0cd8a 100644
> --- a/scripts/lib/devtool/standard.py
> +++ b/scripts/lib/devtool/standard.py
> @@ -1852,7 +1852,7 @@ def status(args, config, basepath, workspace):
>      return 0
>  
>  
> -def _reset(recipes, no_clean, config, basepath, workspace):
> +def _reset(recipes, no_clean, remove_work, config, basepath, workspace):
>      """Reset one or more recipes"""
>      import oe.path
>  
> @@ -1930,10 +1930,15 @@ def _reset(recipes, no_clean, config, basepath, workspace):
>          srctreebase = workspace[pn]['srctreebase']
>          if os.path.isdir(srctreebase):
>              if os.listdir(srctreebase):
> -                # 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)
> +                    if remove_work:
> +                        logger.info('-r argument used on %s, removing source tree.'
> +                                    ' You will lose any unsaved work' %pn)

This may be true, but isn't it a bit harsh given the user can't do anything about it at this point? I would simply say "Removing source tree as requested (-r)" and leave it at that.


> +                        shutil.rmtree(srctreebase)
> +                    else:
> +                        # 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)
>              else:
>                  # This is unlikely, but if it's empty we can just remove it
>                  os.rmdir(srctreebase)
> @@ -1943,6 +1948,10 @@ def _reset(recipes, no_clean, config, basepath, workspace):
>  def reset(args, config, basepath, workspace):
>      """Entry point for the devtool 'reset' subcommand"""
>      import bb
> +    import shutil
> +
> +    recipes = ""
> +
>      if args.recipename:
>          if args.all:
>              raise DevtoolError("Recipe cannot be specified if -a/--all is used")
> @@ -1957,7 +1966,7 @@ def reset(args, config, basepath, workspace):
>      else:
>          recipes = args.recipename
>  
> -    _reset(recipes, args.no_clean, config, basepath, workspace)
> +    _reset(recipes, args.no_clean, args.remove_work, config, basepath, workspace)
>  
>      return 0
>  
> @@ -2009,6 +2018,7 @@ def finish(args, config, basepath, workspace):
>              raise DevtoolError('Source tree is not clean:\n\n%s\nEnsure you have committed your changes or use -f/--force if you are sure there\'s nothing that needs to be committed' % dirty)
>  
>      no_clean = args.no_clean
> +    remove_work=args.remove_work

Please use PEP-8 spacing i.e. 

+    remove_work = args.remove_work

(Only for standalone assignments - named parameters in function calls don't use spaces around the equals)


> +    parser_reset.add_argument('--remove-work', '-r', action="store_true", help='Clean the sources directory along with append')

The help text should be "Also delete the working source tree (NOTE: will delete unsaved work)"

> +    parser_finish.add_argument('--remove-work', '-r', action="store_true", help='Clean the sources directory under workspace')

Similar with the help text: "Also delete the working source tree (NOTE: will delete uncommitted work)"

Also, please add oe-selftest tests for this as mentioned in my earlier reply - given we're deleting things here we need to make sure it doesn't regress in future.

Thanks,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre




More information about the Openembedded-core mailing list