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

Khem Raj raj.khem at gmail.com
Tue Oct 8 17:39:34 UTC 2019


On Tue, Oct 8, 2019 at 10:37 AM Peter Kjellerstedt <
peter.kjellerstedt at axis.com> wrote:

> > -----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.


Yeah thinking about it again we already have two commands which would need
same functionality it’s not good to introduce a third one although I think
the usability of current solution will be a bit nicer if it was independent
option

>
>
> > > -----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
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20191008/2821dee3/attachment-0001.html>


More information about the Openembedded-core mailing list