123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044 |
- # ex:ts=4:sw=4:sts=4:et
- # -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
- #
- # Copyright (c) 2012, Intel Corporation.
- # All rights reserved.
- #
- # 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.
- #
- # DESCRIPTION
- # This module implements some basic help invocation functions along
- # with the bulk of the help topic text for the Yocto BSP Tools.
- #
- # AUTHORS
- # Tom Zanussi <tom.zanussi (at] intel.com>
- #
- import subprocess
- import logging
- def subcommand_error(args):
- logging.info("invalid subcommand %s" % args[0])
- def display_help(subcommand, subcommands):
- """
- Display help for subcommand.
- """
- if subcommand not in subcommands:
- return False
- help = subcommands.get(subcommand, subcommand_error)[2]
- pager = subprocess.Popen('less', stdin=subprocess.PIPE)
- pager.communicate(help)
- return True
- def yocto_help(args, usage_str, subcommands):
- """
- Subcommand help dispatcher.
- """
- if len(args) == 1 or not display_help(args[1], subcommands):
- print(usage_str)
- def invoke_subcommand(args, parser, main_command_usage, subcommands):
- """
- Dispatch to subcommand handler borrowed from combo-layer.
- Should use argparse, but has to work in 2.6.
- """
- if not args:
- logging.error("No subcommand specified, exiting")
- parser.print_help()
- elif args[0] == "help":
- yocto_help(args, main_command_usage, subcommands)
- elif args[0] not in subcommands:
- logging.error("Unsupported subcommand %s, exiting\n" % (args[0]))
- parser.print_help()
- else:
- usage = subcommands.get(args[0], subcommand_error)[1]
- subcommands.get(args[0], subcommand_error)[0](args[1:], usage)
- ##
- # yocto-bsp help and usage strings
- ##
- yocto_bsp_usage = """
- Create a customized Yocto BSP layer.
- usage: yocto-bsp [--version] [--help] COMMAND [ARGS]
- Current 'yocto-bsp' commands are:
- create Create a new Yocto BSP
- list List available values for options and BSP properties
- See 'yocto-bsp help COMMAND' for more information on a specific command.
- """
- yocto_bsp_help_usage = """
- usage: yocto-bsp help <subcommand>
- This command displays detailed help for the specified subcommand.
- """
- yocto_bsp_create_usage = """
- Create a new Yocto BSP
- usage: yocto-bsp create <bsp-name> <karch> [-o <DIRNAME> | --outdir <DIRNAME>]
- [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
- This command creates a Yocto BSP based on the specified parameters.
- The new BSP will be a new Yocto BSP layer contained by default within
- the top-level directory specified as 'meta-bsp-name'. The -o option
- can be used to place the BSP layer in a directory with a different
- name and location.
- The value of the 'karch' parameter determines the set of files that
- will be generated for the BSP, along with the specific set of
- 'properties' that will be used to fill out the BSP-specific portions
- of the BSP. The possible values for the 'karch' paramter can be
- listed via 'yocto-bsp list karch'.
- NOTE: Once created, you should add your new layer to your
- bblayers.conf file in order for it to be subsequently seen and
- modified by the yocto-kernel tool.
- See 'yocto bsp help create' for more detailed instructions.
- """
- yocto_bsp_create_help = """
- NAME
- yocto-bsp create - Create a new Yocto BSP
- SYNOPSIS
- yocto-bsp create <bsp-name> <karch> [-o <DIRNAME> | --outdir <DIRNAME>]
- [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
- DESCRIPTION
- This command creates a Yocto BSP based on the specified
- parameters. The new BSP will be a new Yocto BSP layer contained
- by default within the top-level directory specified as
- 'meta-bsp-name'. The -o option can be used to place the BSP layer
- in a directory with a different name and location.
- The value of the 'karch' parameter determines the set of files
- that will be generated for the BSP, along with the specific set of
- 'properties' that will be used to fill out the BSP-specific
- portions of the BSP. The possible values for the 'karch' paramter
- can be listed via 'yocto-bsp list karch'.
- The BSP-specific properties that define the values that will be
- used to generate a particular BSP can be specified on the
- command-line using the -i option and supplying a JSON object
- consisting of the set of name:value pairs needed by the BSP.
- If the -i option is not used, the user will be interactively
- prompted for each of the required property values, which will then
- be used as values for BSP generation.
- The set of properties available for a given architecture can be
- listed using the 'yocto-bsp list' command.
- Specifying -c causes the Python code generated and executed to
- create the BSP to be dumped to the 'bspgen.out' file in the
- current directory, and is useful for debugging.
- NOTE: Once created, you should add your new layer to your
- bblayers.conf file in order for it to be subsequently seen and
- modified by the yocto-kernel tool.
- For example, assuming your poky repo is at /path/to/poky, your new
- BSP layer is at /path/to/poky/meta-mybsp, and your build directory
- is /path/to/build:
- $ gedit /path/to/build/conf/bblayers.conf
- BBLAYERS ?= " \\
- /path/to/poky/meta \\
- /path/to/poky/meta-poky \\
- /path/to/poky/meta-mybsp \\
- "
- """
- yocto_bsp_list_usage = """
- usage: yocto-bsp list karch
- yocto-bsp list <karch> properties
- [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
- yocto-bsp list <karch> property <xxx>
- [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
- This command enumerates the complete set of possible values for a
- specified option or property needed by the BSP creation process.
- The first form enumerates all the possible values that exist and can
- be specified for the 'karch' parameter to the 'yocto bsp create'
- command.
- The second form enumerates all the possible properties that exist and
- must have values specified for them in the 'yocto bsp create' command
- for the given 'karch'.
- The third form enumerates all the possible values that exist and can
- be specified for any of the enumerable properties of the given
- 'karch' in the 'yocto bsp create' command.
- See 'yocto-bsp help list' for more details.
- """
- yocto_bsp_list_help = """
- NAME
- yocto-bsp list - List available values for options and BSP properties
- SYNOPSIS
- yocto-bsp list karch
- yocto-bsp list <karch> properties
- [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
- yocto-bsp list <karch> property <xxx>
- [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
- DESCRIPTION
- This command enumerates the complete set of possible values for a
- specified option or property needed by the BSP creation process.
- The first form enumerates all the possible values that exist and
- can be specified for the 'karch' parameter to the 'yocto bsp
- create' command. Example output for the 'list karch' command:
- $ yocto-bsp list karch
- Architectures available:
- arm
- powerpc
- i386
- mips
- mips64
- x86_64
- qemu
- The second form enumerates all the possible properties that exist
- and must have values specified for them in the 'yocto bsp create'
- command for the given 'karch'. This command is mainly meant to
- allow the development user interface alternatives to the default
- text-based prompting interface. If the -o option is specified,
- the list of properties, in addition to being displayed, will be
- written to the specified file as a JSON object. In this case, the
- object will consist of the set of name:value pairs corresponding
- to the (possibly nested) dictionary of properties defined by the
- input statements used by the BSP. Some example output for the
- 'list properties' command:
- $ yocto-bsp list arm properties
- "touchscreen" : {
- "msg" : Does your BSP have a touchscreen? (y/N)
- "default" : n
- "type" : boolean
- }
- "uboot_loadaddress" : {
- "msg" : Please specify a value for UBOOT_LOADADDRESS.
- "default" : 0x80008000
- "type" : edit
- "prio" : 40
- }
- "kernel_choice" : {
- "prio" : 10
- "default" : linux-yocto_3.2
- "depends-on" : use_default_kernel
- "depends-on-val" : n
- "msg" : Please choose the kernel to use in this BSP =>
- "type" : choicelist
- "gen" : bsp.kernel.kernels
- }
- "if kernel_choice == "linux-yocto_3.0":" : {
- "base_kbranch_linux_yocto_3_0" : {
- "prio" : 20
- "default" : yocto/standard
- "depends-on" : new_kbranch_linux_yocto_3_0
- "depends-on-val" : y
- "msg" : Please choose a machine branch to base this BSP on =>
- "type" : choicelist
- "gen" : bsp.kernel.all_branches
- }
- .
- .
- .
- Each entry in the output consists of the name of the input element
- e.g. "touchscreen", followed by the properties defined for that
- element enclosed in braces. This information should provide
- sufficient information to create a complete user interface with.
- Two features of the scheme provide for conditional input. First,
- if a Python "if" statement appears in place of an input element
- name, the set of enclosed input elements apply and should be
- presented to the user only if the 'if' statement evaluates to
- true. The test in the if statement will always reference another
- input element in the list, which means that the element being
- tested should be presented to the user before the elements
- enclosed by the if block. Secondly, in a similar way, some
- elements contain "depends-on" and depends-on-val" tags, which mean
- that the affected input element should only be presented to the
- user if the element it depends on has already been presented to
- the user and the user has selected the specified value for that
- element.
- The third form enumerates all the possible values that exist and
- can be specified for any of the enumerable properties of the given
- 'karch' in the 'yocto bsp create' command. If the -o option is
- specified, the list of values for the given property, in addition
- to being displayed, will be written to the specified file as a
- JSON object. In this case, the object will consist of the set of
- name:value pairs corresponding to the array of property values
- associated with the property.
- $ yocto-bsp list i386 property xserver_choice
- ["xserver_vesa", "VESA xserver support"]
- ["xserver_i915", "i915 xserver support"]
- $ yocto-bsp list arm property base_kbranch_linux_yocto_3_0
- Getting branches from remote repo git://git.yoctoproject.org/linux-yocto-3.0...
- ["yocto/base", "yocto/base"]
- ["yocto/eg20t", "yocto/eg20t"]
- ["yocto/gma500", "yocto/gma500"]
- ["yocto/pvr", "yocto/pvr"]
- ["yocto/standard/arm-versatile-926ejs", "yocto/standard/arm-versatile-926ejs"]
- ["yocto/standard/base", "yocto/standard/base"]
- ["yocto/standard/cedartrail", "yocto/standard/cedartrail"]
- .
- .
- .
- ["yocto/standard/qemu-ppc32", "yocto/standard/qemu-ppc32"]
- ["yocto/standard/routerstationpro", "yocto/standard/routerstationpro"]
- The third form as well is meant mainly for developers of
- alternative interfaces - it allows the developer to fetch the
- possible values for a given input element on-demand. This
- on-demand capability is especially valuable for elements that
- require relatively expensive remote operations to fulfill, such as
- the example that returns the set of branches available in a remote
- git tree above.
- """
- ##
- # yocto-kernel help and usage strings
- ##
- yocto_kernel_usage = """
- Modify and list Yocto BSP kernel config items and patches.
- usage: yocto-kernel [--version] [--help] COMMAND [ARGS]
- Current 'yocto-kernel' commands are:
- config list List the modifiable set of bare kernel config options for a BSP
- config add Add or modify bare kernel config options for a BSP
- config rm Remove bare kernel config options from a BSP
- patch list List the patches associated with a BSP
- patch add Patch the Yocto kernel for a BSP
- patch rm Remove patches from a BSP
- feature list List the features used by a BSP
- feature add Have a BSP use a feature
- feature rm Have a BSP stop using a feature
- features list List the features available to BSPs
- feature describe Describe a particular feature
- feature create Create a new BSP-local feature
- feature destroy Remove a BSP-local feature
- See 'yocto-kernel help COMMAND' for more information on a specific command.
- """
- yocto_kernel_help_usage = """
- usage: yocto-kernel help <subcommand>
- This command displays detailed help for the specified subcommand.
- """
- yocto_kernel_config_list_usage = """
- List the modifiable set of bare kernel config options for a BSP
- usage: yocto-kernel config list <bsp-name>
- This command lists the 'modifiable' config items for a BSP i.e. the
- items which are eligible for modification or removal by other
- yocto-kernel commands.
- 'modifiable' config items are the config items contained a BSP's
- user-config.cfg base config.
- """
- yocto_kernel_config_list_help = """
- NAME
- yocto-kernel config list - List the modifiable set of bare kernel
- config options for a BSP
- SYNOPSIS
- yocto-kernel config list <bsp-name>
- DESCRIPTION
- This command lists the 'modifiable' config items for a BSP
- i.e. the items which are eligible for modification or removal by
- other yocto-kernel commands.
- """
- yocto_kernel_config_add_usage = """
- Add or modify bare kernel config options for a BSP
- usage: yocto-kernel config add <bsp-name> [<CONFIG_XXX=x> ...]
- This command adds one or more CONFIG_XXX=x items to a BSP's user-config.cfg
- base config.
- """
- yocto_kernel_config_add_help = """
- NAME
- yocto-kernel config add - Add or modify bare kernel config options
- for a BSP
- SYNOPSIS
- yocto-kernel config add <bsp-name> [<CONFIG_XXX=x> ...]
- DESCRIPTION
- This command adds one or more CONFIG_XXX=x items to a BSP's
- foo.cfg base config.
- NOTE: It's up to the user to determine whether or not the config
- options being added make sense or not - this command does no
- sanity checking or verification of any kind to ensure that a
- config option really makes sense and will actually be set in in
- the final config. For example, if a config option depends on
- other config options, it will be turned off by kconfig if the
- other options aren't set correctly.
- """
- yocto_kernel_config_rm_usage = """
- Remove bare kernel config options from a BSP
- usage: yocto-kernel config rm <bsp-name>
- This command removes (turns off) one or more CONFIG_XXX items from a
- BSP's user-config.cfg base config.
- The set of config items available to be removed by this command for a
- BSP is listed and the user prompted for the specific items to remove.
- """
- yocto_kernel_config_rm_help = """
- NAME
- yocto-kernel config rm - Remove bare kernel config options from a
- BSP
- SYNOPSIS
- yocto-kernel config rm <bsp-name>
- DESCRIPTION
- This command removes (turns off) one or more CONFIG_XXX items from a
- BSP's user-config.cfg base config.
- The set of config items available to be removed by this command
- for a BSP is listed and the user prompted for the specific items
- to remove.
- """
- yocto_kernel_patch_list_usage = """
- List the patches associated with the kernel for a BSP
- usage: yocto-kernel patch list <bsp-name>
- This command lists the patches associated with a BSP.
- NOTE: this only applies to patches listed in the kernel recipe's
- user-patches.scc file (and currently repeated in its SRC_URI).
- """
- yocto_kernel_patch_list_help = """
- NAME
- yocto-kernel patch list - List the patches associated with the kernel
- for a BSP
- SYNOPSIS
- yocto-kernel patch list <bsp-name>
- DESCRIPTION
- This command lists the patches associated with a BSP.
- NOTE: this only applies to patches listed in the kernel recipe's
- user-patches.scc file (and currently repeated in its SRC_URI).
- """
- yocto_kernel_patch_add_usage = """
- Patch the Yocto kernel for a specific BSP
- usage: yocto-kernel patch add <bsp-name> [<PATCH> ...]
- This command adds one or more patches to a BSP's machine branch. The
- patch will be added to the BSP's linux-yocto kernel user-patches.scc
- file (and currently repeated in its SRC_URI) and will be guaranteed
- to be applied in the order specified.
- """
- yocto_kernel_patch_add_help = """
- NAME
- yocto-kernel patch add - Patch the Yocto kernel for a specific BSP
- SYNOPSIS
- yocto-kernel patch add <bsp-name> [<PATCH> ...]
- DESCRIPTION
- This command adds one or more patches to a BSP's machine branch.
- The patch will be added to the BSP's linux-yocto kernel
- user-patches.scc file (and currently repeated in its SRC_URI) and
- will be guaranteed to be applied in the order specified.
- NOTE: It's up to the user to determine whether or not the patches
- being added makes sense or not - this command does no sanity
- checking or verification of any kind to ensure that a patch can
- actually be applied to the BSP's kernel branch; it's assumed that
- the user has already done that.
- """
- yocto_kernel_patch_rm_usage = """
- Remove a patch from the Yocto kernel for a specific BSP
- usage: yocto-kernel patch rm <bsp-name>
- This command removes one or more patches from a BSP's machine branch.
- The patch will be removed from the BSP's linux-yocto kernel
- user-patches.scc file (and currently repeated in its SRC_URI) and
- kernel SRC_URI dir.
- The set of patches available to be removed by this command for a BSP
- is listed and the user prompted for the specific patches to remove.
- """
- yocto_kernel_patch_rm_help = """
- NAME
- yocto-kernel patch rm - Remove a patch from the Yocto kernel for a specific BSP
- SYNOPSIS
- yocto-kernel patch rm <bsp-name>
- DESCRIPTION
- This command removes one or more patches from a BSP's machine
- branch. The patch will be removed from the BSP's linux-yocto
- kernel user-patches.scc file (and currently repeated in its
- SRC_URI).
- The set of patches available to be removed by this command for a
- BSP is listed and the user prompted for the specific patches to
- remove.
- """
- yocto_kernel_feature_list_usage = """
- List the BSP features that are being used by a BSP
- usage: yocto-kernel feature list <bsp-name>
- This command lists the features being used by a BSP i.e. the features
- which are eligible for modification or removal by other yocto-kernel
- commands.
- 'modifiable' features are the features listed in a BSP's
- user-features.scc file.
- """
- yocto_kernel_feature_list_help = """
- NAME
- yocto-kernel feature list - List the modifiable set of features
- being used by a BSP
- SYNOPSIS
- yocto-kernel feature list <bsp-name>
- DESCRIPTION
- This command lists the 'modifiable' features being used by a BSP
- i.e. the features which are eligible for modification or removal
- by other yocto-kernel commands.
- """
- yocto_kernel_feature_add_usage = """
- Add to or modify the list of features being used for a BSP
- usage: yocto-kernel feature add <bsp-name> [/xxxx/yyyy/feature.scc ...]
- This command adds one or more feature items to a BSP's kernel
- user-features.scc file, which is the file used to manage features in
- a yocto-bsp-generated BSP. Features to be added must be specified as
- fully-qualified feature names.
- """
- yocto_kernel_feature_add_help = """
- NAME
- yocto-kernel feature add - Add to or modify the list of features
- being used for a BSP
- SYNOPSIS
- yocto-kernel feature add <bsp-name> [/xxxx/yyyy/feature.scc ...]
- DESCRIPTION
- This command adds one or more feature items to a BSP's
- user-features.scc file, which is the file used to manage features
- in a yocto-bsp-generated BSP. Features to be added must be
- specified as fully-qualified feature names.
- """
- yocto_kernel_feature_rm_usage = """
- Remove a feature from the list of features being used for a BSP
- usage: yocto-kernel feature rm <bsp-name>
- This command removes (turns off) one or more features from a BSP's
- user-features.scc file, which is the file used to manage features in
- a yocto-bsp-generated BSP.
- The set of features available to be removed by this command for a BSP
- is listed and the user prompted for the specific items to remove.
- """
- yocto_kernel_feature_rm_help = """
- NAME
- yocto-kernel feature rm - Remove a feature from the list of
- features being used for a BSP
- SYNOPSIS
- yocto-kernel feature rm <bsp-name>
- DESCRIPTION
- This command removes (turns off) one or more features from a BSP's
- user-features.scc file, which is the file used to manage features
- in a yocto-bsp-generated BSP.
- The set of features available to be removed by this command for a
- BSP is listed and the user prompted for the specific items to
- remove.
- """
- yocto_kernel_available_features_list_usage = """
- List the set of kernel features available to a BSP
- usage: yocto-kernel features list <bsp-name>
- This command lists the complete set of kernel features available to a
- BSP. This includes the features contained in linux-yocto meta
- branches as well as recipe-space features defined locally to the BSP.
- """
- yocto_kernel_available_features_list_help = """
- NAME
- yocto-kernel features list - List the set of kernel features
- available to a BSP
- SYNOPSIS
- yocto-kernel features list <bsp-name>
- DESCRIPTION
- This command lists the complete set of kernel features available
- to a BSP. This includes the features contained in linux-yocto
- meta branches as well as recipe-space features defined locally to
- the BSP.
- """
- yocto_kernel_feature_describe_usage = """
- Print the description and compatibility information for a given kernel feature
- usage: yocto-kernel feature describe <bsp-name> [/xxxx/yyyy/feature.scc ...]
- This command prints the description and compatibility of a specific
- feature in the format 'description [compatibility].
- """
- yocto_kernel_feature_describe_help = """
- NAME
- yocto-kernel feature describe - print the description and
- compatibility information for a given kernel feature
- SYNOPSIS
- yocto-kernel feature describe <bsp-name> [/xxxx/yyyy/feature.scc ...]
- DESCRIPTION
- This command prints the description and compatibility of a
- specific feature in the format 'description [compatibility]. If
- the feature doesn't define a description or compatibility, a
- string with generic unknown values will be printed.
- """
- yocto_kernel_feature_create_usage = """
- Create a recipe-space kernel feature in a BSP
- usage: yocto-kernel feature create <bsp-name> newfeature.scc \
- "Feature Description" capabilities [<CONFIG_XXX=x> ...] [<PATCH> ...]
- This command creates a new kernel feature from the bare config
- options and patches specified on the command-line.
- """
- yocto_kernel_feature_create_help = """
- NAME
- yocto-kernel feature create - create a recipe-space kernel feature
- in a BSP
- SYNOPSIS
- yocto-kernel feature create <bsp-name> newfeature.scc \
- "Feature Description" capabilities [<CONFIG_XXX=x> ...] [<PATCH> ...]
- DESCRIPTION
- This command creates a new kernel feature from the bare config
- options and patches specified on the command-line. The new
- feature will be created in recipe-space, specifically in either
- the kernel .bbappend's /files/cfg or /files/features subdirectory,
- depending on whether or not the feature contains config items only
- or config items along with patches. The named feature must end
- with .scc and must not contain a feature directory to contain the
- feature (this will be determined automatically), and a feature
- decription in double-quotes along with a capabilities string
- (which for the time being can be one of: 'all' or 'board').
- """
- yocto_kernel_feature_destroy_usage = """
- Destroy a recipe-space kernel feature in a BSP
- usage: yocto-kernel feature destroy <bsp-name> feature.scc
- This command destroys a kernel feature defined in the specified BSP's
- recipe-space kernel definition.
- """
- yocto_kernel_feature_destroy_help = """
- NAME
- yocto-kernel feature destroy <bsp-name> feature.scc - destroy a
- recipe-space kernel feature in a BSP
- SYNOPSIS
- yocto-kernel feature destroy <bsp-name> feature.scc
- DESCRIPTION
- This command destroys a kernel feature defined in the specified
- BSP's recipe-space kernel definition. The named feature must end
- with .scc and must not contain a feature directory to contain the
- feature (this will be determined automatically). If the kernel
- feature is in use by a BSP, it can't be removed until the BSP
- stops using it (see yocto-kernel feature rm to stop using it).
- """
- ##
- # yocto-layer help and usage strings
- ##
- yocto_layer_usage = """
- Create a generic Yocto layer.
- usage: yocto-layer [--version] [--help] COMMAND [ARGS]
- Current 'yocto-layer' commands are:
- create Create a new generic Yocto layer
- list List available values for input options and properties
- See 'yocto-layer help COMMAND' for more information on a specific command.
- """
- yocto_layer_help_usage = """
- usage: yocto-layer help <subcommand>
- This command displays detailed help for the specified subcommand.
- """
- yocto_layer_create_usage = """
- Create a new generic Yocto layer
- usage: yocto-layer create <layer-name> [layer_priority]
- [-o <DIRNAME> | --outdir <DIRNAME>]
- [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
- This command creates a generic Yocto layer based on the specified
- parameters. The new layer will be a new Yocto layer contained by
- default within the top-level directory specified as
- 'meta-layer-name'. The -o option can be used to place the layer in a
- directory with a different name and location.
- If layer_priority is specified, a simple layer will be created using
- the given layer priority, and the user will not be prompted for
- further input.
- NOTE: Once created, you should add your new layer to your
- bblayers.conf file in order for it to be subsequently seen and
- modified by the yocto-kernel tool. Instructions for doing this can
- be found in the README file generated in the layer's top-level
- directory.
- See 'yocto layer help create' for more detailed instructions.
- """
- yocto_layer_create_help = """
- NAME
- yocto-layer create - Create a new generic Yocto layer
- SYNOPSIS
- yocto-layer create <layer-name> [layer_priority]
- [-o <DIRNAME> | --outdir <DIRNAME>]
- [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
- DESCRIPTION
- This command creates a generic Yocto layer based on the specified
- parameters. The new layer will be a new Yocto layer contained by
- default within the top-level directory specified as
- 'meta-layer-name'. The -o option can be used to place the layer
- in a directory with a different name and location.
- If layer_priority is specified, a simple layer will be created
- using the given layer priority, and the user will not be prompted
- for further input.
- The layer-specific properties that define the values that will be
- used to generate the layer can be specified on the command-line
- using the -i option and supplying a JSON object consisting of the
- set of name:value pairs needed by the layer.
- If the -i option is not used, the user will be interactively
- prompted for each of the required property values, which will then
- be used as values for layer generation.
- The set of properties available can be listed using the
- 'yocto-layer list' command.
- Specifying -c causes the Python code generated and executed to
- create the layer to be dumped to the 'bspgen.out' file in the
- current directory, and is useful for debugging.
- NOTE: Once created, you should add your new layer to your
- bblayers.conf file in order for it to be subsequently seen and
- modified by the yocto-kernel tool. Instructions for doing this
- can be found in the README file generated in the layer's top-level
- directory.
- For example, assuming your poky repo is at /path/to/poky, your new
- layer is at /path/to/poky/meta-mylayer, and your build directory
- is /path/to/build:
- $ gedit /path/to/build/conf/bblayers.conf
- BBLAYERS ?= " \\
- /path/to/poky/meta \\
- /path/to/poky/meta-yocto \\
- /path/to/poky/meta-mylayer \\
- "
- """
- yocto_layer_list_usage = """
- usage: yocto-layer list properties
- [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
- yocto-layer list property <xxx>
- [-o <JSON PROPERTY FILE> | --outfile <JSON PROPERTY_FILE>]
- This command enumerates the complete set of possible values for a
- specified option or property needed by the layer creation process.
- The first form enumerates all the possible properties that exist and
- must have values specified for them in the 'yocto-layer create'
- command.
- The second form enumerates all the possible values that exist and can
- be specified for any of the enumerable properties in the 'yocto-layer
- create' command.
- See 'yocto-layer help list' for more details.
- """
- yocto_layer_list_help = """
- NAME
- yocto-layer list - List available values for layer input options and properties
- SYNOPSIS
- yocto-layer list properties
- [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
- yocto-layer list property <xxx>
- [--o <JSON PROPERTY FILE> | -outfile <JSON PROPERTY_FILE>]
- DESCRIPTION
- This command enumerates the complete set of possible values for a
- specified option or property needed by the layer creation process.
- The first form enumerates all the possible properties that exist
- and must have values specified for them in the 'yocto-layer
- create' command. This command is mainly meant to aid the
- development of user interface alternatives to the default
- text-based prompting interface. If the -o option is specified,
- the list of properties, in addition to being displayed, will be
- written to the specified file as a JSON object. In this case, the
- object will consist of the set of name:value pairs corresponding
- to the (possibly nested) dictionary of properties defined by the
- input statements used by the BSP. Some example output for the
- 'list properties' command:
- $ yocto-layer list properties
- "example_bbappend_name" : {
- "default" : example
- "msg" : Please enter the name you'd like to use for your bbappend file:
- "type" : edit
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- "create_example_recipe" : {
- "default" : n
- "msg" : Would you like to have an example recipe created? (y/n)
- "type" : boolean
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- "example_recipe_name" : {
- "default" : example
- "msg" : Please enter the name you'd like to use for your example recipe:
- "type" : edit
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- "layer_priority" : {
- "default" : 6
- "msg" : Please enter the layer priority you'd like to use for the layer:
- "type" : edit
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- "create_example_bbappend" : {
- "default" : n
- "msg" : Would you like to have an example bbappend file created? (y/n)
- "type" : boolean
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- "example_bbappend_version" : {
- "default" : 0.1
- "msg" : Please enter the version number you'd like to use for your bbappend file (this should match the recipe you're appending to):
- "type" : edit
- "prio" : 20
- "filename" : /home/trz/yocto/yocto-layer-dev/scripts/lib/bsp/substrate/target/arch/layer/layer-questions.noinstall
- }
- Each entry in the output consists of the name of the input element
- e.g. "layer_priority", followed by the properties defined for that
- element enclosed in braces. This information should provide
- sufficient information to create a complete user interface. Two
- features of the scheme provide for conditional input. First, if a
- Python "if" statement appears in place of an input element name,
- the set of enclosed input elements apply and should be presented
- to the user only if the 'if' statement evaluates to true. The
- test in the if statement will always reference another input
- element in the list, which means that the element being tested
- should be presented to the user before the elements enclosed by
- the if block. Secondly, in a similar way, some elements contain
- "depends-on" and depends-on-val" tags, which mean that the
- affected input element should only be presented to the user if the
- element it depends on has already been presented to the user and
- the user has selected the specified value for that element.
- The second form enumerates all the possible values that exist and
- can be specified for any of the enumerable properties in the
- 'yocto-layer create' command. If the -o option is specified, the
- list of values for the given property, in addition to being
- displayed, will be written to the specified file as a JSON object.
- In this case, the object will consist of the set of name:value
- pairs corresponding to the array of property values associated
- with the property.
- $ yocto-layer list property layer_priority
- [no output - layer_priority is a text field that has no enumerable values]
- The second form as well is meant mainly for developers of
- alternative interfaces - it allows the developer to fetch the
- possible values for a given input element on-demand. This
- on-demand capability is especially valuable for elements that
- require relatively expensive remote operations to fulfill, such as
- the example that returns the set of branches available in a remote
- git tree above.
- """
- ##
- # test code
- ##
- test_bsp_properties = {
- 'smp': 'yes',
- 'touchscreen': 'yes',
- 'keyboard': 'no',
- 'xserver': 'yes',
- 'xserver_choice': 'xserver-i915',
- 'features': ['goodfeature', 'greatfeature'],
- 'tunefile': 'tune-quark',
- }
|