| .. SPDX-License-Identifier: CC-BY-SA-2.0-UK |
| |
| ***** |
| Tasks |
| ***** |
| |
| Tasks are units of execution for BitBake. Recipes (``.bb`` files) use |
| tasks to complete configuring, compiling, and packaging software. This |
| chapter provides a reference of the tasks defined in the OpenEmbedded |
| build system. |
| |
| Normal Recipe Build Tasks |
| ========================= |
| |
| The following sections describe normal tasks associated with building a |
| recipe. For more information on tasks and dependencies, see the |
| ":ref:`Tasks <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:tasks>`" and |
| ":ref:`Dependencies <bitbake:bitbake-user-manual/bitbake-user-manual-execution:dependencies>`" sections in the |
| BitBake User Manual. |
| |
| .. _ref-tasks-build: |
| |
| ``do_build`` |
| ------------ |
| |
| The default task for all recipes. This task depends on all other normal |
| tasks required to build a recipe. |
| |
| .. _ref-tasks-compile: |
| |
| ``do_compile`` |
| -------------- |
| |
| Compiles the source code. This task runs with the current working |
| directory set to ``${``\ :term:`B`\ ``}``. |
| |
| The default behavior of this task is to run the ``oe_runmake`` function |
| if a makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found. |
| If no such file is found, the ``do_compile`` task does nothing. |
| |
| .. _ref-tasks-compile_ptest_base: |
| |
| ``do_compile_ptest_base`` |
| ------------------------- |
| |
| Compiles the runtime test suite included in the software being built. |
| |
| .. _ref-tasks-configure: |
| |
| ``do_configure`` |
| ---------------- |
| |
| Configures the source by enabling and disabling any build-time and |
| configuration options for the software being built. The task runs with |
| the current working directory set to ``${``\ :term:`B`\ ``}``. |
| |
| The default behavior of this task is to run ``oe_runmake clean`` if a |
| makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found and |
| :term:`CLEANBROKEN` is not set to "1". If no such |
| file is found or the ``CLEANBROKEN`` variable is set to "1", the |
| ``do_configure`` task does nothing. |
| |
| .. _ref-tasks-configure_ptest_base: |
| |
| ``do_configure_ptest_base`` |
| --------------------------- |
| |
| Configures the runtime test suite included in the software being built. |
| |
| .. _ref-tasks-deploy: |
| |
| ``do_deploy`` |
| ------------- |
| |
| Writes output files that are to be deployed to |
| ``${``\ :term:`DEPLOY_DIR_IMAGE`\ ``}``. The |
| task runs with the current working directory set to |
| ``${``\ :term:`B`\ ``}``. |
| |
| Recipes implementing this task should inherit the |
| :ref:`deploy <ref-classes-deploy>` class and should write the output |
| to ``${``\ :term:`DEPLOYDIR`\ ``}``, which is not to be |
| confused with ``${DEPLOY_DIR}``. The ``deploy`` class sets up |
| ``do_deploy`` as a shared state (sstate) task that can be accelerated |
| through sstate use. The sstate mechanism takes care of copying the |
| output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``. |
| |
| .. note:: |
| |
| Do not write the output directly to |
| ${DEPLOY_DIR_IMAGE} |
| , as this causes the sstate mechanism to malfunction. |
| |
| The ``do_deploy`` task is not added as a task by default and |
| consequently needs to be added manually. If you want the task to run |
| after :ref:`ref-tasks-compile`, you can add it by doing |
| the following: addtask deploy after do_compile Adding ``do_deploy`` |
| after other tasks works the same way. |
| |
| .. note:: |
| |
| You do not need to add |
| before do_build |
| to the |
| addtask |
| command (though it is harmless), because the |
| base |
| class contains the following: |
| :: |
| |
| do_build[recrdeptask] += "do_deploy" |
| |
| |
| See the " |
| Dependencies |
| " section in the BitBake User Manual for more information. |
| |
| If the ``do_deploy`` task re-executes, any previous output is removed |
| (i.e. "cleaned"). |
| |
| .. _ref-tasks-fetch: |
| |
| ``do_fetch`` |
| ------------ |
| |
| Fetches the source code. This task uses the |
| :term:`SRC_URI` variable and the argument's prefix to |
| determine the correct :ref:`fetcher <bitbake:bb-fetchers>` |
| module. |
| |
| .. _ref-tasks-image: |
| |
| ``do_image`` |
| ------------ |
| |
| Starts the image generation process. The ``do_image`` task runs after |
| the OpenEmbedded build system has run the |
| :ref:`ref-tasks-rootfs` task during which packages are |
| identified for installation into the image and the root filesystem is |
| created, complete with post-processing. |
| |
| The ``do_image`` task performs pre-processing on the image through the |
| :term:`IMAGE_PREPROCESS_COMMAND` and |
| dynamically generates supporting ``do_image_*`` tasks as needed. |
| |
| For more information on image creation, see the ":ref:`image-generation-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-image-complete: |
| |
| ``do_image_complete`` |
| --------------------- |
| |
| Completes the image generation process. The ``do_image_complete`` task |
| runs after the OpenEmbedded build system has run the |
| :ref:`ref-tasks-image` task during which image |
| pre-processing occurs and through dynamically generated ``do_image_*`` |
| tasks the image is constructed. |
| |
| The ``do_image_complete`` task performs post-processing on the image |
| through the |
| :term:`IMAGE_POSTPROCESS_COMMAND`. |
| |
| For more information on image creation, see the |
| ":ref:`image-generation-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-install: |
| |
| ``do_install`` |
| -------------- |
| |
| Copies files that are to be packaged into the holding area |
| ``${``\ :term:`D`\ ``}``. This task runs with the current |
| working directory set to ``${``\ :term:`B`\ ``}``, which is the |
| compilation directory. The ``do_install`` task, as well as other tasks |
| that either directly or indirectly depend on the installed files (e.g. |
| :ref:`ref-tasks-package`, ``do_package_write_*``, and |
| :ref:`ref-tasks-rootfs`), run under |
| :ref:`fakeroot <overview-manual/overview-manual-concepts:fakeroot and pseudo>`. |
| |
| .. note:: |
| |
| When installing files, be careful not to set the owner and group IDs |
| of the installed files to unintended values. Some methods of copying |
| files, notably when using the recursive ``cp`` command, can preserve |
| the UID and/or GID of the original file, which is usually not what |
| you want. The ``host-user-contaminated`` QA check checks for files |
| that probably have the wrong ownership. |
| |
| Safe methods for installing files include the following: |
| |
| - The ``install`` utility. This utility is the preferred method. |
| |
| - The ``cp`` command with the "--no-preserve=ownership" option. |
| |
| - The ``tar`` command with the "--no-same-owner" option. See the |
| ``bin_package.bbclass`` file in the ``meta/classes`` directory of |
| the :term:`Source Directory` for an example. |
| |
| .. _ref-tasks-install_ptest_base: |
| |
| ``do_install_ptest_base`` |
| ------------------------- |
| |
| Copies the runtime test suite files from the compilation directory to a |
| holding area. |
| |
| .. _ref-tasks-package: |
| |
| ``do_package`` |
| -------------- |
| |
| Analyzes the content of the holding area |
| ``${``\ :term:`D`\ ``}`` and splits the content into subsets |
| based on available packages and files. This task makes use of the |
| :term:`PACKAGES` and :term:`FILES` |
| variables. |
| |
| The ``do_package`` task, in conjunction with the |
| :ref:`ref-tasks-packagedata` task, also saves some |
| important package metadata. For additional information, see the |
| :term:`PKGDESTWORK` variable and the |
| ":ref:`overview-manual/overview-manual-concepts:automatically added runtime dependencies`" |
| section in the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-package_qa: |
| |
| ``do_package_qa`` |
| ----------------- |
| |
| Runs QA checks on packaged files. For more information on these checks, |
| see the :ref:`insane <ref-classes-insane>` class. |
| |
| .. _ref-tasks-package_write_deb: |
| |
| ``do_package_write_deb`` |
| ------------------------ |
| |
| Creates Debian packages (i.e. ``*.deb`` files) and places them in the |
| ``${``\ :term:`DEPLOY_DIR_DEB`\ ``}`` directory in |
| the package feeds area. For more information, see the |
| ":ref:`package-feeds-dev-environment`" section in |
| the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-package_write_ipk: |
| |
| ``do_package_write_ipk`` |
| ------------------------ |
| |
| Creates IPK packages (i.e. ``*.ipk`` files) and places them in the |
| ``${``\ :term:`DEPLOY_DIR_IPK`\ ``}`` directory in |
| the package feeds area. For more information, see the |
| ":ref:`package-feeds-dev-environment`" section in |
| the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-package_write_rpm: |
| |
| ``do_package_write_rpm`` |
| ------------------------ |
| |
| Creates RPM packages (i.e. ``*.rpm`` files) and places them in the |
| ``${``\ :term:`DEPLOY_DIR_RPM`\ ``}`` directory in |
| the package feeds area. For more information, see the |
| ":ref:`package-feeds-dev-environment`" section in |
| the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-package_write_tar: |
| |
| ``do_package_write_tar`` |
| ------------------------ |
| |
| Creates tarballs and places them in the |
| ``${``\ :term:`DEPLOY_DIR_TAR`\ ``}`` directory in |
| the package feeds area. For more information, see the |
| ":ref:`package-feeds-dev-environment`" section in |
| the Yocto Project Overview and Concepts Manual. |
| |
| .. _ref-tasks-packagedata: |
| |
| ``do_packagedata`` |
| ------------------ |
| |
| Saves package metadata generated by the |
| :ref:`ref-tasks-package` task in |
| :term:`PKGDATA_DIR` to make it available globally. |
| |
| .. _ref-tasks-patch: |
| |
| ``do_patch`` |
| ------------ |
| |
| Locates patch files and applies them to the source code. |
| |
| After fetching and unpacking source files, the build system uses the |
| recipe's :term:`SRC_URI` statements |
| to locate and apply patch files to the source code. |
| |
| .. note:: |
| |
| The build system uses the |
| FILESPATH |
| variable to determine the default set of directories when searching |
| for patches. |
| |
| Patch files, by default, are ``*.patch`` and ``*.diff`` files created |
| and kept in a subdirectory of the directory holding the recipe file. For |
| example, consider the |
| :yocto_git:`bluez5 </cgit/cgit.cgi/poky/tree/meta/recipes-connectivity/bluez5>` |
| recipe from the OE-Core layer (i.e. ``poky/meta``): |
| :: |
| |
| poky/meta/recipes-connectivity/bluez5 |
| |
| This recipe has two patch files located here: |
| :: |
| |
| poky/meta/recipes-connectivity/bluez5/bluez5 |
| |
| In the ``bluez5`` recipe, the ``SRC_URI`` statements point to the source |
| and patch files needed to build the package. |
| |
| .. note:: |
| |
| In the case for the |
| bluez5_5.48.bb |
| recipe, the |
| SRC_URI |
| statements are from an include file |
| bluez5.inc |
| . |
| |
| As mentioned earlier, the build system treats files whose file types are |
| ``.patch`` and ``.diff`` as patch files. However, you can use the |
| "apply=yes" parameter with the ``SRC_URI`` statement to indicate any |
| file as a patch file: |
| :: |
| |
| SRC_URI = " \\ |
| git://path_to_repo/some_package \\ |
| file://file;apply=yes \\ |
| " |
| |
| Conversely, if you have a directory full of patch files and you want to |
| exclude some so that the ``do_patch`` task does not apply them during |
| the patch phase, you can use the "apply=no" parameter with the |
| ``SRC_URI`` statement: |
| :: |
| |
| SRC_URI = " \ |
| git://path_to_repo/some_package \ |
| file://path_to_lots_of_patch_files \ |
| file://path_to_lots_of_patch_files/patch_file5;apply=no \ |
| " |
| |
| In the |
| previous example, assuming all the files in the directory holding the |
| patch files end with either ``.patch`` or ``.diff``, every file would be |
| applied as a patch by default except for the patch_file5 patch. |
| |
| You can find out more about the patching process in the |
| ":ref:`patching-dev-environment`" section in |
| the Yocto Project Overview and Concepts Manual and the |
| ":ref:`new-recipe-patching-code`" section in the |
| Yocto Project Development Tasks Manual. |
| |
| .. _ref-tasks-populate_lic: |
| |
| ``do_populate_lic`` |
| ------------------- |
| |
| Writes license information for the recipe that is collected later when |
| the image is constructed. |
| |
| .. _ref-tasks-populate_sdk: |
| |
| ``do_populate_sdk`` |
| ------------------- |
| |
| Creates the file and directory structure for an installable SDK. See the |
| ":ref:`sdk-generation-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual for more |
| information. |
| |
| .. _ref-tasks-populate_sdk_ext: |
| |
| ``do_populate_sdk_ext`` |
| ----------------------- |
| |
| Creates the file and directory structure for an installable extensible |
| SDK (eSDK). See the ":ref:`sdk-generation-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual for more |
| information. |
| |
| |
| .. _ref-tasks-populate_sysroot: |
| |
| ``do_populate_sysroot`` |
| ----------------------- |
| |
| Stages (copies) a subset of the files installed by the |
| :ref:`ref-tasks-install` task into the appropriate |
| sysroot. For information on how to access these files from other |
| recipes, see the :term:`STAGING_DIR* <STAGING_DIR_HOST>` variables. |
| Directories that would typically not be needed by other recipes at build |
| time (e.g. ``/etc``) are not copied by default. |
| |
| For information on what directories are copied by default, see the |
| :term:`SYSROOT_DIRS* <SYSROOT_DIRS>` variables. You can change |
| these variables inside your recipe if you need to make additional (or |
| fewer) directories available to other recipes at build time. |
| |
| The ``do_populate_sysroot`` task is a shared state (sstate) task, which |
| means that the task can be accelerated through sstate use. Realize also |
| that if the task is re-executed, any previous output is removed (i.e. |
| "cleaned"). |
| |
| .. _ref-tasks-prepare_recipe_sysroot: |
| |
| ``do_prepare_recipe_sysroot`` |
| ----------------------------- |
| |
| Installs the files into the individual recipe specific sysroots (i.e. |
| ``recipe-sysroot`` and ``recipe-sysroot-native`` under |
| ``${``\ :term:`WORKDIR`\ ``}`` based upon the |
| dependencies specified by :term:`DEPENDS`). See the |
| ":ref:`staging <ref-classes-staging>`" class for more information. |
| |
| .. _ref-tasks-rm_work: |
| |
| ``do_rm_work`` |
| -------------- |
| |
| Removes work files after the OpenEmbedded build system has finished with |
| them. You can learn more by looking at the |
| ":ref:`rm_work.bbclass <ref-classes-rm-work>`" section. |
| |
| .. _ref-tasks-unpack: |
| |
| ``do_unpack`` |
| ------------- |
| |
| Unpacks the source code into a working directory pointed to by |
| ``${``\ :term:`WORKDIR`\ ``}``. The :term:`S` |
| variable also plays a role in where unpacked source files ultimately |
| reside. For more information on how source files are unpacked, see the |
| ":ref:`source-fetching-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual and also see |
| the ``WORKDIR`` and ``S`` variable descriptions. |
| |
| Manually Called Tasks |
| ===================== |
| |
| These tasks are typically manually triggered (e.g. by using the |
| ``bitbake -c`` command-line option): |
| |
| .. _ref-tasks-checkpkg: |
| |
| ``do_checkpkg`` |
| --------------- |
| |
| Provides information about the recipe including its upstream version and |
| status. The upstream version and status reveals whether or not a version |
| of the recipe exists upstream and a status of not updated, updated, or |
| unknown. |
| |
| To check the upstream version and status of a recipe, use the following |
| devtool commands: |
| :: |
| |
| $ devtool latest-version |
| $ devtool check-upgrade-status |
| |
| See the ":ref:`ref-manual/ref-devtool-reference:\`\`devtool\`\` quick reference`" |
| chapter for more information on |
| ``devtool``. See the ":ref:`devtool-checking-on-the-upgrade-status-of-a-recipe`" |
| section for information on checking the upgrade status of a recipe. |
| |
| To build the ``checkpkg`` task, use the ``bitbake`` command with the |
| "-c" option and task name: |
| :: |
| |
| $ bitbake core-image-minimal -c checkpkg |
| |
| By default, the results are stored in :term:`$LOG_DIR <LOG_DIR>` (e.g. |
| ``$BUILD_DIR/tmp/log``). |
| |
| .. _ref-tasks-checkuri: |
| |
| ``do_checkuri`` |
| --------------- |
| |
| Validates the :term:`SRC_URI` value. |
| |
| .. _ref-tasks-clean: |
| |
| ``do_clean`` |
| ------------ |
| |
| Removes all output files for a target from the |
| :ref:`ref-tasks-unpack` task forward (i.e. ``do_unpack``, |
| :ref:`ref-tasks-configure`, |
| :ref:`ref-tasks-compile`, |
| :ref:`ref-tasks-install`, and |
| :ref:`ref-tasks-package`). |
| |
| You can run this task using BitBake as follows: |
| :: |
| |
| $ bitbake -c clean recipe |
| |
| Running this task does not remove the |
| :ref:`sstate <overview-manual/overview-manual-concepts:shared state cache>` cache files. |
| Consequently, if no changes have been made and the recipe is rebuilt |
| after cleaning, output files are simply restored from the sstate cache. |
| If you want to remove the sstate cache files for the recipe, you need to |
| use the :ref:`ref-tasks-cleansstate` task instead |
| (i.e. ``bitbake -c cleansstate`` recipe). |
| |
| .. _ref-tasks-cleanall: |
| |
| ``do_cleanall`` |
| --------------- |
| |
| Removes all output files, shared state |
| (:ref:`sstate <overview-manual/overview-manual-concepts:shared state cache>`) cache, and |
| downloaded source files for a target (i.e. the contents of |
| :term:`DL_DIR`). Essentially, the ``do_cleanall`` task is |
| identical to the :ref:`ref-tasks-cleansstate` task |
| with the added removal of downloaded source files. |
| |
| You can run this task using BitBake as follows: |
| :: |
| |
| $ bitbake -c cleanall recipe |
| |
| Typically, you would not normally use the ``cleanall`` task. Do so only |
| if you want to start fresh with the :ref:`ref-tasks-fetch` |
| task. |
| |
| .. _ref-tasks-cleansstate: |
| |
| ``do_cleansstate`` |
| ------------------ |
| |
| Removes all output files and shared state |
| (:ref:`sstate <overview-manual/overview-manual-concepts:shared state cache>`) cache for a |
| target. Essentially, the ``do_cleansstate`` task is identical to the |
| :ref:`ref-tasks-clean` task with the added removal of |
| shared state (`:ref:`sstate <overview-manual/overview-manual-concepts:shared state cache>`) |
| cache. |
| |
| You can run this task using BitBake as follows: |
| :: |
| |
| $ bitbake -c cleansstate recipe |
| |
| When you run the ``do_cleansstate`` task, the OpenEmbedded build system |
| no longer uses any sstate. Consequently, building the recipe from |
| scratch is guaranteed. |
| |
| .. note:: |
| |
| The |
| do_cleansstate |
| task cannot remove sstate from a remote sstate mirror. If you need to |
| build a target from scratch using remote mirrors, use the "-f" option |
| as follows: |
| :: |
| |
| $ bitbake -f -c do_cleansstate target |
| |
| |
| .. _ref-tasks-devpyshell: |
| |
| ``do_devpyshell`` |
| ----------------- |
| |
| Starts a shell in which an interactive Python interpreter allows you to |
| interact with the BitBake build environment. From within this shell, you |
| can directly examine and set bits from the data store and execute |
| functions as if within the BitBake environment. See the ":ref:`platdev-appdev-devpyshell`" section in |
| the Yocto Project Development Tasks Manual for more information about |
| using ``devpyshell``. |
| |
| .. _ref-tasks-devshell: |
| |
| ``do_devshell`` |
| --------------- |
| |
| Starts a shell whose environment is set up for development, debugging, |
| or both. See the ":ref:`platdev-appdev-devshell`" section in the |
| Yocto Project Development Tasks Manual for more information about using |
| ``devshell``. |
| |
| .. _ref-tasks-listtasks: |
| |
| ``do_listtasks`` |
| ---------------- |
| |
| Lists all defined tasks for a target. |
| |
| .. _ref-tasks-package_index: |
| |
| ``do_package_index`` |
| -------------------- |
| |
| Creates or updates the index in the `:ref:`package-feeds-dev-environment` area. |
| |
| .. note:: |
| |
| This task is not triggered with the |
| bitbake -c |
| command-line option as are the other tasks in this section. Because |
| this task is specifically for the |
| package-index |
| recipe, you run it using |
| bitbake package-index |
| . |
| |
| Image-Related Tasks |
| =================== |
| |
| The following tasks are applicable to image recipes. |
| |
| .. _ref-tasks-bootimg: |
| |
| ``do_bootimg`` |
| -------------- |
| |
| Creates a bootable live image. See the |
| :term:`IMAGE_FSTYPES` variable for additional |
| information on live image types. |
| |
| .. _ref-tasks-bundle_initramfs: |
| |
| ``do_bundle_initramfs`` |
| ----------------------- |
| |
| Combines an initial RAM disk (initramfs) image and kernel together to |
| form a single image. The |
| :term:`CONFIG_INITRAMFS_SOURCE` variable |
| has some more information about these types of images. |
| |
| .. _ref-tasks-rootfs: |
| |
| ``do_rootfs`` |
| ------------- |
| |
| Creates the root filesystem (file and directory structure) for an image. |
| See the ":ref:`image-generation-dev-environment`" |
| section in the Yocto Project Overview and Concepts Manual for more |
| information on how the root filesystem is created. |
| |
| .. _ref-tasks-testimage: |
| |
| ``do_testimage`` |
| ---------------- |
| |
| Boots an image and performs runtime tests within the image. For |
| information on automatically testing images, see the |
| ":ref:`dev-manual/dev-manual-common-tasks:performing automated runtime testing`" |
| section in the Yocto Project Development Tasks Manual. |
| |
| .. _ref-tasks-testimage_auto: |
| |
| ``do_testimage_auto`` |
| --------------------- |
| |
| Boots an image and performs runtime tests within the image immediately |
| after it has been built. This task is enabled when you set |
| :term:`TESTIMAGE_AUTO` equal to "1". |
| |
| For information on automatically testing images, see the |
| ":ref:`dev-manual/dev-manual-common-tasks:performing automated runtime testing`" |
| section in the Yocto Project Development Tasks Manual. |
| |
| Kernel-Related Tasks |
| ==================== |
| |
| The following tasks are applicable to kernel recipes. Some of these |
| tasks (e.g. the :ref:`ref-tasks-menuconfig` task) are |
| also applicable to recipes that use Linux kernel style configuration |
| such as the BusyBox recipe. |
| |
| .. _ref-tasks-compile_kernelmodules: |
| |
| ``do_compile_kernelmodules`` |
| ---------------------------- |
| |
| Runs the step that builds the kernel modules (if needed). Building a |
| kernel consists of two steps: 1) the kernel (``vmlinux``) is built, and |
| 2) the modules are built (i.e. ``make modules``). |
| |
| .. _ref-tasks-diffconfig: |
| |
| ``do_diffconfig`` |
| ----------------- |
| |
| When invoked by the user, this task creates a file containing the |
| differences between the original config as produced by |
| :ref:`ref-tasks-kernel_configme` task and the |
| changes made by the user with other methods (i.e. using |
| (:ref:`ref-tasks-kernel_menuconfig`). Once the |
| file of differences is created, it can be used to create a config |
| fragment that only contains the differences. You can invoke this task |
| from the command line as follows: |
| :: |
| |
| $ bitbake linux-yocto -c diffconfig |
| |
| For more information, see the |
| ":ref:`kernel-dev/kernel-dev-common:creating configuration fragments`" |
| section in the Yocto Project Linux Kernel Development Manual. |
| |
| .. _ref-tasks-kernel_checkout: |
| |
| ``do_kernel_checkout`` |
| ---------------------- |
| |
| Converts the newly unpacked kernel source into a form with which the |
| OpenEmbedded build system can work. Because the kernel source can be |
| fetched in several different ways, the ``do_kernel_checkout`` task makes |
| sure that subsequent tasks are given a clean working tree copy of the |
| kernel with the correct branches checked out. |
| |
| .. _ref-tasks-kernel_configcheck: |
| |
| ``do_kernel_configcheck`` |
| ------------------------- |
| |
| Validates the configuration produced by the |
| :ref:`ref-tasks-kernel_menuconfig` task. The |
| ``do_kernel_configcheck`` task produces warnings when a requested |
| configuration does not appear in the final ``.config`` file or when you |
| override a policy configuration in a hardware configuration fragment. |
| You can run this task explicitly and view the output by using the |
| following command: |
| :: |
| |
| $ bitbake linux-yocto -c kernel_configcheck -f |
| |
| For more information, see the |
| ":ref:`kernel-dev/kernel-dev-common:validating configuration`" |
| section in the Yocto Project Linux Kernel Development Manual. |
| |
| .. _ref-tasks-kernel_configme: |
| |
| ``do_kernel_configme`` |
| ---------------------- |
| |
| After the kernel is patched by the :ref:`ref-tasks-patch` |
| task, the ``do_kernel_configme`` task assembles and merges all the |
| kernel config fragments into a merged configuration that can then be |
| passed to the kernel configuration phase proper. This is also the time |
| during which user-specified defconfigs are applied if present, and where |
| configuration modes such as ``--allnoconfig`` are applied. |
| |
| .. _ref-tasks-kernel_menuconfig: |
| |
| ``do_kernel_menuconfig`` |
| ------------------------ |
| |
| Invoked by the user to manipulate the ``.config`` file used to build a |
| linux-yocto recipe. This task starts the Linux kernel configuration |
| tool, which you then use to modify the kernel configuration. |
| |
| .. note:: |
| |
| You can also invoke this tool from the command line as follows: |
| :: |
| |
| $ bitbake linux-yocto -c menuconfig |
| |
| |
| See the ":ref:`kernel-dev/kernel-dev-common:using \`\`menuconfig\`\``" |
| section in the Yocto Project Linux Kernel Development Manual for more |
| information on this configuration tool. |
| |
| .. _ref-tasks-kernel_metadata: |
| |
| ``do_kernel_metadata`` |
| ---------------------- |
| |
| Collects all the features required for a given kernel build, whether the |
| features come from :term:`SRC_URI` or from Git |
| repositories. After collection, the ``do_kernel_metadata`` task |
| processes the features into a series of config fragments and patches, |
| which can then be applied by subsequent tasks such as |
| :ref:`ref-tasks-patch` and |
| :ref:`ref-tasks-kernel_configme`. |
| |
| .. _ref-tasks-menuconfig: |
| |
| ``do_menuconfig`` |
| ----------------- |
| |
| Runs ``make menuconfig`` for the kernel. For information on |
| ``menuconfig``, see the |
| ":ref:`kernel-dev/kernel-dev-common:using \`\`menuconfig\`\``" |
| section in the Yocto Project Linux Kernel Development Manual. |
| |
| .. _ref-tasks-savedefconfig: |
| |
| ``do_savedefconfig`` |
| -------------------- |
| |
| When invoked by the user, creates a defconfig file that can be used |
| instead of the default defconfig. The saved defconfig contains the |
| differences between the default defconfig and the changes made by the |
| user using other methods (i.e. the |
| :ref:`ref-tasks-kernel_menuconfig` task. You |
| can invoke the task using the following command: |
| :: |
| |
| $ bitbake linux-yocto -c savedefconfig |
| |
| .. _ref-tasks-shared_workdir: |
| |
| ``do_shared_workdir`` |
| --------------------- |
| |
| After the kernel has been compiled but before the kernel modules have |
| been compiled, this task copies files required for module builds and |
| which are generated from the kernel build into the shared work |
| directory. With these copies successfully copied, the |
| :ref:`ref-tasks-compile_kernelmodules` task |
| can successfully build the kernel modules in the next step of the build. |
| |
| .. _ref-tasks-sizecheck: |
| |
| ``do_sizecheck`` |
| ---------------- |
| |
| After the kernel has been built, this task checks the size of the |
| stripped kernel image against |
| :term:`KERNEL_IMAGE_MAXSIZE`. If that |
| variable was set and the size of the stripped kernel exceeds that size, |
| the kernel build produces a warning to that effect. |
| |
| .. _ref-tasks-strip: |
| |
| ``do_strip`` |
| ------------ |
| |
| If ``KERNEL_IMAGE_STRIP_EXTRA_SECTIONS`` is defined, this task strips |
| the sections named in that variable from ``vmlinux``. This stripping is |
| typically used to remove nonessential sections such as ``.comment`` |
| sections from a size-sensitive configuration. |
| |
| .. _ref-tasks-validate_branches: |
| |
| ``do_validate_branches`` |
| ------------------------ |
| |
| After the kernel is unpacked but before it is patched, this task makes |
| sure that the machine and metadata branches as specified by the |
| :term:`SRCREV` variables actually exist on the specified |
| branches. If these branches do not exist and |
| :term:`AUTOREV` is not being used, the |
| ``do_validate_branches`` task fails during the build. |
| |
| Miscellaneous Tasks |
| =================== |
| |
| The following sections describe miscellaneous tasks. |
| |
| .. _ref-tasks-spdx: |
| |
| ``do_spdx`` |
| ----------- |
| |
| A build stage that takes the source code and scans it on a remote |
| FOSSOLOGY server in order to produce an SPDX document. This task applies |
| only to the :ref:`spdx <ref-classes-spdx>` class. |