[OE-core] [OE-Core][PATCH 3/3] devtool: provide support for devtool menuconfig command.

Alejandro Hernandez alejandro.enedino.hernandez-samaniego at xilinx.com
Wed Dec 5 17:26:31 UTC 2018


Hey Scott,

On 12/5/2018 8:38 AM, Scott Rifenbark wrote:
> Hi,
>
> This probably has documentation ramifications yes?  See 
> https://yoctoproject.org/docs/2.6/mega-manual/mega-manual.html#ref-devtool-reference.


Yup, this should be documented, we can provide you a draft for you to 
review, expect it within the next few days.


Cheers,

Alejandro


>
> Thanks,
> Scott
>
> On Wed, Dec 5, 2018 at 8:27 AM Sai Hari Chandana Kalluri 
> <chandana.kalluri at xilinx.com <mailto:chandana.kalluri at xilinx.com>> wrote:
>
>     All packages that support the menuconfig task will be able to run
>     devtool
>     menuconfig command. This would allow the user to modify the current
>     configure options and create a config fragment which can be added to a
>     recipe using devtool finish.
>
>     1. The patch checks if devtool menuconfig command is called for a
>     valid
>     package.
>     2. It checks for oe-local-files dir within source and creates one
>     if needed, this directory is needed to store the final generated
>     config
>     fragment so that devtool finish can update the recipe.
>     3. Menuconfig command is called for users to make necessary
>     changes. After
>     saving the changes, diffconfig command is run to generate the
>     fragment.
>
>     Syntax:
>             devtool menuconfig <package name>
>              Ex: devtool menuconfig linux-yocto
>
>     The config fragment is saved as devtool-fragment.cfg within
>     oe-local-files dir.
>
>             Ex:
>     <workspace_path>/sources/linux-yocto/oe-local-files/devtool-fragment.cfg
>
>     Run devtool finish to update the recipe by appending the config
>     fragment
>     to SRC_URI and place a copy of the fragment within the layer where the
>     recipe resides.
>             Ex: devtool finish linux-yocto meta
>
>     [YOCTO #10416]
>
>     Signed-off-by: Sai Hari Chandana Kalluri
>     <chandana.kalluri at xilinx.com <mailto:chandana.kalluri at xilinx.com>>
>     Signed-off-by: Alejandro Enedino Hernandez Samaniego
>     <alejandr at xilinx.com <mailto:alejandr at xilinx.com>>
>     ---
>      scripts/lib/devtool/menuconfig.py | 80
>     +++++++++++++++++++++++++++++++++++++++
>      1 file changed, 80 insertions(+)
>      create mode 100644 scripts/lib/devtool/menuconfig.py
>
>     diff --git a/scripts/lib/devtool/menuconfig.py
>     b/scripts/lib/devtool/menuconfig.py
>     new file mode 100644
>     index 0000000..38133db
>     --- /dev/null
>     +++ b/scripts/lib/devtool/menuconfig.py
>     @@ -0,0 +1,80 @@
>     +# OpenEmbedded Development tool - menuconfig command plugin
>     +#
>     +# Copyright (C) 2018 Xilinx
>     +# Written by: Chandana Kalluri <ckalluri at xilinx.com
>     <mailto:ckalluri at xilinx.com>>
>     +#
>     +# This program is free software; you can redistribute it and/or
>     modify
>     +# it under the terms of the GNU General Public License version 2 as
>     +# published by the Free Software Foundation.
>     +#
>     +# This program is distributed in the hope that it will be useful,
>     +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>     +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>     +# GNU General Public License for more details.
>     +#
>     +# You should have received a copy of the GNU General Public
>     License along
>     +# with this program; if not, write to the Free Software
>     Foundation, Inc.,
>     +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>     +
>     +"""Devtool menuconfig plugin"""
>     +
>     +import os
>     +import bb
>     +import logging
>     +import argparse
>     +import re
>     +import glob
>     +from devtool import setup_tinfoil, parse_recipe, DevtoolError,
>     standard, exec_build_env_command
>     +
>     +logger = logging.getLogger('devtool')
>     +
>     +def menuconfig(args, config, basepath, workspace):
>     +    """Entry point for the devtool 'menuconfig' subcommand"""
>     +
>     +    rd = ""
>     +    kconfigpath = ""
>     +    pn_src = ""
>     +    localfilesdir = ""
>     +    workspace_dir = ""
>     +    tinfoil = setup_tinfoil(basepath=basepath)
>     +    try:
>     +      rd = parse_recipe(config, tinfoil, args.component,
>     appends=True, filter_workspace=False)
>     +      if not rd:
>     +         return 1
>     +
>     +      pn =  rd.getVar('PN', True)
>     +      if pn not in workspace:
>     +         raise DevtoolError("Run devtool modify before calling
>     menuconfig for %s" %pn)
>     +
>     +      if not rd.getVarFlag('do_menuconfig','task'):
>     +         raise DevtoolError("This package does not support
>     menuconfig option")
>     +
>     +      workspace_dir = os.path.join(basepath,'workspace/sources')
>     +      kconfigpath = rd.getVar('B')
>     +      pn_src = os.path.join(workspace_dir,pn)
>     +
>     +      #add check to see if oe_local_files exists or not
>     +      localfilesdir = os.path.join(pn_src,'oe-local-files')
>     +      if not os.path.exists(localfilesdir):
>     +          bb.utils.mkdirhier(localfilesdir)
>     +          #Add gitignore to ensure source tree is clean
>     +          gitignorefile = os.path.join(localfilesdir,'.gitignore')
>     +          with open(gitignorefile, 'w') as f:
>     +                  f.write('# Ignore local files, by default.
>     Remove this file if you want to commit the directory to Git\n')
>     +                  f.write('*\n')
>     +
>     +    finally:
>     +      tinfoil.shutdown()
>     +
>     + logger.info <http://logger.info>('Launching menuconfig')
>     +    exec_build_env_command(config.init_path, basepath, 'bitbake
>     -c menuconfig %s' % pn, watch=True)
>     +    fragment = os.path.join(localfilesdir, 'devtool-fragment.cfg')
>     +    res = standard._create_kconfig_diff(pn_src,rd,fragment)
>     +
>     +    return 0
>     +
>     +def register_commands(subparsers, context):
>     +    """register devtool subcommands from this plugin"""
>     +    parser_menuconfig =
>     subparsers.add_parser('menuconfig',help='allows altering the
>     system component configuration', description='launches the make
>     menuconfig command, allows user to make changes to configuration.
>     creates a config fragment', group='advanced')
>     +    parser_menuconfig.add_argument('component', help='compenent
>     to alter config')
>     +
>     parser_menuconfig.set_defaults(func=menuconfig,fixed_setup=context.fixed_setup)
>     -- 
>     2.7.4
>
>     -- 
>     _______________________________________________
>     Openembedded-core mailing list
>     Openembedded-core at lists.openembedded.org
>     <mailto: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/20181205/4a41d4f6/attachment-0001.html>


More information about the Openembedded-core mailing list