
{"id":10964,"date":"2024-04-15T04:30:39","date_gmt":"2024-04-15T04:30:39","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems-2\/"},"modified":"2025-03-25T05:18:36","modified_gmt":"2025-03-25T05:18:36","slug":"rdk_yocto_build_systems","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/","title":{"rendered":"RDK Yocto Build Systems"},"content":{"rendered":"<div class=\"contentLayout2\">\n<div class=\"columnLayout two-right-sidebar\" data-layout=\"two-right-sidebar\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p><span>The primary function of the Yocto Project within RDK development is the building and packaging of multiple components. RDK leverages the capabilities of the Yocto Project to create customized Linux-based software distributions that power devices like set-top boxes, smart TVs etc. <\/span><span>To fully understand the concepts presented in this document, it is recommended to read&nbsp;<span><span><a href=\"https:\/\/developer.rdkcentral.com\/support\/support\/articles\/rdk_yocto_build_system_overview\/\n\t\t\t\t\t\" rel=\"nofollow\">RDK Yocto Build System Overview<\/a><\/span><\/span>&nbsp;as an introduction to the concepts explored in this document.<br \/><\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"cell aside\" data-type=\"aside\">\n<div class=\"innerCell\">\n<div class=\"toc-macro client-side-toc-macro conf-macro output-block\" data-headerelements=\"H1,H2,H3\" data-hasbody=\"false\" data-macro-name=\"toc\"><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr>\n\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Introduction<\/span><\/h3>\n<h6 id=\"RDKYoctoBuildSystems-Yoctobuildmanifestfile\"><span>Yocto build manifest file<\/span><\/h6>\n<p><span>The starting point for the Yocto build is a manifest file. The manifest file is an xml file that contains details of the different layers (including their repository URL, target location where they need to be downloaded and any specific version &#8211; like branch or tag &#8211; which need to be used ) that needs to be fetched during initial stages of the builds. The manifest file will be usually used to download the repositories with details of meta layers and build configurations.&nbsp; A set of sample manifests that can be used as a template for developing vendor specific manifests are given below ( along with sample manifest for OEM and third party)<\/span><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped confluenceTable\" data-snooker-col-series=\"numbers\" data-snooker-locked-cols=\"0\">\n\t\t\t\t\t\t<colgroup class=\"\">\n\t\t\t\t\t\t\t<col class=\"\">\n\t\t\t\t\t\t\t<col class=\"\">\n\t\t\t\t\t\t\t<col class=\"\">\n\t\t\t\t\t\t<\/colgroup>\n\t\t\t\t\t\t<tbody class=\"\">\n\t\t\t\t\t\t\t<tr class=\"table-header\">\n\t\t\t\t\t\t\t\t<th class=\"numberingColumn confluenceTh\" contenteditable=\"false\" data-mce-resize=\"false\"><br><\/th>\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\">\n\t\t\t\t\t\t\t\t\t<p><strong>File<\/strong><\/p>\n\t\t\t\t\t\t\t\t<\/th>\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\">\n\t\t\t\t\t\t\t\t\t<p><strong>Remarks<\/strong><\/p>\n\t\t\t\t\t\t\t\t<\/th>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"numberingColumn confluenceTd\" contenteditable=\"false\" data-mce-resize=\"false\">1<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"\/wp-content\/uploads\/sites\/16\/2024\/08\/Device%20Specific%20Manifest\" download=\"\">Device Specific Manifest<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p>This is the starting point of the build and is specific to a device\/board . If the SoC\/OEM has only one target device \/board, still it is recommended to maintain a different manifest for SoC\/OEM for keeping it future-proof. Usually it contains references to other manifest files which will be having specific set of repos<\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"numberingColumn confluenceTd\" contenteditable=\"false\" data-mce-resize=\"false\">2<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"\/wp-content\/uploads\/sites\/16\/2024\/08\/OEM%20Manifest\" download=\"\">OEM Manifest<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p>This manifest contains meta layer details of OEM and , optionally, some OEM specific repos<\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"numberingColumn confluenceTd\" contenteditable=\"false\" data-mce-resize=\"false\">3<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p title=\"\"><a href=\"\/wp-content\/uploads\/sites\/16\/2024\/08\/OE%20layers%20Manifest\" download=\"\">OE layers Manifest<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p title=\"\">This manifest has details of the basic Yocto Open Embedded layers<\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"numberingColumn confluenceTd\" contenteditable=\"false\" data-mce-resize=\"false\">4<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p><a href=\"\/wp-content\/uploads\/sites\/16\/2024\/08\/RDK-V%20Manifest\" download=\"\">RDK-V Manifest<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\">\n\t\t\t\t\t\t\t\t\t<p>This manifest can contain meta layers specific to RDK &amp; RDK-V and , for EXTERNALSRC cases, the RDK &amp; RDK-V component repo details too. It might be supplemented with a conf file too<\/p>\n\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t<\/table>\n\n\n<\/div>\n<p><span><br \/>Folder overview<\/span> in <span>Yocto for RDK-V:<\/span><\/p>\n<div id=\"expander-332176563\" class=\"expand-container conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"expand\">\n<div role=\"region\" id=\"expander-content-332176563\" class=\"expand-content expand-hidden\" aria-labelledby=\"expand-button-332176563\">\n<ol>\n<li>\n<p><span><code>meta-rdk-video\/recipes-connectivity<\/code>: This folder consists of&nbsp;recipes related to connectivity functionalities. These recipes provide components and utilities for establishing and managing network connections in RDK-V.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>meta-rdk-video\/recipes-graphics<\/code>: This folder contains recipes for graphics-related components in RDK-V. It includes recipes for graphical user interfaces (GUIs), graphics libraries, and rendering engines.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>meta-rdk-video\/recipes-multimedia<\/code>: This folder includes recipes for multimedia components in RDK-V. It covers recipes for audio playback, recording, multimedia frameworks, and related utilities.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>meta-rdk-video\/recipes-core<\/code>: This folder contains core recipes that are essential for RDK-V. It includes recipes for core system components, utilities, and configurations.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>meta-rdk-video\/recipes-extended<\/code>: This folder includes additional recipes that extend the functionality of RDK-V. It covers recipes for various extended components, tools, and services.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>meta-rdk-video\/recipes-support<\/code>: This folder contains recipes for support components in RDK-V. It includes recipes for debugging tools, logging utilities, and other support-related functionalities.<\/span><\/p>\n<\/li>\n<li><span><code style=\"text-align: left\">meta-rdk-video\/recipes-devtools<\/code>: This folder contains recipes that provide development tools and utilities in RDK-B. These tools assist in the development and debugging processes, making it easier to build, test, and analyze the software.<\/span><\/li>\n<li>\n<p><code>meta-rdk\/recipes-video<\/code>: <span>This folder contains recipes related to video components in RDK-V. It includes recipes for video playback, streaming, codecs, and other video-related functionalities.<\/span><\/p>\n<\/li>\n<li><span><span><span><code style=\"text-align: left\">meta-rdk-video\/conf:&nbsp;<\/code><\/span>conf files<span>&nbsp;<\/span><\/span><span>define various settings and variables that control the build process and customize the resulting embedded Linux system. It consists of distro and layer.conf file.<\/span><\/span><\/li>\n<\/ol><\/div>\n<\/p><\/div>\n<p><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">This document focuses on the example of the RDK video devicesettings module.<\/span>The devicesettings module provides functionality related to device settings management within the context of the Raspberry Pi platform and the RDK (Reference Design Kit) video meta-layer.<\/span><br \/><span><span>devicesettings comes under these layers:<\/span>&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-cmf-raspberrypi\/+\/refs\/heads\/rdk-next\" rel=\"nofollow\">meta-cmf-raspberrypi<\/a><span>, <\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/components\/generic\/rdk-oe\/meta-cmf-video\/+\/refs\/heads\/rdk-next\" rel=\"nofollow\">meta-cmf-video<\/a><span>, <\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-rdk-video\/+\/refs\/heads\/rdk-next\" rel=\"nofollow\">meta-rdk-video<\/a><span>.<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr>\n\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Module Structure<\/span><\/h3>\n<p><span>devicesettings module is structured as:<\/span><\/p>\n<p><span>meta-rdk-video<\/span><br \/><span>|&nbsp; &nbsp; &nbsp; &nbsp; &#9492;&#9472;&#9472; recipes-extended<\/span><br \/><span>|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#9492;&#9472;&#9472; devicesettings<\/span><br \/><span>|&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#9500;&#9472;&#9472;<\/span> <a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-rdk-video\/+\/refs\/heads\/rdk-next\/recipes-extended\/devicesettings\/devicesettings_git.bb\" rel=\"nofollow\">devicesettings_git.bb<\/a><br \/>|&nbsp; &nbsp; &nbsp;<span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#9492;&#9472;&#9472;<\/span> <a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-rdk-video\/+\/refs\/heads\/rdk-next\/recipes-extended\/devicesettings\/devicesettings-hal-headers_git.bb\" rel=\"nofollow\">devicesettings-hal-headers_git.bb<\/a><br \/><span>|<\/span><br \/><span>meta-cmf-raspberrypi<\/span><br \/><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#9492;&#9472;&#9472; meta-rdk-video&nbsp; &nbsp;<\/span><br \/><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#9492;&#9472;&#9472; recipes-extended<\/span><br \/><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#9492;&#9472;&#9472; devicesettings<\/span><span><br \/><\/span><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#9500;&#9472;&#9472; <\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-cmf-raspberrypi\/+\/refs\/heads\/rdk-next\/meta-rdk-video\/recipes-extended\/devicesettings\/devicesettings_git.bbappend\" rel=\"nofollow\">devicesettings_git.bbappend<\/a><br \/><span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#9492;&#9472;&#9472; <\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-cmf-raspberrypi\/+\/refs\/heads\/rdk-next\/meta-rdk-video\/recipes-extended\/devicesettings\/devicesettings-hal-raspberrypi_git.bb\" rel=\"nofollow\">devicesettings-hal-raspberrypi_git.bb<\/a><\/p>\n<\/p>\n<p><span>The devicesettings recipe, represented by &#8220;devicesettings_git.bb&#8221;, is responsible for building the devicesettings package from the corresponding source code. It defines the necessary build steps, dependencies, and configurations to create the devicesettings package, and in &#8220;devicesettings-hal-headers_git.bb&#8221;, hal-specific definitions are available.<\/span><\/p>\n<p><span>Also for devicesettings, certain overrides exist in other meta layers, which can be device specific, here we are focusing on raspberrypi device, there are dedicated recipe specific to the &#8216;raspberrypi&#8217; hardware abstraction layer (HAL) and append file.&nbsp;<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr>\n\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Recipe Parameters<\/span><\/h3>\n<p><span>Below are some of the important parameters present in the recipes:<\/span><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"relative-table wrapped confluenceTable\">\n\t\t\t\t\t\t<colgroup class=\"\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 23.6302%\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 76.339%\">\n\t\t\t\t\t\t<\/colgroup>\n\t\t\t\t\t\t<tbody class=\"\">\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\"><span>Parameters<\/span><\/th>\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\"><span>Description<\/span><\/th>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>SRC_URI<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>URI of source code, patches and extra files to be used to build packages. Uses different fetchers based on the URI.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>DEPENDS\/<span class=\"pln\">RDEPENDS_$<\/span><span class=\"pun\">{<\/span><span class=\"pln\">PN<\/span><span class=\"pun\">}<\/span><\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>Build time and run time package dependencies, where&nbsp;${PN} represents the package name defined in the recipe.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>CFLAGS\/CXXFLAGS\/LDFLAGS<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>&nbsp;environment variables commonly used in software development to specify compilation and linking options for C and C++ programs<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span><span class=\"pln\">do_install<\/span><span class=\"pun\">(), <span class=\"pln\">do_configure_prepend<\/span>(), <span class=\"pln\">do_compile<\/span>()<\/span><\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>These are&nbsp;integral parts of the build process, they enable developers to customize the configuration, compilation, and installation steps of software packages, providing flexibility and control over the build process.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t<\/table>\n\n\n<\/div>\n<p><span>Parameters in append file-<\/span><br \/><span>The *. bbappend file provided above is specifying additional CFLAGS (compiler flags) for the build process.&nbsp;<\/span><br \/><span>The line&nbsp;<code>CFLAGS += \" -DHAS_HDCP_CALLBACK -DHAS_FLASH_PERSISTENT\"<\/code>&nbsp;adds two specific compiler flags to the existing CFLAGS.<\/span><\/p>\n<ol>\n<li>\n<p><span><code>-DHAS_HDCP_CALLBACK<\/code>: This flag defines the macro&nbsp;<code>HAS_HDCP_CALLBACK<\/code>, which indicates that the build should include support for HDCP (High-bandwidth Digital Content Protection) callback functionality.<\/span><\/p>\n<\/li>\n<li>\n<p><span><code>-DHAS_FLASH_PERSISTENT<\/code>: This flag defines the macro&nbsp;<code>HAS_FLASH_PERSISTENT<\/code>, indicating that the build should include support for persistent storage on Flash memory.<\/span><\/p>\n<\/li>\n<\/ol>\n<p><span>In this example, we are referring to the above mentioned append file. Similarly, if we need to include any additional modifications to the recipe, we can do so by adding them in the append file within the SOC and OEM layers.<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr>\n\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Building the Module<\/span><\/h3>\n<p><span>To build the devicesettings module, execute the following command with Bitbake:&#8221;<strong>bitbake lib32-devicesettings<\/strong>&#8220;<\/span><\/p>\n<p><span>We can add the Install task bitbake command, which can be helpful if modifications have been made to the devicesettings source code and there is a need to copy the resulting binaries and libraries from the devicesettings build directory to the target system. The following command can be used:<\/span><\/p>\n<p><span>Install bitbake -c install -f devicesettings<\/span><\/p>\n<p><span>If someone needs to execute a task-wise module, the following commands can be used:<\/span><\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped relative-table confluenceTable\">\n\t\t\t\t\t\t<colgroup class=\"\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 26.6995%\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 73.2087%\">\n\t\t\t\t\t\t<\/colgroup>\n\t\t\t\t\t\t<tbody class=\"\">\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\"><span>Action<\/span><\/th>\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\"><span>Bitbake command<\/span><\/th>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>configure<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>bitbake -c configure -f lib32-devicesettings<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>compilation<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>bitbake -c compile -f lib32-devicesettings<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>cleanall<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>bitbake -c cleanall lib32-devicesettings<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>cleansstate<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>bitbake -c cleansstate lib32-devicesettings<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t<\/table>\n\n\n<\/div>\n<p><span>If we want to list down rdkv specific components- Execute <strong>bitbake -s&nbsp;<\/strong>it will list down all the components.<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h6 id=\"RDKYoctoBuildSystems-RDKPackageGroups\">RDK Package Groups<\/h6>\n<p><span>During the image creation phase of the build process, package groups are added to organize and include related packages in the final image.<\/span><br \/><span>devicesettings module is included in:<br \/>meta-rdk\/recipes-core\/packagegroup\/packagegroup-rdk-media-common.bb<br \/><\/span><\/p>\n<ul>\n<li><span>packagegroup-rdk-media-common &#8211; contains common RDK (non-OSS) components for mediaclient, mediaserver build types. These components are essential for building media-related functionalities in RDK-based systems.<\/span><\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h6 id=\"RDKYoctoBuildSystems-YoctoBuildImages\">Yocto Build Images<\/h6>\n<ul>\n<li><span>All the components are built using individual recipes. There shall be a main image recipe (example , rdk-generic-image) which includes all other required recipe and create the final RFS<\/span><\/li>\n<li><span>Package groups recipe is one support a image recipe to select the set of packages<\/span><\/li>\n<li><span>The recipes will be called in sequence- opensource components, Kernel, SDK, RDK, MSO, Packaging and create final image.<\/span><\/li>\n<li><span>The final linux and RFS &nbsp;image will be created under build_folder\/tmp\/deploy\/images<\/span><\/li>\n<\/ul>\n<p>Target image name:-<\/p>\n<div class=\"table-wrap\">\n\n\n<table class=\"wrapped relative-table confluenceTable\">\n\t\t\t\t\t\t<colgroup class=\"\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 19.7313%\">\n\t\t\t\t\t\t\t<col class=\"\" style=\"width: 80.2412%\">\n\t\t\t\t\t\t<\/colgroup>\n\t\t\t\t\t\t<tbody class=\"\">\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\">Image name<\/th>\n\t\t\t\t\t\t\t\t<th class=\"confluenceTh\">Description<\/th>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>rdk-generic-hybrid-image<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>A generic RDK build for hybrid devices with QAM-based tuners, enabling streaming and broadcasting of QAM content.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>rdk-oss-image<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>An RDK image based on open-source software components, providing flexibility and customization options.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>rdk-generic-mediaclient-image<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>A generic RDK build for media client devices capable of streaming IP-based or QAM content from hybrid devices.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<tr class=\"\">\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>rdk-generic-ipclient-image<\/span><\/td>\n\t\t\t\t\t\t\t\t<td class=\"confluenceTd\"><span>A generic RDK build for IP client devices, suitable for scenarios where an RDK license is not mandatory.<\/span><\/td>\n\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t<\/tbody>\n\t\t\t\t\t<\/table>\n\n\n<\/div>\n<p><span>Yocto build Image target names are of format- <strong>&lt;RDK vendor&gt;-&lt;profile&gt;-&lt;build-type&gt;-&lt;developer&gt;-image<br \/><\/strong>Example- <\/span><br \/><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">rdk-generic-mediaclient-wpe-image_FBT_6.0.0-rc4_20231108131757<\/span>.rootfs.wic<\/span><br \/><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">rdk-generic-mediaclient-wpe-image_FBT_6.0.0-rc4_20231108131757<\/span>.rootfs.wic.bz2<\/span><br \/><span><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">rdk-generic-mediaclient-wpe-image_FBT_6.0.0-rc4_20231108131757<\/span>.rootfs.tar.gz<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr>\n\t\t\t<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h3 class=\"wp-sub-header\"><span>Debugging<\/span><\/h3>\n<p><span>When facing errors or failures while executing a bitbake action, such as compilation or configuration errors, the specific log files can be found in the following directory structure:<\/span><\/p>\n<p><span>Path: build-raspberrypi4-64-rdk-android-ipmc\/tmp\/work\/raspberrypi4_64_rdk_android_ipmc-rdk-linux\/devicesettings\/5+gitr999-r0\/temp\/<\/span><br \/><span>Example<\/span><\/p>\n<ul>\n<li>\n<p><span>log.do_compile: This file contains the error logs related to the compilation process. It provides information about any issues encountered during the translation of source code into executable or object files.<\/span><\/p>\n<\/li>\n<li>\n<p><span>log.do_configure: This file contains the error logs associated with the configuration step. It helps identify any problems encountered while setting up the build configuration, such as missing dependencies or incorrect settings.<\/span><\/p>\n<\/li>\n<\/ul>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeHeader panelHeader pdl\"><b>Example<\/b><\/div>\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">ERROR: lib32-devicesettings-5+gitr999-r0 do_compile: oe_runmake failed\nERROR: Logfile of failure stored in: ~\/rpi_build\/raspberrypi4-64-rdk-hybrid\/tmp\/work\/armv7at2hf-neon-vfpv4-rdkmllib32-linux-gnueabi\/lib32-devicesettings\/5+gitr999-r0\/temp\/log.do_compile.4085187<\/pre>\n<\/p><\/div>\n<\/p><\/div>\n<p><span class=\"ui-provider a b c d e f g h i j k l m n o p q r s t u v w x y z ab ac ae af ag ah ai aj ak\">The provided example demonstrates a compilation error in the &#8220;devicesettings&#8221; package. The details of the error can be found in the specified log file, which can be analyzed by searching for the keyword &#8220;error&#8221;.<\/span><\/p>\n<div class=\"confluence-information-macro confluence-information-macro-note conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"note\">\n\t\t\t\t\t<span class=\"aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon\"><\/span><\/p>\n<div class=\"confluence-information-macro-body\">\n<p><span>The path provided in the example is specific to the mentioned build environment. In your actual working environment, the paths may differ depending on the build system or project structure you are using.<\/span><\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\"><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>The primary function of the Yocto Project within RDK development is the building and packaging [&hellip;]<\/p>\n","protected":false},"author":1018,"featured_media":0,"parent":9822,"menu_order":4,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-10964","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RDK Yocto Build Systems - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDK Yocto Build Systems - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The primary function of the Yocto Project within RDK development is the building and packaging [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\",\"name\":\"RDK Yocto Build Systems - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2024-04-15T04:30:39+00:00\",\"dateModified\":\"2025-03-25T05:18:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Entertainment\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"RDK Yocto Build Systems\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RDK Yocto Build Systems - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/","og_locale":"en_US","og_type":"article","og_title":"RDK Yocto Build Systems - RDK Documentation Portal | Documentation","og_description":"The primary function of the Yocto Project within RDK development is the building and packaging [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:36+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/","name":"RDK Yocto Build Systems - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2024-04-15T04:30:39+00:00","dateModified":"2025-03-25T05:18:36+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/rdk_yocto_build_systems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Entertainment","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"RDK Yocto Build Systems"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/1018"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=10964"}],"version-history":[{"count":16,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10964\/revisions"}],"predecessor-version":[{"id":11889,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/10964\/revisions\/11889"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9822"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=10964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}