blob: 0db960b22f80dc0e9baedd4ba4a0bdc0029102a5 [file] [log] [blame]
Andrew Geisslerf0343792020-11-18 10:42:21 -06001.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Andrew Geisslerc9f78652020-09-18 14:11:35 -05002
3*****
4Tasks
5*****
6
7Tasks are units of execution for BitBake. Recipes (``.bb`` files) use
8tasks to complete configuring, compiling, and packaging software. This
9chapter provides a reference of the tasks defined in the OpenEmbedded
10build system.
11
12Normal Recipe Build Tasks
13=========================
14
15The following sections describe normal tasks associated with building a
16recipe. For more information on tasks and dependencies, see the
Andrew Geisslerfc113ea2023-03-31 09:59:46 -050017":ref:`bitbake-user-manual/bitbake-user-manual-metadata:tasks`" and
18":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`" sections in the
Andrew Geisslerc9f78652020-09-18 14:11:35 -050019BitBake User Manual.
20
21.. _ref-tasks-build:
22
23``do_build``
24------------
25
26The default task for all recipes. This task depends on all other normal
27tasks required to build a recipe.
28
29.. _ref-tasks-compile:
30
31``do_compile``
32--------------
33
34Compiles the source code. This task runs with the current working
35directory set to ``${``\ :term:`B`\ ``}``.
36
37The default behavior of this task is to run the ``oe_runmake`` function
38if a makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found.
Patrick Williams2194f502022-10-16 14:26:09 -050039If no such file is found, the :ref:`ref-tasks-compile` task does nothing.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050040
41.. _ref-tasks-compile_ptest_base:
42
43``do_compile_ptest_base``
44-------------------------
45
46Compiles the runtime test suite included in the software being built.
47
48.. _ref-tasks-configure:
49
50``do_configure``
51----------------
52
53Configures the source by enabling and disabling any build-time and
54configuration options for the software being built. The task runs with
55the current working directory set to ``${``\ :term:`B`\ ``}``.
56
57The default behavior of this task is to run ``oe_runmake clean`` if a
58makefile (``Makefile``, ``makefile``, or ``GNUmakefile``) is found and
59:term:`CLEANBROKEN` is not set to "1". If no such
Andrew Geissler09036742021-06-25 14:25:14 -050060file is found or the :term:`CLEANBROKEN` variable is set to "1", the
Patrick Williams2194f502022-10-16 14:26:09 -050061:ref:`ref-tasks-configure` task does nothing.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050062
63.. _ref-tasks-configure_ptest_base:
64
65``do_configure_ptest_base``
66---------------------------
67
68Configures the runtime test suite included in the software being built.
69
70.. _ref-tasks-deploy:
71
72``do_deploy``
73-------------
74
75Writes output files that are to be deployed to
76``${``\ :term:`DEPLOY_DIR_IMAGE`\ ``}``. The
77task runs with the current working directory set to
78``${``\ :term:`B`\ ``}``.
79
80Recipes implementing this task should inherit the
Andrew Geissler517393d2023-01-13 08:55:19 -060081:ref:`ref-classes-deploy` class and should write the output
Andrew Geisslerc9f78652020-09-18 14:11:35 -050082to ``${``\ :term:`DEPLOYDIR`\ ``}``, which is not to be
Andrew Geissler517393d2023-01-13 08:55:19 -060083confused with ``${DEPLOY_DIR}``. The :ref:`ref-classes-deploy` class sets up
Patrick Williams2194f502022-10-16 14:26:09 -050084:ref:`ref-tasks-deploy` as a shared state (sstate) task that can be accelerated
Andrew Geisslerc9f78652020-09-18 14:11:35 -050085through sstate use. The sstate mechanism takes care of copying the
86output from ``${DEPLOYDIR}`` to ``${DEPLOY_DIR_IMAGE}``.
87
88.. note::
89
Andrew Geissler4c19ea12020-10-27 13:52:24 -050090 Do not write the output directly to ``${DEPLOY_DIR_IMAGE}``, as this causes
91 the sstate mechanism to malfunction.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050092
Patrick Williams2194f502022-10-16 14:26:09 -050093The :ref:`ref-tasks-deploy` task is not added as a task by default and
Andrew Geisslerc9f78652020-09-18 14:11:35 -050094consequently needs to be added manually. If you want the task to run
95after :ref:`ref-tasks-compile`, you can add it by doing
Andrew Geisslerc926e172021-05-07 16:11:35 -050096the following::
Andrew Geissler4c19ea12020-10-27 13:52:24 -050097
98 addtask deploy after do_compile
99
Patrick Williams2194f502022-10-16 14:26:09 -0500100Adding :ref:`ref-tasks-deploy` after other tasks works the same way.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500101
102.. note::
103
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500104 You do not need to add ``before do_build`` to the ``addtask`` command
Andrew Geissler517393d2023-01-13 08:55:19 -0600105 (though it is harmless), because the :ref:`ref-classes-base` class contains the following::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500106
107 do_build[recrdeptask] += "do_deploy"
108
109
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500110 See the ":ref:`bitbake-user-manual/bitbake-user-manual-execution:dependencies`"
111 section in the BitBake User Manual for more information.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500112
Patrick Williams2194f502022-10-16 14:26:09 -0500113If the :ref:`ref-tasks-deploy` task re-executes, any previous output is removed
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500114(i.e. "cleaned").
115
116.. _ref-tasks-fetch:
117
118``do_fetch``
119------------
120
Andrew Geisslerfc113ea2023-03-31 09:59:46 -0500121Fetches the source code. This task uses the :term:`SRC_URI` variable and the
122argument's prefix to determine the correct
123:ref:`fetcher <bitbake-user-manual/bitbake-user-manual-fetching:fetchers>`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500124module.
125
126.. _ref-tasks-image:
127
128``do_image``
129------------
130
Patrick Williams2194f502022-10-16 14:26:09 -0500131Starts the image generation process. The :ref:`ref-tasks-image` task runs after
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500132the OpenEmbedded build system has run the
133:ref:`ref-tasks-rootfs` task during which packages are
134identified for installation into the image and the root filesystem is
135created, complete with post-processing.
136
Patrick Williams2194f502022-10-16 14:26:09 -0500137The :ref:`ref-tasks-image` task performs pre-processing on the image through the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500138:term:`IMAGE_PREPROCESS_COMMAND` and
Patrick Williams2194f502022-10-16 14:26:09 -0500139dynamically generates supporting :ref:`do_image_* <ref-tasks-image>` tasks as needed.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500140
Andrew Geissler09209ee2020-12-13 08:44:15 -0600141For more information on image creation, see the ":ref:`overview-manual/concepts:image generation`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500142section in the Yocto Project Overview and Concepts Manual.
143
144.. _ref-tasks-image-complete:
145
146``do_image_complete``
147---------------------
148
Patrick Williams2194f502022-10-16 14:26:09 -0500149Completes the image generation process. The :ref:`do_image_complete <ref-tasks-image-complete>` task
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500150runs after the OpenEmbedded build system has run the
151:ref:`ref-tasks-image` task during which image
Patrick Williams2194f502022-10-16 14:26:09 -0500152pre-processing occurs and through dynamically generated :ref:`do_image_* <ref-tasks-image>`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500153tasks the image is constructed.
154
Patrick Williams2194f502022-10-16 14:26:09 -0500155The :ref:`do_image_complete <ref-tasks-image-complete>` task performs post-processing on the image
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500156through the
157:term:`IMAGE_POSTPROCESS_COMMAND`.
158
159For more information on image creation, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600160":ref:`overview-manual/concepts:image generation`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500161section in the Yocto Project Overview and Concepts Manual.
162
163.. _ref-tasks-install:
164
165``do_install``
166--------------
167
168Copies files that are to be packaged into the holding area
169``${``\ :term:`D`\ ``}``. This task runs with the current
170working directory set to ``${``\ :term:`B`\ ``}``, which is the
Patrick Williams2194f502022-10-16 14:26:09 -0500171compilation directory. The :ref:`ref-tasks-install` task, as well as other tasks
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500172that either directly or indirectly depend on the installed files (e.g.
Patrick Williams2194f502022-10-16 14:26:09 -0500173:ref:`ref-tasks-package`, :ref:`do_package_write_* <ref-tasks-package_write_deb>`, and
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500174:ref:`ref-tasks-rootfs`), run under
Andrew Geissler09209ee2020-12-13 08:44:15 -0600175:ref:`fakeroot <overview-manual/concepts:fakeroot and pseudo>`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500176
177.. note::
178
179 When installing files, be careful not to set the owner and group IDs
180 of the installed files to unintended values. Some methods of copying
181 files, notably when using the recursive ``cp`` command, can preserve
182 the UID and/or GID of the original file, which is usually not what
183 you want. The ``host-user-contaminated`` QA check checks for files
184 that probably have the wrong ownership.
185
186 Safe methods for installing files include the following:
187
188 - The ``install`` utility. This utility is the preferred method.
189
Patrick Williams45852732022-04-02 08:58:32 -0500190 - The ``cp`` command with the ``--no-preserve=ownership`` option.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500191
Patrick Williams45852732022-04-02 08:58:32 -0500192 - The ``tar`` command with the ``--no-same-owner`` option. See the
Patrick Williams975a06f2022-10-21 14:42:47 -0500193 ``bin_package.bbclass`` file in the ``meta/classes-recipe``
194 subdirectory of the :term:`Source Directory` for an example.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500195
196.. _ref-tasks-install_ptest_base:
197
198``do_install_ptest_base``
199-------------------------
200
201Copies the runtime test suite files from the compilation directory to a
202holding area.
203
204.. _ref-tasks-package:
205
206``do_package``
207--------------
208
209Analyzes the content of the holding area
210``${``\ :term:`D`\ ``}`` and splits the content into subsets
211based on available packages and files. This task makes use of the
212:term:`PACKAGES` and :term:`FILES`
213variables.
214
Patrick Williams2194f502022-10-16 14:26:09 -0500215The :ref:`ref-tasks-package` task, in conjunction with the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500216:ref:`ref-tasks-packagedata` task, also saves some
217important package metadata. For additional information, see the
218:term:`PKGDESTWORK` variable and the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600219":ref:`overview-manual/concepts:automatically added runtime dependencies`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500220section in the Yocto Project Overview and Concepts Manual.
221
222.. _ref-tasks-package_qa:
223
224``do_package_qa``
225-----------------
226
227Runs QA checks on packaged files. For more information on these checks,
Andrew Geissler517393d2023-01-13 08:55:19 -0600228see the :ref:`ref-classes-insane` class.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500229
230.. _ref-tasks-package_write_deb:
231
232``do_package_write_deb``
233------------------------
234
235Creates Debian packages (i.e. ``*.deb`` files) and places them in the
236``${``\ :term:`DEPLOY_DIR_DEB`\ ``}`` directory in
237the package feeds area. For more information, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600238":ref:`overview-manual/concepts:package feeds`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500239the Yocto Project Overview and Concepts Manual.
240
241.. _ref-tasks-package_write_ipk:
242
243``do_package_write_ipk``
244------------------------
245
246Creates IPK packages (i.e. ``*.ipk`` files) and places them in the
247``${``\ :term:`DEPLOY_DIR_IPK`\ ``}`` directory in
248the package feeds area. For more information, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600249":ref:`overview-manual/concepts:package feeds`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500250the Yocto Project Overview and Concepts Manual.
251
252.. _ref-tasks-package_write_rpm:
253
254``do_package_write_rpm``
255------------------------
256
257Creates RPM packages (i.e. ``*.rpm`` files) and places them in the
258``${``\ :term:`DEPLOY_DIR_RPM`\ ``}`` directory in
259the package feeds area. For more information, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600260":ref:`overview-manual/concepts:package feeds`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500261the Yocto Project Overview and Concepts Manual.
262
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500263.. _ref-tasks-packagedata:
264
265``do_packagedata``
266------------------
267
268Saves package metadata generated by the
269:ref:`ref-tasks-package` task in
270:term:`PKGDATA_DIR` to make it available globally.
271
272.. _ref-tasks-patch:
273
274``do_patch``
275------------
276
277Locates patch files and applies them to the source code.
278
279After fetching and unpacking source files, the build system uses the
280recipe's :term:`SRC_URI` statements
281to locate and apply patch files to the source code.
282
283.. note::
284
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500285 The build system uses the :term:`FILESPATH` variable to determine the
286 default set of directories when searching for patches.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500287
288Patch files, by default, are ``*.patch`` and ``*.diff`` files created
289and kept in a subdirectory of the directory holding the recipe file. For
290example, consider the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600291:yocto_git:`bluez5 </poky/tree/meta/recipes-connectivity/bluez5>`
Andrew Geisslerc926e172021-05-07 16:11:35 -0500292recipe from the OE-Core layer (i.e. ``poky/meta``)::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500293
294 poky/meta/recipes-connectivity/bluez5
295
Andrew Geisslerc926e172021-05-07 16:11:35 -0500296This recipe has two patch files located here::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500297
298 poky/meta/recipes-connectivity/bluez5/bluez5
299
Andrew Geissler09036742021-06-25 14:25:14 -0500300In the ``bluez5`` recipe, the :term:`SRC_URI` statements point to the source
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500301and patch files needed to build the package.
302
303.. note::
304
Andrew Geissler09036742021-06-25 14:25:14 -0500305 In the case for the ``bluez5_5.48.bb`` recipe, the :term:`SRC_URI` statements
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500306 are from an include file ``bluez5.inc``.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500307
308As mentioned earlier, the build system treats files whose file types are
309``.patch`` and ``.diff`` as patch files. However, you can use the
Andrew Geissler09036742021-06-25 14:25:14 -0500310"apply=yes" parameter with the :term:`SRC_URI` statement to indicate any
Andrew Geisslerc926e172021-05-07 16:11:35 -0500311file as a patch file::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500312
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500313 SRC_URI = " \
314 git://path_to_repo/some_package \
315 file://file;apply=yes \
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500316 "
317
Andrew Geissler595f6302022-01-24 19:11:47 +0000318Conversely, if you have a file whose file type is ``.patch`` or ``.diff``
Patrick Williams2194f502022-10-16 14:26:09 -0500319and you want to exclude it so that the :ref:`ref-tasks-patch` task does not apply
Andrew Geissler595f6302022-01-24 19:11:47 +0000320it during the patch phase, you can use the "apply=no" parameter with the
Andrew Geissler09036742021-06-25 14:25:14 -0500321:term:`SRC_URI` statement::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500322
323 SRC_URI = " \
324 git://path_to_repo/some_package \
Andrew Geissler595f6302022-01-24 19:11:47 +0000325 file://file1.patch \
326 file://file2.patch;apply=no \
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500327 "
328
Andrew Geissler595f6302022-01-24 19:11:47 +0000329In the previous example ``file1.patch`` would be applied as a patch by default
330while ``file2.patch`` would not be applied.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500331
332You can find out more about the patching process in the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600333":ref:`overview-manual/concepts:patching`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500334the Yocto Project Overview and Concepts Manual and the
Andrew Geissler517393d2023-01-13 08:55:19 -0600335":ref:`dev-manual/new-recipe:patching code`" section in the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500336Yocto Project Development Tasks Manual.
337
338.. _ref-tasks-populate_lic:
339
340``do_populate_lic``
341-------------------
342
343Writes license information for the recipe that is collected later when
344the image is constructed.
345
346.. _ref-tasks-populate_sdk:
347
348``do_populate_sdk``
349-------------------
350
351Creates the file and directory structure for an installable SDK. See the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600352":ref:`overview-manual/concepts:sdk generation`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500353section in the Yocto Project Overview and Concepts Manual for more
354information.
355
356.. _ref-tasks-populate_sdk_ext:
357
358``do_populate_sdk_ext``
359-----------------------
360
361Creates the file and directory structure for an installable extensible
Andrew Geissler09209ee2020-12-13 08:44:15 -0600362SDK (eSDK). See the ":ref:`overview-manual/concepts:sdk generation`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500363section in the Yocto Project Overview and Concepts Manual for more
364information.
365
366
367.. _ref-tasks-populate_sysroot:
368
369``do_populate_sysroot``
370-----------------------
371
372Stages (copies) a subset of the files installed by the
373:ref:`ref-tasks-install` task into the appropriate
374sysroot. For information on how to access these files from other
375recipes, see the :term:`STAGING_DIR* <STAGING_DIR_HOST>` variables.
376Directories that would typically not be needed by other recipes at build
377time (e.g. ``/etc``) are not copied by default.
378
379For information on what directories are copied by default, see the
380:term:`SYSROOT_DIRS* <SYSROOT_DIRS>` variables. You can change
381these variables inside your recipe if you need to make additional (or
382fewer) directories available to other recipes at build time.
383
Patrick Williams2194f502022-10-16 14:26:09 -0500384The :ref:`ref-tasks-populate_sysroot` task is a shared state (sstate) task, which
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500385means that the task can be accelerated through sstate use. Realize also
386that if the task is re-executed, any previous output is removed (i.e.
387"cleaned").
388
389.. _ref-tasks-prepare_recipe_sysroot:
390
391``do_prepare_recipe_sysroot``
392-----------------------------
393
394Installs the files into the individual recipe specific sysroots (i.e.
395``recipe-sysroot`` and ``recipe-sysroot-native`` under
396``${``\ :term:`WORKDIR`\ ``}`` based upon the
397dependencies specified by :term:`DEPENDS`). See the
Andrew Geissler517393d2023-01-13 08:55:19 -0600398":ref:`ref-classes-staging`" class for more information.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500399
400.. _ref-tasks-rm_work:
401
402``do_rm_work``
403--------------
404
405Removes work files after the OpenEmbedded build system has finished with
406them. You can learn more by looking at the
Andrew Geissler595f6302022-01-24 19:11:47 +0000407":ref:`ref-classes-rm-work`" section.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500408
409.. _ref-tasks-unpack:
410
411``do_unpack``
412-------------
413
414Unpacks the source code into a working directory pointed to by
415``${``\ :term:`WORKDIR`\ ``}``. The :term:`S`
416variable also plays a role in where unpacked source files ultimately
417reside. For more information on how source files are unpacked, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600418":ref:`overview-manual/concepts:source fetching`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500419section in the Yocto Project Overview and Concepts Manual and also see
Andrew Geissler09036742021-06-25 14:25:14 -0500420the :term:`WORKDIR` and :term:`S` variable descriptions.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500421
422Manually Called Tasks
423=====================
424
425These tasks are typically manually triggered (e.g. by using the
426``bitbake -c`` command-line option):
427
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500428``do_checkuri``
429---------------
430
431Validates the :term:`SRC_URI` value.
432
433.. _ref-tasks-clean:
434
435``do_clean``
436------------
437
438Removes all output files for a target from the
Patrick Williams2194f502022-10-16 14:26:09 -0500439:ref:`ref-tasks-unpack` task forward (i.e. :ref:`ref-tasks-unpack`,
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500440:ref:`ref-tasks-configure`,
441:ref:`ref-tasks-compile`,
442:ref:`ref-tasks-install`, and
443:ref:`ref-tasks-package`).
444
Andrew Geisslerc926e172021-05-07 16:11:35 -0500445You can run this task using BitBake as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500446
447 $ bitbake -c clean recipe
448
449Running this task does not remove the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600450:ref:`sstate <overview-manual/concepts:shared state cache>` cache files.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500451Consequently, if no changes have been made and the recipe is rebuilt
452after cleaning, output files are simply restored from the sstate cache.
453If you want to remove the sstate cache files for the recipe, you need to
454use the :ref:`ref-tasks-cleansstate` task instead
455(i.e. ``bitbake -c cleansstate`` recipe).
456
457.. _ref-tasks-cleanall:
458
459``do_cleanall``
460---------------
461
462Removes all output files, shared state
Andrew Geissler09209ee2020-12-13 08:44:15 -0600463(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache, and
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500464downloaded source files for a target (i.e. the contents of
Patrick Williams2194f502022-10-16 14:26:09 -0500465:term:`DL_DIR`). Essentially, the :ref:`ref-tasks-cleanall` task is
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500466identical to the :ref:`ref-tasks-cleansstate` task
467with the added removal of downloaded source files.
468
Andrew Geisslerc926e172021-05-07 16:11:35 -0500469You can run this task using BitBake as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500470
471 $ bitbake -c cleanall recipe
472
Patrick Williams2194f502022-10-16 14:26:09 -0500473Typically, you would not normally use the :ref:`ref-tasks-cleanall` task. Do so only
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500474if you want to start fresh with the :ref:`ref-tasks-fetch`
475task.
476
477.. _ref-tasks-cleansstate:
478
479``do_cleansstate``
480------------------
481
482Removes all output files and shared state
Andrew Geissler09209ee2020-12-13 08:44:15 -0600483(:ref:`sstate <overview-manual/concepts:shared state cache>`) cache for a
Patrick Williams2194f502022-10-16 14:26:09 -0500484target. Essentially, the :ref:`ref-tasks-cleansstate` task is identical to the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500485:ref:`ref-tasks-clean` task with the added removal of
Andrew Geissler09209ee2020-12-13 08:44:15 -0600486shared state (:ref:`sstate <overview-manual/concepts:shared state cache>`)
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500487cache.
488
Andrew Geisslerc926e172021-05-07 16:11:35 -0500489You can run this task using BitBake as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500490
491 $ bitbake -c cleansstate recipe
492
Patrick Williams2194f502022-10-16 14:26:09 -0500493When you run the :ref:`ref-tasks-cleansstate` task, the OpenEmbedded build system
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500494no longer uses any sstate. Consequently, building the recipe from
495scratch is guaranteed.
496
497.. note::
498
Patrick Williams2194f502022-10-16 14:26:09 -0500499 The :ref:`ref-tasks-cleansstate` task cannot remove sstate from a remote sstate
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500500 mirror. If you need to build a target from scratch using remote mirrors, use
Andrew Geisslerc926e172021-05-07 16:11:35 -0500501 the "-f" option as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500502
503 $ bitbake -f -c do_cleansstate target
504
505
Andrew Geisslereff27472021-10-29 15:35:00 -0500506.. _ref-tasks-pydevshell:
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500507
Andrew Geisslereff27472021-10-29 15:35:00 -0500508``do_pydevshell``
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500509-----------------
510
511Starts a shell in which an interactive Python interpreter allows you to
512interact with the BitBake build environment. From within this shell, you
513can directly examine and set bits from the data store and execute
Andrew Geissler517393d2023-01-13 08:55:19 -0600514functions as if within the BitBake environment. See the ":ref:`dev-manual/python-development-shell:using a Python development shell`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500515the Yocto Project Development Tasks Manual for more information about
Andrew Geisslereff27472021-10-29 15:35:00 -0500516using ``pydevshell``.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500517
518.. _ref-tasks-devshell:
519
520``do_devshell``
521---------------
522
523Starts a shell whose environment is set up for development, debugging,
Andrew Geissler517393d2023-01-13 08:55:19 -0600524or both. See the ":ref:`dev-manual/development-shell:using a development shell`" section in the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500525Yocto Project Development Tasks Manual for more information about using
526``devshell``.
527
528.. _ref-tasks-listtasks:
529
530``do_listtasks``
531----------------
532
533Lists all defined tasks for a target.
534
535.. _ref-tasks-package_index:
536
537``do_package_index``
538--------------------
539
Andrew Geissler09209ee2020-12-13 08:44:15 -0600540Creates or updates the index in the :ref:`overview-manual/concepts:package feeds` area.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500541
542.. note::
543
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500544 This task is not triggered with the ``bitbake -c`` command-line option as
545 are the other tasks in this section. Because this task is specifically for
546 the ``package-index`` recipe, you run it using ``bitbake package-index``.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500547
548Image-Related Tasks
549===================
550
551The following tasks are applicable to image recipes.
552
553.. _ref-tasks-bootimg:
554
555``do_bootimg``
556--------------
557
558Creates a bootable live image. See the
559:term:`IMAGE_FSTYPES` variable for additional
560information on live image types.
561
562.. _ref-tasks-bundle_initramfs:
563
564``do_bundle_initramfs``
565-----------------------
566
Patrick Williams2194f502022-10-16 14:26:09 -0500567Combines an :term:`Initramfs` image and kernel together to
568form a single image.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500569
570.. _ref-tasks-rootfs:
571
572``do_rootfs``
573-------------
574
575Creates the root filesystem (file and directory structure) for an image.
Andrew Geissler09209ee2020-12-13 08:44:15 -0600576See the ":ref:`overview-manual/concepts:image generation`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500577section in the Yocto Project Overview and Concepts Manual for more
578information on how the root filesystem is created.
579
580.. _ref-tasks-testimage:
581
582``do_testimage``
583----------------
584
585Boots an image and performs runtime tests within the image. For
586information on automatically testing images, see the
Andrew Geissler517393d2023-01-13 08:55:19 -0600587":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500588section in the Yocto Project Development Tasks Manual.
589
590.. _ref-tasks-testimage_auto:
591
592``do_testimage_auto``
593---------------------
594
595Boots an image and performs runtime tests within the image immediately
596after it has been built. This task is enabled when you set
597:term:`TESTIMAGE_AUTO` equal to "1".
598
599For information on automatically testing images, see the
Andrew Geissler517393d2023-01-13 08:55:19 -0600600":ref:`dev-manual/runtime-testing:performing automated runtime testing`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500601section in the Yocto Project Development Tasks Manual.
602
603Kernel-Related Tasks
604====================
605
606The following tasks are applicable to kernel recipes. Some of these
607tasks (e.g. the :ref:`ref-tasks-menuconfig` task) are
608also applicable to recipes that use Linux kernel style configuration
609such as the BusyBox recipe.
610
611.. _ref-tasks-compile_kernelmodules:
612
613``do_compile_kernelmodules``
614----------------------------
615
616Runs the step that builds the kernel modules (if needed). Building a
617kernel consists of two steps: 1) the kernel (``vmlinux``) is built, and
6182) the modules are built (i.e. ``make modules``).
619
620.. _ref-tasks-diffconfig:
621
622``do_diffconfig``
623-----------------
624
625When invoked by the user, this task creates a file containing the
626differences between the original config as produced by
627:ref:`ref-tasks-kernel_configme` task and the
628changes made by the user with other methods (i.e. using
629(:ref:`ref-tasks-kernel_menuconfig`). Once the
630file of differences is created, it can be used to create a config
631fragment that only contains the differences. You can invoke this task
Andrew Geisslerc926e172021-05-07 16:11:35 -0500632from the command line as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500633
634 $ bitbake linux-yocto -c diffconfig
635
636For more information, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600637":ref:`kernel-dev/common:creating configuration fragments`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500638section in the Yocto Project Linux Kernel Development Manual.
639
640.. _ref-tasks-kernel_checkout:
641
642``do_kernel_checkout``
643----------------------
644
645Converts the newly unpacked kernel source into a form with which the
646OpenEmbedded build system can work. Because the kernel source can be
Patrick Williams2194f502022-10-16 14:26:09 -0500647fetched in several different ways, the :ref:`ref-tasks-kernel_checkout` task makes
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500648sure that subsequent tasks are given a clean working tree copy of the
649kernel with the correct branches checked out.
650
651.. _ref-tasks-kernel_configcheck:
652
653``do_kernel_configcheck``
654-------------------------
655
656Validates the configuration produced by the
657:ref:`ref-tasks-kernel_menuconfig` task. The
Patrick Williams2194f502022-10-16 14:26:09 -0500658:ref:`ref-tasks-kernel_configcheck` task produces warnings when a requested
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500659configuration does not appear in the final ``.config`` file or when you
660override a policy configuration in a hardware configuration fragment.
661You can run this task explicitly and view the output by using the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500662following command::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500663
664 $ bitbake linux-yocto -c kernel_configcheck -f
665
666For more information, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600667":ref:`kernel-dev/common:validating configuration`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500668section in the Yocto Project Linux Kernel Development Manual.
669
670.. _ref-tasks-kernel_configme:
671
672``do_kernel_configme``
673----------------------
674
675After the kernel is patched by the :ref:`ref-tasks-patch`
Patrick Williams2194f502022-10-16 14:26:09 -0500676task, the :ref:`ref-tasks-kernel_configme` task assembles and merges all the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500677kernel config fragments into a merged configuration that can then be
678passed to the kernel configuration phase proper. This is also the time
679during which user-specified defconfigs are applied if present, and where
680configuration modes such as ``--allnoconfig`` are applied.
681
682.. _ref-tasks-kernel_menuconfig:
683
684``do_kernel_menuconfig``
685------------------------
686
687Invoked by the user to manipulate the ``.config`` file used to build a
688linux-yocto recipe. This task starts the Linux kernel configuration
689tool, which you then use to modify the kernel configuration.
690
691.. note::
692
Andrew Geisslerc926e172021-05-07 16:11:35 -0500693 You can also invoke this tool from the command line as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500694
695 $ bitbake linux-yocto -c menuconfig
696
697
Andrew Geissler09209ee2020-12-13 08:44:15 -0600698See the ":ref:`kernel-dev/common:using \`\`menuconfig\`\``"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500699section in the Yocto Project Linux Kernel Development Manual for more
700information on this configuration tool.
701
702.. _ref-tasks-kernel_metadata:
703
704``do_kernel_metadata``
705----------------------
706
707Collects all the features required for a given kernel build, whether the
708features come from :term:`SRC_URI` or from Git
Patrick Williams2194f502022-10-16 14:26:09 -0500709repositories. After collection, the :ref:`ref-tasks-kernel_metadata` task
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500710processes the features into a series of config fragments and patches,
711which can then be applied by subsequent tasks such as
712:ref:`ref-tasks-patch` and
713:ref:`ref-tasks-kernel_configme`.
714
715.. _ref-tasks-menuconfig:
716
717``do_menuconfig``
718-----------------
719
720Runs ``make menuconfig`` for the kernel. For information on
721``menuconfig``, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600722":ref:`kernel-dev/common:using \`\`menuconfig\`\``"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500723section in the Yocto Project Linux Kernel Development Manual.
724
725.. _ref-tasks-savedefconfig:
726
727``do_savedefconfig``
728--------------------
729
730When invoked by the user, creates a defconfig file that can be used
731instead of the default defconfig. The saved defconfig contains the
732differences between the default defconfig and the changes made by the
733user using other methods (i.e. the
734:ref:`ref-tasks-kernel_menuconfig` task. You
Andrew Geisslerc926e172021-05-07 16:11:35 -0500735can invoke the task using the following command::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500736
737 $ bitbake linux-yocto -c savedefconfig
738
739.. _ref-tasks-shared_workdir:
740
741``do_shared_workdir``
742---------------------
743
744After the kernel has been compiled but before the kernel modules have
745been compiled, this task copies files required for module builds and
746which are generated from the kernel build into the shared work
747directory. With these copies successfully copied, the
748:ref:`ref-tasks-compile_kernelmodules` task
749can successfully build the kernel modules in the next step of the build.
750
751.. _ref-tasks-sizecheck:
752
753``do_sizecheck``
754----------------
755
756After the kernel has been built, this task checks the size of the
757stripped kernel image against
758:term:`KERNEL_IMAGE_MAXSIZE`. If that
759variable was set and the size of the stripped kernel exceeds that size,
760the kernel build produces a warning to that effect.
761
762.. _ref-tasks-strip:
763
764``do_strip``
765------------
766
767If ``KERNEL_IMAGE_STRIP_EXTRA_SECTIONS`` is defined, this task strips
768the sections named in that variable from ``vmlinux``. This stripping is
769typically used to remove nonessential sections such as ``.comment``
770sections from a size-sensitive configuration.
771
772.. _ref-tasks-validate_branches:
773
774``do_validate_branches``
775------------------------
776
777After the kernel is unpacked but before it is patched, this task makes
778sure that the machine and metadata branches as specified by the
779:term:`SRCREV` variables actually exist on the specified
William A. Kennington IIIac69b482021-06-02 12:28:27 -0700780branches. Otherwise, if :term:`AUTOREV` is not being used, the
Patrick Williams2194f502022-10-16 14:26:09 -0500781:ref:`ref-tasks-validate_branches` task fails during the build.