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

Peter Kjellerstedt peter.kjellerstedt at axis.com
Tue Oct 8 17:37:02 UTC 2019


> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org <openembedded-
> core-bounces at lists.openembedded.org> On Behalf Of Chandana Kalluri
> Sent: den 8 oktober 2019 04:14
> To: Paul Eggleton <paul.eggleton at linux.intel.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
> 
> Hi Paul,
> 
> Any thoughts on implementing this as a separate command  as suggested
> by Khem?

For what it's worth, I think the original suggested solution with a new 
option to the existing `devtool reset` and `devtool finish` commands is 
the better one.

> > -----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
> > >
> 
> Thanks,
> Chandana

//Peter


More information about the Openembedded-core mailing list