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

Chandana Kalluri ckalluri at xilinx.com
Tue Oct 8 02:14:21 UTC 2019


Hi Paul,

Any thoughts on implementing this as a separate command  as suggested by Khem?

> -----Original Message-----
> From: Khem Raj <raj.khem at gmail.com>
> Sent: Monday, October 7, 2019 11:40 AM
> To: Chandana Kalluri <ckalluri at xilinx.com>
> Cc: Patches and discussions about the oe-core layer <openembedded-
> core at lists.openembedded.org>
> Subject: Re: [OE-core] [OE-Core][master][PATCH] devtool: Add --remove-work
> option for devtool reset command
> 
> On Mon, Oct 7, 2019 at 11:36 AM Sai Hari Chandana Kalluri
> <chandana.kalluri at xilinx.com> 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.
> 
> perhaps we can have another cmd like "reset-all" like cleanall ?
> which would remove everything that devtool did external to bblayers for that
> recipe.
> 
> >
> > 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)
> > +                        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
> >      tinfoil = setup_tinfoil(basepath=basepath, tracking=True)
> >      try:
> >          rd = parse_recipe(config, tinfoil, args.recipename, True) @@
> > -2160,7 +2170,7 @@ def finish(args, config, basepath, workspace):
> >      if args.dry_run:
> >          logger.info('Resetting recipe (dry-run)')
> >      else:
> > -        _reset([args.recipename], no_clean=no_clean, config=config,
> basepath=basepath, workspace=workspace)
> > +        _reset([args.recipename], no_clean=no_clean,
> > + remove_work=remove_work, config=config, basepath=basepath,
> > + workspace=workspace)
> >
> >      return 0
> >
> > @@ -2272,6 +2282,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('--remove-work', '-r',
> > + action="store_true", help='Clean the sources directory along with
> > + append')
> >      parser_reset.set_defaults(func=reset)
> >
> >      parser_finish = subparsers.add_parser('finish', help='Finish
> > working on a recipe in your workspace', @@ -2282,6 +2293,7 @@ def
> register_commands(subparsers, context):
> >      parser_finish.add_argument('--mode', '-m', choices=['patch', 'srcrev',
> 'auto'], default='auto', help='Update mode (where %(metavar)s is %(choices)s;
> default is %(default)s)', metavar='MODE')
> >      parser_finish.add_argument('--initial-rev', help='Override starting revision
> for patches')
> >      parser_finish.add_argument('--force', '-f', action="store_true",
> > help='Force continuing even if there are uncommitted changes in the
> > source tree repository')
> > +    parser_finish.add_argument('--remove-work', '-r',
> > + action="store_true", help='Clean the sources directory under
> > + workspace')
> >      parser_finish.add_argument('--no-clean', '-n', action="store_true",
> help='Don\'t clean the sysroot to remove recipe output')
> >      parser_finish.add_argument('--no-overrides', '-O', action="store_true",
> help='Do not handle other override branches (if they exist)')
> >      parser_finish.add_argument('--dry-run', '-N',
> > action="store_true", help='Dry-run (just report changes instead of
> > writing them)')
> > --
> > 2.7.4
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core

Thanks,
Chandana


More information about the Openembedded-core mailing list