| # 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(bytes(help, 'UTF-8')) |
| |
| 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>] |
| [-c | --codedump] [-s | --skip-git-check] |
| |
| 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' parameter 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>] |
| [-c | --codedump] [-s | --skip-git-check] |
| |
| 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' parameter |
| 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 |
| description 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', |
| } |
| |