From patchwork Fri Feb 7 16:28:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56873 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32A89C021A1 for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web11.73795.1738945738286796083 for ; Fri, 07 Feb 2025 08:28:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=O1ckZIvb; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id A1D2C4431F; Fri, 7 Feb 2025 16:28:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945736; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=lAF6tYPyewFSiX1nvq+ikRtEOO2pV4pk1j4B/FJBo0E=; b=O1ckZIvbk+gFy4qeA+syWb7TbPzr8Hh3dOuyZUtTircGkSm47E2mbP2iLfebOzpObq5/PA 9KdM9pJ1ZDoxiugGb8A/FQl52OwEW8l/Po8QmEaZofvZ9I+mDIINkUAjVDJGTtTmAh8rsL BesvA+36yyG1US9tSMY4AM8HeHdn8DYA687y7GaSO63pLIsEge3gDo97suspAymreXRMhd Tm+6X0cFAx86//HaDjog2thlBCCIurRzvlZHWKPR1FJQPYRWr0XZ/vM5xhoKldG+fExyVm gTL6lB92EYC6sEBip0O15BTUSE0wGyIIChMPEsH9xlNivznNNOTo8ygBkR0lvA== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:51 +0100 Subject: [PATCH 1/6] dev-manual: move multiconfig documentation to its own document MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-1-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=16372; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=nvE3D5UonpVfMFkuPMMRtXeg5j6950QgJrM63QzwxlY=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTHEf1UsTkxhvhhFwBAokVhVXIa+s2uafMWB fBPx9Ek3AqJAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo Ng+GD/9w1wHJcvGH8hd/DmceHj9YQqAD4FwsWh18C5ps1u0LlOUGw7UKz7V6UIJyyFKAHG30AeZ ++Z1DKkISzS+OUX97UofG4py4P7XpoYW7KdZPp0uAKKWl1Wg4g0Ov9arHZozxnxpsGuK/L7xLoN Wb5NNEbEzTE6ujz4t5MReDrQIlMAWpsW1ENhITcoBGHxvcqb+4jON3rSaXT4FvGCkcuSODC9t4M XuFQEViz2Q42om+eSDUcZPbIDEhEWjeKCVCPxNlW6ygP1D/d7yoD+CJztS6K6mWFIpdECIewmyb frzw2AK09tDiZ4YgfGSrtveCeg2KB+6kVviZcBj05GBiL/9HhJP25agnd1uHBZ+Uc3D9I09y7pP Whv31/Yh030JEnnQkjby8MuBlNjE3erLLA7TX/Ey3n4ED1qtg6kNFwGAEF1ypdoij/6f/201iE4 P67t69vPUWbjdFSpfBWNq49edgX6xdDloIbdXprrW+NTojbVsqzSmcGIzMdFhpyHH2NyDYYCRIo vdkm2KufNgrFX1xHzb+RISjPYKl1rWejMXxhQjsChCj3JBJjdMD0164D/nWInRX/0vJIfyN5Tiz Fzr7dsuFjW5UJnU4dZUSji6g+bnu3iFd/bbSEnKH8kPwGPj0WAJoktVT13M3CP1EXU+3qOSZXV3 n0D+m/pqMWivUBw== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepheeigeeuhfefgeehfffgueeiteehieelfeehjeektefgkeeuheeuleduvdelgffhnecukfhppedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehledphhgvlhhopegluddvjedrtddruddrudgnpdhmrghilhhfrhhomheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhrtghpthhtohepughotghssehlihhsthhsrdihohgtthhophhrohhjvggtthdrohhrghdprhgtphhtthhopehthhhomhgrshdrphgvthgriiiiohhnihessghoo hhtlhhinhdrtghomh X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6303 In preparation of more section and examples to multiconfig, move the section about it in building.rst into its own document. Signed-off-by: Antonin Godard Reviewed-by: Quentin Schulz --- documentation/dev-manual/building.rst | 156 +----------------------------- documentation/dev-manual/index.rst | 1 + documentation/dev-manual/multiconfig.rst | 160 +++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 154 deletions(-) diff --git a/documentation/dev-manual/building.rst b/documentation/dev-manual/building.rst index 4770a5a18..62b5e6b2e 100644 --- a/documentation/dev-manual/building.rst +++ b/documentation/dev-manual/building.rst @@ -113,160 +113,8 @@ The following figure and list overviews the build process: Building Images for Multiple Targets Using Multiple Configurations ================================================================== -You can use a single ``bitbake`` command to build multiple images or -packages for different targets where each image or package requires a -different configuration (multiple configuration builds). The builds, in -this scenario, are sometimes referred to as "multiconfigs", and this -section uses that term throughout. - -This section describes how to set up for multiple configuration builds -and how to account for cross-build dependencies between the -multiconfigs. - -Setting Up and Running a Multiple Configuration Build ------------------------------------------------------ - -To accomplish a multiple configuration build, you must define each -target's configuration separately using a parallel configuration file in -the :term:`Build Directory` or configuration directory within a layer, and you -must follow a required file hierarchy. Additionally, you must enable the -multiple configuration builds in your ``local.conf`` file. - -Follow these steps to set up and execute multiple configuration builds: - -- *Create Separate Configuration Files*: You need to create a single - configuration file for each build target (each multiconfig). - The configuration definitions are implementation dependent but often - each configuration file will define the machine and the - temporary directory BitBake uses for the build. Whether the same - temporary directory (:term:`TMPDIR`) can be shared will depend on what is - similar and what is different between the configurations. Multiple MACHINE - targets can share the same (:term:`TMPDIR`) as long as the rest of the - configuration is the same, multiple :term:`DISTRO` settings would need separate - (:term:`TMPDIR`) directories. - - For example, consider a scenario with two different multiconfigs for the same - :term:`MACHINE`: "qemux86" built - for two distributions such as "poky" and "poky-lsb". In this case, - you would need to use the different :term:`TMPDIR`. - - Here is an example showing the minimal statements needed in a - configuration file for a "qemux86" target whose temporary build - directory is ``tmpmultix86``:: - - MACHINE = "qemux86" - TMPDIR = "${TOPDIR}/tmpmultix86" - - The location for these multiconfig configuration files is specific. - They must reside in the current :term:`Build Directory` in a sub-directory of - ``conf`` named ``multiconfig`` or within a layer's ``conf`` directory - under a directory named ``multiconfig``. Here is an example that defines - two configuration files for the "x86" and "arm" multiconfigs: - - .. image:: figures/multiconfig_files.png - :align: center - :width: 50% - - The usual :term:`BBPATH` search path is used to locate multiconfig files in - a similar way to other conf files. - -- *Add the BitBake Multi-configuration Variable to the Local - Configuration File*: Use the - :term:`BBMULTICONFIG` - variable in your ``conf/local.conf`` configuration file to specify - each multiconfig. Continuing with the example from the previous - figure, the :term:`BBMULTICONFIG` variable needs to enable two - multiconfigs: "x86" and "arm" by specifying each configuration file:: - - BBMULTICONFIG = "x86 arm" - - .. note:: - - A "default" configuration already exists by definition. This - configuration is named: "" (i.e. empty string) and is defined by - the variables coming from your ``local.conf`` - file. Consequently, the previous example actually adds two - additional configurations to your build: "arm" and "x86" along - with "". - -- *Launch BitBake*: Use the following BitBake command form to launch - the multiple configuration build:: - - $ bitbake [mc:multiconfigname:]target [[[mc:multiconfigname:]target] ... ] - - For the example in this section, the following command applies:: - - $ bitbake mc:x86:core-image-minimal mc:arm:core-image-sato mc::core-image-base - - The previous BitBake command builds a ``core-image-minimal`` image - that is configured through the ``x86.conf`` configuration file, a - ``core-image-sato`` image that is configured through the ``arm.conf`` - configuration file and a ``core-image-base`` that is configured - through your ``local.conf`` configuration file. - -.. note:: - - Support for multiple configuration builds in the Yocto Project &DISTRO; - (&DISTRO_NAME;) Release does not include Shared State (sstate) - optimizations. Consequently, if a build uses the same object twice - in, for example, two different :term:`TMPDIR` - directories, the build either loads from an existing sstate cache for - that build at the start or builds the object fresh. - -Enabling Multiple Configuration Build Dependencies --------------------------------------------------- - -Sometimes dependencies can exist between targets (multiconfigs) in a -multiple configuration build. For example, suppose that in order to -build a ``core-image-sato`` image for an "x86" multiconfig, the root -filesystem of an "arm" multiconfig must exist. This dependency is -essentially that the -:ref:`ref-tasks-image` task in the -``core-image-sato`` recipe depends on the completion of the -:ref:`ref-tasks-rootfs` task of the -``core-image-minimal`` recipe. - -To enable dependencies in a multiple configuration build, you must -declare the dependencies in the recipe using the following statement -form:: - - task_or_package[mcdepends] = "mc:from_multiconfig:to_multiconfig:recipe_name:task_on_which_to_depend" - -To better show how to use this statement, consider the example scenario -from the first paragraph of this section. The following statement needs -to be added to the recipe that builds the ``core-image-sato`` image:: - - do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_rootfs" - -In this example, the `from_multiconfig` is "x86". The `to_multiconfig` is "arm". The -task on which the :ref:`ref-tasks-image` task in the recipe depends is the -:ref:`ref-tasks-rootfs` task from the ``core-image-minimal`` recipe associated -with the "arm" multiconfig. - -Once you set up this dependency, you can build the "x86" multiconfig -using a BitBake command as follows:: - - $ bitbake mc:x86:core-image-sato - -This command executes all the tasks needed to create the -``core-image-sato`` image for the "x86" multiconfig. Because of the -dependency, BitBake also executes through the :ref:`ref-tasks-rootfs` task for the -"arm" multiconfig build. - -Having a recipe depend on the root filesystem of another build might not -seem that useful. Consider this change to the statement in the -``core-image-sato`` recipe:: - - do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_image" - -In this case, BitBake must -create the ``core-image-minimal`` image for the "arm" build since the -"x86" build depends on it. - -Because "x86" and "arm" are enabled for multiple configuration builds -and have separate configuration files, BitBake places the artifacts for -each build in the respective temporary build directories (i.e. -:term:`TMPDIR`). +See the :ref:`dev-manual/multiconfig` section of the Yocto Project Development +Tasks Manual. Building an Initial RAM Filesystem (Initramfs) Image ==================================================== diff --git a/documentation/dev-manual/index.rst b/documentation/dev-manual/index.rst index 760108f60..63736e0ab 100644 --- a/documentation/dev-manual/index.rst +++ b/documentation/dev-manual/index.rst @@ -20,6 +20,7 @@ Yocto Project Development Tasks Manual development-shell python-development-shell building + multiconfig speeding-up-build libraries prebuilt-libraries diff --git a/documentation/dev-manual/multiconfig.rst b/documentation/dev-manual/multiconfig.rst new file mode 100644 index 000000000..8464f80c3 --- /dev/null +++ b/documentation/dev-manual/multiconfig.rst @@ -0,0 +1,160 @@ +.. SPDX-License-Identifier: CC-BY-SA-2.0-UK + +Building Images for Multiple Targets Using Multiple Configurations +****************************************************************** + +You can use a single ``bitbake`` command to build multiple images or +packages for different targets where each image or package requires a +different configuration (multiple configuration builds). The builds, in +this scenario, are sometimes referred to as "multiconfigs", and this +section uses that term throughout. + +This section describes how to set up for multiple configuration builds +and how to account for cross-build dependencies between the +multiconfigs. + +Setting Up and Running a Multiple Configuration Build +===================================================== + +To accomplish a multiple configuration build, you must define each +target's configuration separately using a parallel configuration file in +the :term:`Build Directory` or configuration directory within a layer, and you +must follow a required file hierarchy. Additionally, you must enable the +multiple configuration builds in your ``local.conf`` file. + +Follow these steps to set up and execute multiple configuration builds: + +- *Create Separate Configuration Files*: You need to create a single + configuration file for each build target (each multiconfig). + The configuration definitions are implementation dependent but often + each configuration file will define the machine and the + temporary directory BitBake uses for the build. Whether the same + temporary directory (:term:`TMPDIR`) can be shared will depend on what is + similar and what is different between the configurations. Multiple MACHINE + targets can share the same (:term:`TMPDIR`) as long as the rest of the + configuration is the same, multiple :term:`DISTRO` settings would need separate + (:term:`TMPDIR`) directories. + + For example, consider a scenario with two different multiconfigs for the same + :term:`MACHINE`: "qemux86" built + for two distributions such as "poky" and "poky-lsb". In this case, + you would need to use the different :term:`TMPDIR`. + + Here is an example showing the minimal statements needed in a + configuration file for a "qemux86" target whose temporary build + directory is ``tmpmultix86``:: + + MACHINE = "qemux86" + TMPDIR = "${TOPDIR}/tmpmultix86" + + The location for these multiconfig configuration files is specific. + They must reside in the current :term:`Build Directory` in a sub-directory of + ``conf`` named ``multiconfig`` or within a layer's ``conf`` directory + under a directory named ``multiconfig``. Here is an example that defines + two configuration files for the "x86" and "arm" multiconfigs: + + .. image:: figures/multiconfig_files.png + :align: center + :width: 50% + + The usual :term:`BBPATH` search path is used to locate multiconfig files in + a similar way to other conf files. + +- *Add the BitBake Multi-configuration Variable to the Local + Configuration File*: Use the + :term:`BBMULTICONFIG` + variable in your ``conf/local.conf`` configuration file to specify + each multiconfig. Continuing with the example from the previous + figure, the :term:`BBMULTICONFIG` variable needs to enable two + multiconfigs: "x86" and "arm" by specifying each configuration file:: + + BBMULTICONFIG = "x86 arm" + + .. note:: + + A "default" configuration already exists by definition. This + configuration is named: "" (i.e. empty string) and is defined by + the variables coming from your ``local.conf`` + file. Consequently, the previous example actually adds two + additional configurations to your build: "arm" and "x86" along + with "". + +- *Launch BitBake*: Use the following BitBake command form to launch + the multiple configuration build:: + + $ bitbake [mc:multiconfigname:]target [[[mc:multiconfigname:]target] ... ] + + For the example in this section, the following command applies:: + + $ bitbake mc:x86:core-image-minimal mc:arm:core-image-sato mc::core-image-base + + The previous BitBake command builds a ``core-image-minimal`` image + that is configured through the ``x86.conf`` configuration file, a + ``core-image-sato`` image that is configured through the ``arm.conf`` + configuration file and a ``core-image-base`` that is configured + through your ``local.conf`` configuration file. + +.. note:: + + Support for multiple configuration builds in the Yocto Project &DISTRO; + (&DISTRO_NAME;) Release does not include Shared State (sstate) + optimizations. Consequently, if a build uses the same object twice + in, for example, two different :term:`TMPDIR` + directories, the build either loads from an existing sstate cache for + that build at the start or builds the object fresh. + +Enabling Multiple Configuration Build Dependencies +================================================== + +Sometimes dependencies can exist between targets (multiconfigs) in a +multiple configuration build. For example, suppose that in order to +build a ``core-image-sato`` image for an "x86" multiconfig, the root +filesystem of an "arm" multiconfig must exist. This dependency is +essentially that the +:ref:`ref-tasks-image` task in the +``core-image-sato`` recipe depends on the completion of the +:ref:`ref-tasks-rootfs` task of the +``core-image-minimal`` recipe. + +To enable dependencies in a multiple configuration build, you must +declare the dependencies in the recipe using the following statement +form:: + + task_or_package[mcdepends] = "mc:from_multiconfig:to_multiconfig:recipe_name:task_on_which_to_depend" + +To better show how to use this statement, consider the example scenario +from the first paragraph of this section. The following statement needs +to be added to the recipe that builds the ``core-image-sato`` image:: + + do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_rootfs" + +In this example, the `from_multiconfig` is "x86". The `to_multiconfig` is "arm". The +task on which the :ref:`ref-tasks-image` task in the recipe depends is the +:ref:`ref-tasks-rootfs` task from the ``core-image-minimal`` recipe associated +with the "arm" multiconfig. + +Once you set up this dependency, you can build the "x86" multiconfig +using a BitBake command as follows:: + + $ bitbake mc:x86:core-image-sato + +This command executes all the tasks needed to create the +``core-image-sato`` image for the "x86" multiconfig. Because of the +dependency, BitBake also executes through the :ref:`ref-tasks-rootfs` task for the +"arm" multiconfig build. + +Having a recipe depend on the root filesystem of another build might not +seem that useful. Consider this change to the statement in the +``core-image-sato`` recipe:: + + do_image[mcdepends] = "mc:x86:arm:core-image-minimal:do_image" + +In this case, BitBake must +create the ``core-image-minimal`` image for the "arm" build since the +"x86" build depends on it. + +Because "x86" and "arm" are enabled for multiple configuration builds +and have separate configuration files, BitBake places the artifacts for +each build in the respective temporary build directories (i.e. +:term:`TMPDIR`). + From patchwork Fri Feb 7 16:28:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56868 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0CF2DC0219B for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web11.73796.1738945738309247752 for ; Fri, 07 Feb 2025 08:28:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=WD5tMQzS; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id D4E0F44339; Fri, 7 Feb 2025 16:28:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kvMVaWTl+ElqUpjf+YiZfefmM1ZbbGqad6OV3Zlrpqo=; b=WD5tMQzSeVynTDLfqz+NODvBg2fU2jNWwt//a3QEtBcihGa2Ecmo+MM6SmpYRUsPWjV24a sZnhvNqEbHMdZG2kodZAnX7/h/e4ed0WbIsSz2wiNX5ei9l2vNdF9ugZZ/V2XBqYVB+0ZS s72rG3eC738dtEhiqpHrnhRRwiZRmxQ5WjY50F20U2O3JHVuLEoXhGPcTJmCGb5+LIw1Te RBmdn+YfVgpaPGqIRxJQjPTHDQlbvWa89NfUJjvg+o9KSH3tRCxUbU+15rbyG3fDEkM29G UM9k6Ysk9zKzvnv0eJlLFzR2+ZiAAA8UocFb9pAJFaa0WCaN/rjgSjibk6yDDw== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:52 +0100 Subject: [PATCH 2/6] variables.rst: add a reference to BB_CURRENT_MC from bbdocs MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-2-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=847; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=RYSloyBLGtr9c/1aoXZmtiBHTMSYZkiSgPmJzS8NhD0=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTHZQkTJOLLxGCOYt4aJJPVAfBbf4GhGlKNb AKogJDrfeGJAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo NhdCEAC+Qt0PfnRuyJVXJKQtjW63Uz4aXnlXOG/+ZUP/hOtXR9sfwv3boFwu2ztcMsyFgW5mxuR lNVzTpjxWrj6agZBK8Pquh4lq47khJwZ5ZyoYFSq9ZHjaHtKAHEB7TSNjUieoSffBU0lC1fZKF8 ei6vAZdwtx1SIlR/PXZszsyjTVifHMV4LyvjsE5i10rXbOUisEv3kIdDkNvQ3COrlztQxGgGh7e bibB9kEM0BJXE26Idt+9VQQTaV2OYfy2CTc0HkgY28pK732i143Mt+GlWD4fe8hVaoksHPzMy+w 9sZMT+5N4qAUMy08Z9islt7h9G8081Qjj/w/J/SDVbWirlg5Xk8DAok0FXqHF1Cn3AQ7uRn1oyl gln8UywsNFc23/H99cvD7j07aV1R9w4WLngQRAA4YGey7zi7Wy1onL3eIJGk/bvyYQU1+Qjamu8 OMxzyh4FAu3/3/MQ0ie33f+oCmstEwq7E5l+KvrLyu0Kfpkz8jxNRz6nYjw0ZncRTZxPqtsHXgH fB4yBAlroDN5e5pFpJ3rLBbbmxiVYcEQ+BKUaOo6p1X83OSjLyfAGelSfgYec6xDwJjBlsKUR0E cUXkm9hVZgqlL4NzghSvStqIKP945eRWsIxnPzZVFbmI27qT0KhA3NT7CxqMIJ1rP1ESb08GLnr 2ZQZ3IRW8vgGkWw== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepheeigeeuhfefgeehfffgueeiteehieelfeehjeektefgkeeuheeuleduvdelgffhnecukfhppedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehledphhgvlhhopegluddvjedrtddruddrudgnpdhmrghilhhfrhhomheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhrtghpthhtohepughotghssehlihhsthhsrdihohgtthhophhrohhjvggtthdrohhrghdprhgtphhtthhopehthhhomhgrshdrphgvthgriiiiohhnihessghoo hhtlhhinhdrtghomh X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6302 BB_CURRENT_MC is documented in the Bitbake user manual. Add a reference to it here. Signed-off-by: Antonin Godard --- documentation/ref-manual/variables.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/documentation/ref-manual/variables.rst b/documentation/ref-manual/variables.rst index adbef69d8..a402815b6 100644 --- a/documentation/ref-manual/variables.rst +++ b/documentation/ref-manual/variables.rst @@ -390,6 +390,9 @@ system and gives an overview of their function and contents. :term:`BB_CURRENTTASK` See :term:`bitbake:BB_CURRENTTASK` in the BitBake manual. + :term:`BB_CURRENT_MC` + See :term:`bitbake:BB_CURRENT_MC` in the BitBake manual. + :term:`BB_DEFAULT_TASK` See :term:`bitbake:BB_DEFAULT_TASK` in the BitBake manual. From patchwork Fri Feb 7 16:28:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56870 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3023BC0219F for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web10.73654.1738945738656002492 for ; Fri, 07 Feb 2025 08:28:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=B6YY/ZBl; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id 1300544345; Fri, 7 Feb 2025 16:28:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=t6yL9aWywCtm6mjJMxAJU6RWzRSeuy/lAyt5VG5AFZU=; b=B6YY/ZBlHbNH6dEt4IvHPlNwWfZTfbC7mFrocGC3dnTwftwToz6MU/v6I6fVa8Nvd0UVEG bgLwcXgtKHikAzMDHLzXLoiLA8rmesoPgI+5onpE3otVM1kcJeZ0HM9oeKTxYQWe6wd8NZ SNkdVOmRnn8z05EHouOazezIJRcOg2YOa7F407Ix6UD+vqgpFd4lpSt2VbEaucf57C9uBB zvg8QH1fYR1sD8y57CBL/KHtJaZrgTNG9IFSQ5fw8eObLjHKhk/PCpDIBY/38ZAkzZ0ZmH nEKX57RfC6+4ocE+cx0c3ufKPYA0LMqzU/TVyu6GPZ3B6bghSW04eCz5vRcncg== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:53 +0100 Subject: [PATCH 3/6] migration-5.2: fix references to BB_CURRENT_MC MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-3-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=1170; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=k5dWHSw5q05d/y9H0jcpGnWNPvRlGF8Y1Xvjq1F6z7U=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTH0F00isGVIEJa6QIFTq5qcc58VdytGHI+p nawYXNRErKJAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo NtvbD/wJdqLTFv71rb2HAAl8dU2XiCK1KAsepvSadlaIM+vZHVV8g3Ixj6jCRDayh1DGzKjiWek v6cO1DXIl70cEOYnlrAlWBha07kjOA931BtzV7V6F4+XhKbsDUWTR3kHlvZwaH+b+UGwdG/xDqz 6OptzMWh5G33RhdVQZWQaQ1Syp5Fz3ed6ULVPXBv/1FrGrDfA7bfkTAYNFbGK9LontGddVGYBL+ 7at/RhNcDBNlOYGPS3weO/WR6aVXaQMiif4qCCH8NFHnOynTBBF5uDsBz2r2UCfP1SzWp7tBfhi Nej9v+iCBxP6+3Yf128bofsIijZfa6LF3JD9Sc1RJiKEQTszsmzOvmyC1avwzFxI1oKWns4f/EY dmbKcztG3DuOrr7Xy4fO49z/tIGRmTQTVIrfAIZx0JF8byeYOpCm3QLCXH4grdmmSj2oNXl3lPD OuR1PltmpSzz4nXgjLlpd06Lu50mxOUTybpynMP/13CL0LvFjVB8mISpqS79FEIi67/ilIN3mTm vs25Agk9sJVEPhNrbHNm1MCGxk7vFKmvOkbYmbiy3X5j/sJCFOyW+vJWyShAi7OZRLxvFoeKWf3 5O4RTIonXL8q9bwmP//zPbU4hXT7pdNtwnNEoHI3OBWpzmAsV/kNIyChkOftUeoulptlbwAB7Zj 23DYPS1USAed/1Q== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepheeigeeuhfefgeehfffgueeiteehieelfeehjeektefgkeeuheeuleduvdelgffhnecukfhppedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehledphhgvlhhopegluddvjedrtddruddrudgnpdhmrghilhhfrhhomheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhrtghpthhtohepughotghssehlihhsthhsrdihohgtthhophhrohhjvggtthdrohhrghdprhgtphhtthhopehthhhomhgrshdrphgvthgriiiiohhnihessghoo hhtlhhinhdrtghomh X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6304 Now part of the documentation. Signed-off-by: Antonin Godard --- documentation/migration-guides/migration-5.2.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/migration-guides/migration-5.2.rst b/documentation/migration-guides/migration-5.2.rst index de2ea773e..75bc4dbc6 100644 --- a/documentation/migration-guides/migration-5.2.rst +++ b/documentation/migration-guides/migration-5.2.rst @@ -97,12 +97,12 @@ systemd changes Multiconfig changes ~~~~~~~~~~~~~~~~~~~ -The value of ``BB_CURRENT_MC`` was changed from ``default`` to an empty string +The value of :term:`BB_CURRENT_MC` was changed from ``default`` to an empty string for the default multiconfig configuration to avoid needing to map the values within BitBake. This was already not happening in some cases so this fixes some obscure bugs. -Any logic based on ``BB_CURRENT_MC`` equalling to ``default`` by default should +Any logic based on :term:`BB_CURRENT_MC` equalling to ``default`` by default should be changed to be equal to an empty string. Virtual toolchain provider changes From patchwork Fri Feb 7 16:28:54 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56869 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A7BFC0219E for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web11.73797.1738945738846100012 for ; Fri, 07 Feb 2025 08:28:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=nM25MOqc; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id 65F1744347; Fri, 7 Feb 2025 16:28:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VIyJN1K3RKNDbbUtL9Q9UeBjT1PESbNHuWKzPsmXyvA=; b=nM25MOqcU1AWemBPN/go+y0TqSsduqxFn9NdbpzPRIH6m7gwIeNbEdIjRVh+WXUkMpQg0s u4yl3r/EXqkvkgoKNRbw3Lj4lXCjwjElt3O8m89cl3CS7y52egIOIlYtQOFcz1VBJZk/ky kA9M2ZQNGDc/UGEHbvMd0mxLfpuU9T2KUNOrDM8FVw70UMbfRNoBwNJAYXse5uiMH7ZgHd ImxX6zvduc17rS7ncPKN0efkGjDTyBEEGC3wns2tDO67L2iilXxRWAGLuX9V27Fg019/db /JST4nGc50v5qDp6uQueM+HMZZxj0CB+HC+W+5k4l4yl1wuukr6GqMhe7K3jUg== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:54 +0100 Subject: [PATCH 4/6] dev-manual/multiconfig: rename to use Multiconfig term MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-4-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=1821; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=EDv8xrq/TbNTNFDRAJj11QoVVaryXSFFpmeTst5AYTA=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTHY2WiL+3DXN4vm2jqFBn7oPekte6BAO/80 IEavb6Oe6CJAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo Nk7VD/4nBYh5YVEIzJwwhw4DZgQK7Hv9hDyFmpG0kYONYMoCEynpmqqt80W9tXY4jyNR1esab8u 73+ioIjdZTe5eQ9+vBkD3f8h0kXg/PjrNykEqBcz95tayhgyhXheP3JXwFHuQpYO4lmAzTirxBv Fz4NBP9xPdYp1/RCaEpJnCDtflU2j9oCQ0+OwkAvllBiCUuwhvwaMT4UCQ+P4neVT3nAhLW5zDR CFX1k45LJlztk6dmBqSnsZnIw4PqsNQDDW0lmV5uXhMHFCV+cECNxO/1kaj8551eIxtSAy8iTVS /jlRtHM3rG+1wguFtxkoqYSHYE8tq7MQuWOJwUBbKH3K0Bi+xzcD9JxEhEy7Sk3QzXIKHOG3TVy Fh9EldsRrtRTFvkx4c0Pm6qtMV3iQPfPhFp5bJGOQKemZRVH6Zu3V3wglbD2OiWLhlo3NowZ4r2 VGYs5QlrTDLj7IcGxJzjlrGr9bNneHaMAT9TTRZ2X3eX95Jvkm8JA/JKDMAOPFddcMaYtHvykT3 k4OtEpOJfs6vL0WQ11fSHmltWnQ7WvqlKXgoBH5uACProZz6nf4pxkOs4gaOn6cInvCUg60DA15 +SZ0JxmpdlmZVMJhDBpV+OclrxjHaOV7M1b9YInKfQky99L7aX/rMFBgGVdzsdamMHfnBp+9AiY ffnogVb49gNy7TA== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepheeigeeuhfefgeehfffgueeiteehieelfeehjeektefgkeeuheeuleduvdelgffhnecukfhppedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehledphhgvlhhopegluddvjedrtddruddrudgnpdhmrghilhhfrhhomheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhrtghpthhtohepughotghssehlihhsthhsrdihohgtthhophhrohhjvggtthdrohhrghdprhgtphhtthhopehthhhomhgrshdrphgvthgriiiiohhnihessghoo hhtlhhinhdrtghomh X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6305 Rename this section to explicitely name the multiple configuration feature "multiconfig". Signed-off-by: Antonin Godard Reviewed-by: Quentin Schulz --- documentation/dev-manual/building.rst | 4 ++-- documentation/dev-manual/multiconfig.rst | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/dev-manual/building.rst b/documentation/dev-manual/building.rst index 62b5e6b2e..2ac898881 100644 --- a/documentation/dev-manual/building.rst +++ b/documentation/dev-manual/building.rst @@ -113,8 +113,8 @@ The following figure and list overviews the build process: Building Images for Multiple Targets Using Multiple Configurations ================================================================== -See the :ref:`dev-manual/multiconfig` section of the Yocto Project Development -Tasks Manual. +See the :ref:`dev-manual/multiconfig:Building Images for Multiple Targets With +Multiconfig` section of the Yocto Project Development Tasks Manual. Building an Initial RAM Filesystem (Initramfs) Image ==================================================== diff --git a/documentation/dev-manual/multiconfig.rst b/documentation/dev-manual/multiconfig.rst index 8464f80c3..d8f6470d5 100644 --- a/documentation/dev-manual/multiconfig.rst +++ b/documentation/dev-manual/multiconfig.rst @@ -1,7 +1,7 @@ .. SPDX-License-Identifier: CC-BY-SA-2.0-UK -Building Images for Multiple Targets Using Multiple Configurations -****************************************************************** +Building Images for Multiple Targets With Multiconfig +***************************************************** You can use a single ``bitbake`` command to build multiple images or packages for different targets where each image or package requires a From patchwork Fri Feb 7 16:28:55 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56872 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B428C021A0 for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web10.73655.1738945739106117215 for ; Fri, 07 Feb 2025 08:28:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=Ag5znS8d; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id 9927F4434A; Fri, 7 Feb 2025 16:28:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pxy8+l/S5n8JnPQr7kxnlsoy88VWAORgHfcOF2roYZ8=; b=Ag5znS8dq8oWWJ59f+mT0MnKo67hIRiGm8D8lAzVcorOCM09KUrSLtx6YAthTQKQlwxw9m z7WTACJkQpO9KeR90EIKVVSP694HZnguaIIjHCGFAjjOVqxQfobGYRabTxNkf3M6nYB/n0 BZzPrm7/0qHVrMSPSaivaeQyr78mZDzFaw2DfOEpoFFWZ+sHslt/goeY4dpZukMDn5ay6p qabxt8mjDFZVrGa3WfVwtAbl8lu8V8vQgepDvlazGWAS7j/YgVRdiqr6HkUlrEc431a6A9 IUiOFtta50t9WOIo3YCvwv1u/a6E977/3Row0upZzQ7v91gAUYhv3QbogrEcXA== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:55 +0100 Subject: [PATCH 5/6] dev-manual/multiconfig: improve the current doc MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-5-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard , Mark Hatle X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=5993; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=cH4wqx944v9LV3nQFQp3g1q6ObTL5izV1smb5D9O/1Q=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTHeGS+vxVxUmr1rkNxPGbx6ppmn7K144Myo +lex2fPJW6JAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo NhaeD/9tBnIwlMj9br6YZEIJ3i411Gkqkbv/2w9Hm+3RoEMW8zW0iExN4VJkmdpY3FrN/no8kXm n7XqV8kUOnU6GiaEfHKadZuqnTRo/u1WBgbRHdTq5E8rhLp44tZ7roKR53xqnDJew+J51v9gcl6 Rp7ciMqf69Xg+9p6zt+PNIHGdbWwIqBrLmEA7BmvSffTTEIV4ATrQjXPJNBhavoUCg4rQxqV4J0 I1r/k2Tz5sgMEkUU0XIPhBto3TxzYtVQ0IPtpWIxc3VG0I0dSExwKrBiiW2peQkPTszcN3iLlY1 LyF41sAGcXxWjOWoj+rTg7q5pUxhNnII/DyJk8BNFegOdxFmINnLyc04vrSkZDdRyaPbhwNVu4J 5YIJ0uLqTDueWQPaEL6/DY0d7q1MRGxMS6dGyX/b+hc1veDmDNSOQihy5ZIcR5ktKryqkZDPSXb VeX0mVulzET0CBeAGJyLTON6346SrSN6qBk/xgx3XPCVGjoh6Uuz0f0H9eBRR+OfmgyY+mxuIqs PcjwgCXESj2qGmSTq53KGXllNLkctI155s3ZBB8wagLatfBg26jv+fIzMsrt64n3KOD51HKVcIx LfHuxlDc05iTGsjIMFiTvLFYTK6ZJvowB6UCqekVQx3061KoC1czPth1geiFW1e6PvsgyRnVIit Ga6jo+um7fIWaeQ== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepkeeuhfeihffgtdehjedvleelvdfhgeefhfdtteeuhfffhfdvieduuedvvdetteegnecuffhomhgrihhnpeihohgtthhophhrohhjvggtthdrohhrghenucfkphepvdgrtddumegtsgdugeemheehieemjegrtddtmeejtgehtgemiegruggvmeejleegkeemgedtheelnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepvdgrtddumegtsgdugeemheehieemjegrtddtmeejtgehtgemiegruggvmeejleegkeemgedtheelpdhhvghloheplgduvdejrddtrddurddungdpmhgrihhlfhhrohhmpegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomhdpnhgspghrtghpthhtohepgedprhgtphhtthhopegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomhdprhgtphhtthhopeguohgtsheslhhishhtshdrhihotghtohhprhhojhgvtghtrdhorhhgpdhrt ghpthhtohepthhhohhmrghsrdhpvghtrgiiiihonhhisegsohhothhlihhnrdgtohhmpdhrtghpthhtohepmhgrrhhkrdhhrghtlhgvsehkvghrnhgvlhdrtghrrghshhhinhhgrdhorhhg X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6306 After the suggestions from Mark Hatle on the list (https://lists.yoctoproject.org/g/docs/topic/110487932), rewrite the introduction to multiconfig with the following changes: - Move the part of overriding TMPDIR or not to a note. - Use BB_CURRENT_MC in the example. - Various additions of references & improved formatting. Suggested-by: Mark Hatle Signed-off-by: Antonin Godard --- documentation/dev-manual/multiconfig.rst | 65 +++++++++++++++++++------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/documentation/dev-manual/multiconfig.rst b/documentation/dev-manual/multiconfig.rst index d8f6470d5..27442a042 100644 --- a/documentation/dev-manual/multiconfig.rst +++ b/documentation/dev-manual/multiconfig.rst @@ -17,7 +17,7 @@ Setting Up and Running a Multiple Configuration Build ===================================================== To accomplish a multiple configuration build, you must define each -target's configuration separately using a parallel configuration file in +target's configuration separately using a parallel :term:`configuration file` in the :term:`Build Directory` or configuration directory within a layer, and you must follow a required file hierarchy. Additionally, you must enable the multiple configuration builds in your ``local.conf`` file. @@ -25,31 +25,27 @@ multiple configuration builds in your ``local.conf`` file. Follow these steps to set up and execute multiple configuration builds: - *Create Separate Configuration Files*: You need to create a single - configuration file for each build target (each multiconfig). + :term:`Configuration File` for each build target (each multiconfig). The configuration definitions are implementation dependent but often - each configuration file will define the machine and the - temporary directory BitBake uses for the build. Whether the same - temporary directory (:term:`TMPDIR`) can be shared will depend on what is - similar and what is different between the configurations. Multiple MACHINE - targets can share the same (:term:`TMPDIR`) as long as the rest of the - configuration is the same, multiple :term:`DISTRO` settings would need separate - (:term:`TMPDIR`) directories. - - For example, consider a scenario with two different multiconfigs for the same - :term:`MACHINE`: "qemux86" built - for two distributions such as "poky" and "poky-lsb". In this case, - you would need to use the different :term:`TMPDIR`. + each configuration file will define the :term:`MACHINE` and the + temporary directory BitBake uses for the build. - Here is an example showing the minimal statements needed in a - configuration file for a "qemux86" target whose temporary build - directory is ``tmpmultix86``:: + .. note:: - MACHINE = "qemux86" - TMPDIR = "${TOPDIR}/tmpmultix86" + Whether the same temporary directory (:term:`TMPDIR`) can be shared will + depend on what is similar and what is different between the + configurations. Multiple :term:`MACHINE` targets can share the same + :term:`TMPDIR` as long as the rest of the configuration is the same, + multiple :term:`DISTRO` settings would need separate :term:`TMPDIR` + directories. + + For example, consider a scenario with two different multiconfigs for the same + :term:`MACHINE`: "qemux86" built for two distributions such as "poky" and + "poky-lsb". In this case, you would need to use two different :term:`TMPDIR`. The location for these multiconfig configuration files is specific. They must reside in the current :term:`Build Directory` in a sub-directory of - ``conf`` named ``multiconfig`` or within a layer's ``conf`` directory + ``conf`` named ``multiconfig`` or within a :term:`Layer`'s ``conf`` directory under a directory named ``multiconfig``. Here is an example that defines two configuration files for the "x86" and "arm" multiconfigs: @@ -58,7 +54,19 @@ Follow these steps to set up and execute multiple configuration builds: :width: 50% The usual :term:`BBPATH` search path is used to locate multiconfig files in - a similar way to other conf files. + a similar way to other configuration files. + + Here is an example showing the minimal statements needed in a + :term:`configuration file` named ``qemux86.conf`` for a ``qemux86`` target + whose temporary build directory is ``tmp-qemux86``:: + + MACHINE = "qemux86" + TMPDIR .= "-${BB_CURRENT_MC}" + + BitBake will expand the :term:`BB_CURRENT_MC` variable to the value of the + current multiconfig in use. We append this value to :term:`TMPDIR` so that + any change on the definition of :term:`TMPDIR` will automatically affect the + value of :term:`TMPDIR` for each multiconfig. - *Add the BitBake Multi-configuration Variable to the Local Configuration File*: Use the @@ -88,11 +96,16 @@ Follow these steps to set up and execute multiple configuration builds: $ bitbake mc:x86:core-image-minimal mc:arm:core-image-sato mc::core-image-base - The previous BitBake command builds a ``core-image-minimal`` image - that is configured through the ``x86.conf`` configuration file, a - ``core-image-sato`` image that is configured through the ``arm.conf`` - configuration file and a ``core-image-base`` that is configured - through your ``local.conf`` configuration file. + The previous BitBake command builds several components: + + - A ``core-image-minimal`` image that is configured through the ``x86.conf`` + configuration file + + - A ``core-image-sato`` image that is configured through the ``arm.conf`` + configuration file + + - A ``core-image-base`` that is configured through your ``local.conf`` + configuration file .. note:: From patchwork Fri Feb 7 16:28:56 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antonin Godard X-Patchwork-Id: 56871 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 080FEC0219D for ; Fri, 7 Feb 2025 16:29:04 +0000 (UTC) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) by mx.groups.io with SMTP id smtpd.web11.73798.1738945739342152870 for ; Fri, 07 Feb 2025 08:28:59 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=WKY4mvAh; spf=pass (domain: bootlin.com, ip: 217.70.183.193, mailfrom: antonin.godard@bootlin.com) Received: by mail.gandi.net (Postfix) with ESMTPSA id CC77A4434B; Fri, 7 Feb 2025 16:28:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1738945737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1xGjhKRWBMqwPdIL1fI155CgQujsUg9DxORbbrjh3Cg=; b=WKY4mvAhaVMijpSxMTAAAgRFb15V/e7UdoumMJa7fM58OfoM9f9FAv1A8hH/5seZf11FFb DYJGRSiYV5Nw6dBRBAVZgrLdDxe02ROn6uaAa6lMjumb2txEATbUWKKhj+VkHulE6iW/M+ g0LBsc3ZmAfFcsSpHJDZw80NrjK1SQ+vUyIHZzJp20FKGFX9vEPwyxekzgFlI0KBri0/gY +Tn7GchsQUGLxquUC4biZnjdJZVGJCf4BJwOsP8zhPOpGWw4iVQGf4csYq/MR9wYMATJyt vlISpNvld9PaXZfYbiF2lKcogEkyiA6GmmSosZ3A0exR1J0V1d/bLKaHBkfXIA== From: Antonin Godard Date: Fri, 07 Feb 2025 17:28:56 +0100 Subject: [PATCH 6/6] dev-manual/multiconfig: add suggested best practices and baremetal sections MIME-Version: 1.0 Message-Id: <20250207-multiconfig-doc-v1-6-f63cdab1fad9@bootlin.com> References: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> In-Reply-To: <20250207-multiconfig-doc-v1-0-f63cdab1fad9@bootlin.com> To: docs@lists.yoctoproject.org Cc: Thomas Petazzoni , Antonin Godard , Mark Hatle X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=6198; i=antonin.godard@bootlin.com; h=from:subject:message-id; bh=6mIbH06lIXl9v+v10wLhyCLDIGxjYNC/BCeCJu4BQcY=; b=owEBbQKS/ZANAwAIAdGAQUApo6g2AcsmYgBnpjTH55saNhMheeEIneNweSRdU81smH+TnKYwj +B8L6sce5WJAjMEAAEIAB0WIQSGSHJRiN1AG7mg0//RgEFAKaOoNgUCZ6Y0xwAKCRDRgEFAKaOo NvmmEACaQfXXY/UiGV3wrO2vgGbkogwcEWZGsd/f1og1LZe3VSe13UrAhKGxK8GOJlW0oNzk5BA 40L28kLsiAFbXgL/pWWUez7o+o6LTRKJm8EpmU5Tz2Bq3CCpbVMLk4bMo6EmIDqKi/gTIujdjFW xViddzH5lhY4S6+Bm/r9hMN0qZ5dhlgH4hk1ww5VZXzhvMIcrWCOlDx/lnKP8bVV4C67HbAsw8w YyP7M8MGXS1dUUPK2kU0aeAtwqPmlcxoL/L4iPM+sR3FAJ98QBakc1YjCW0f1Ghd6hZ6FPN1qkk 6jta6xI89YOy+LIrdXhiAnGbtJ7ngujDKdusCAoJswPi4SfCnCUCcGIy9/DeJaZkTnySI7TXnQ3 f/LznzTTJYzp4m8ANRkyoqw99L37MZz5HP/Np/rpzUM9c90w3/JmiQQ88u5a9y95dQPGr8OusuK CWQH8GXFoFg+93jAjiszohjvfCZEDbpqEK/7+npPqyrjTC4fICX2BeavJKYjc5znHy52Gwm7ebg GJ+qpZVu2kFB5UjLtUm3TK+v273ykOhzeUpDQwQD0mJOr+IulFQuNl3I20RPl6L4rb1i0N//6Mp n4ZojgLwTcs95xzWRDbetJDDVAZBQ1SwgWsuyp6uh2n45D6479v2RxYjoMwbsoy03peV/ALkx5r TEAdWs/AENS/fGQ== X-Developer-Key: i=antonin.godard@bootlin.com; a=openpgp; fpr=8648725188DD401BB9A0D3FFD180414029A3A836 X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvleejiecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephfffufggtgfgkfhfjgfvvefosehtjeertdertdejnecuhfhrohhmpeetnhhtohhnihhnucfiohgurghrugcuoegrnhhtohhnihhnrdhgohgurghrugessghoohhtlhhinhdrtghomheqnecuggftrfgrthhtvghrnhepuefhleelueehveefjeehgeeviedtieeljeeiudffhfeuveejtedvteeigfejteevnecuffhomhgrihhnpeihohgtthhophhrohhjvggtthdrohhrghdpshhouhhrtggvfigrrhgvrdhorhhgnecukfhppedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehleenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedvrgdtudemtggsudegmeehheeimeejrgdttdemjegthegtmeeirgguvgemjeelgeekmeegtdehledphhgvlhhopegluddvjedrtddruddrudgnpdhmrghilhhfrhhomheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhnsggprhgtphhtthhopeegpdhrtghpthhtoheprghnthhonhhinhdrghhouggrrhgusegsohhothhlihhnrdgtohhmpdhrtghpthhtohepughotghssehlihhsthhsrdihohgtt hhophhrohhjvggtthdrohhrghdprhgtphhtthhopehthhhomhgrshdrphgvthgriiiiohhnihessghoohhtlhhinhdrtghomhdprhgtphhtthhopehmrghrkhdrhhgrthhlvgeskhgvrhhnvghlrdgtrhgrshhhihhnghdrohhrgh X-GND-Sasl: antonin.godard@bootlin.com List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 07 Feb 2025 16:29:04 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/docs/message/6307 After the suggestions from Mark Hatle on the list (https://lists.yoctoproject.org/g/docs/topic/110487932), add two sections to the multiconfig doc: - Suggested best practices: suggestion for better design of multiconfig builds. - Common use case: baremetal build. This section applies the guidelines from the first sections and apply it to a real-life example of how to use multiconfig. This one to build some baremetal firmware alongside a regular Linux build. Suggested-by: Mark Hatle Signed-off-by: Antonin Godard --- documentation/dev-manual/multiconfig.rst | 106 +++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/documentation/dev-manual/multiconfig.rst b/documentation/dev-manual/multiconfig.rst index 27442a042..9560ce5a0 100644 --- a/documentation/dev-manual/multiconfig.rst +++ b/documentation/dev-manual/multiconfig.rst @@ -171,3 +171,109 @@ and have separate configuration files, BitBake places the artifacts for each build in the respective temporary build directories (i.e. :term:`TMPDIR`). +Suggested best practices +======================== + +- :term:`TMPDIR` (other then the default set in bitbake.conf) is only set in + ``local.conf`` by the user. This means that we should **not** manipulate + :term:`TMPDIR` in any way within the Machine or Distro :term:`configuration + file`. + +- A multiconfig should specify a :term:`TMPDIR`, and should specify it by + appending the multiconfig name via :term:`BB_CURRENT_MC`. + +- Recipes that are used to transfer the output from a multiconfig build should + use ``task[mcdepends]`` to trigger the build of the component, and then + transfer the item to the current configuration in :ref:`ref-tasks-install` + :ref:`ref-tasks-deploy`, assuming the value of the deployed item based on + :term:`TMPDIR`. + +- Firmware recipes can set the :term:`INHIBIT_DEFAULT_DEPS` variable to ``1`` + if they don't rely on default dependencies such as the standard C library. + +Common use case: building baremetal firmware alongside a Linux build +==================================================================== + +A common use for multiconfig is to use the default configuration as the regular +Linux build, while one or more multiconfigs can be used to build special +components, such as baremetal firmware. This section details how one can achieve +this scenario. + +Adding a multiconfig configuration file and recipe for a baremetal firmware +--------------------------------------------------------------------------- + +As described in :ref:`dev-manual/multiconfig:Setting Up and Running a Multiple +Configuration Build`, each multiconfig will require a separate +:term:`Configuration File`. In our case, we will make a separate temporary +directory for our baremetal firmware build configuration. + +For example, we will define a new ``conf/multiconfig/baremetal-firmware.conf`` +as follows:: + + TMPDIR .= "-${BB_CURRENT_MC}" + TCLIBC = "newlib" + +The ``baremetal-firmware.conf`` configure a separate :term:`TMPDIR` for holding +binaries compiled with the `newlib `__ toolchain +(see :term:`TCLIBC`). + +We then create a recipe ``my-firmware.bb`` that defines how the baremetal +firmware is built. The recipe should contain enough information for the +:term:`OpenEmbedded build system` to properly compile the firmware with our +toolchain. The building tasks may vary depending on the nature of the firmware. +However, the recipe should define a :ref:`ref-classes-deploy` task that deploys +the output into the :term:`DEPLOYDIR` directory. We will consider in the +following that the file is named ``my-firmware.elf``. + +Building the firmware +--------------------- + +The firmware can be built with BitBake with the following command:: + + $ bitbake mc:baremetal-firmware:my-firmware + +However, we would prefer for ``my-firmware`` to be automatically built when +triggering a normal Linux build. + +Using an ``mcdepend``, a recipe belonging to the Linux build can trigger the +build of ``my-firmware``. For example, let's consider that our Linux build needs +to assemble a "special" firmware that uses the output of our ``my-firmware`` +recipe - let's call it ``my-parent-firmware.bb``. Then, we should specify this +dependency in ``my-parent-firmware.bb`` with:: + + do_compile[mcdepends] = "mc::baremetal-firmware:my-firmware:do_deploy" + +The above will ensure that when the :ref:`ref-tasks-compile` task of +``my-parent-firmware`` is triggered, the :ref:`ref-tasks-deploy` task of +``my-firmware`` will already have run successfully. + +Using the output of ``my-firmware`` +----------------------------------- + +After we have deployed ``my-firmware`` by using ``mcdepends``, we need to use +the output in some way. We can make a series of assumptions, based on the +default Yocto Project variables in order to get the binary for packaging. + +First, we can set the following in ``my-parent-firmware.bb``:: + + FIRMWARE_FILE ??= "${TMPDIR}-baremetal-firmware/deploy/images//my-firmware.elf" + FIRMWARE_FILE[vardepsexclude] += "TMPDIR" + +The first assignment stores the value of the path to the firmware built and +deployed by the ``my-firmware.bb`` recipe. The second assignment excludes the +:term:`TMPDIR` variable from being part of ``FIRMWARE_FILE``'s dependencies - +meaning that changing the value of :term:`TMPDIR` (for example, changing the +host on which the firmware is built) will not invalidate the :ref:`shared state +cache `. + +Additionally, ```` should be replaced by the machine for which we are +building in the Linux context. + +We can add an :ref:`ref-tasks-install` task to the ``my-parent-firmware``:: + + do_install() { + install -Dm 0644 ${FIRMWARE_FILE} ${D}/lib/firmware/my-firmware.elf + } + +Doing the above will allow the firmware binary to be transferred and packaged +into the Linux context and rootfs.