Build instructions for Control manager integration in RPI

       The following commands fetches the source code using repo tool and create the image using bitbake.


repo init -u https://code.rdkcentral.com/r/manifests -b rdk-next -m rdkv-nosrc.xml
repo sync -j4 --no-clone-bundle
source meta-cmf-raspberrypi/setup-environment <select option raspberrypi-rdk-hybrid.conf>
bitbake rdk-generic-hybrid-wpe-image

Errors and Challenges

observered in opensourced recipes

recipelayererror/warningroot causeaction
ctrlm-main.bbmeta-rdk-video

| ../../git/src/ble/ctrlm_hal_ble.cpp:25:10: fatal error: stropts.h: No such file or directory

|    25 | #include <stropts.h>

|       |          ^~~~~~~~~~~

| compilation terminated.

header file for morty and dunfell are different


https://gerrit.teamccp.com/#/c/503274/

ctrlm-main.bbmeta-rdk-video| ../../../../../../../../rdk/components/generic/control/src/../cpc/ctrlm_vendor_network_factory.cpp: In function 'void ctrlm_vendor_network_factory_func_add(int (*)(long unsigned int, json_t*, networks_map_t&))':
| ../../../../../../../../rdk/components/generic/control/src/../cpc/ctrlm_vendor_network_factory.cpp:27:12: error: return-statement with a value, in function returning 'void' [-fpermissive]
|      return 0;
|             ^
| make[3]: *** [../cpc/ctrlm_vendor_network_factory.o] Error 1
missing symbol issue

REFPLTV-929 - Getting issue details... STATUS

Added dummy finction in ctrlm_vendor_network_factory.cpp

asbluetoothrcu.bbmeta-rdk-video

const class QJsonValue' has no member named 'toInt'


| /home/vtv364/vtv364/dunfell/build-raspberrypi-rdk-hybrid/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/asbluetoothrcu/1.99-r0/git/daemon/source/utils/promise.h:32:10: fatal error: QAtomicInteger: No such file or directory

|    32 | #include <QAtomicInteger>

|       |          ^~~~~~~~~~~~~~~~

| compilation terminated.


| /home/vtv364/vtv364/dunfell/build-raspberrypi-rdk-hybrid/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/asbluetoothrcu/1.99-r0/git/daemon/source/utils/logging.h:34:10: fatal error: QLoggingCategory: No such file or directory

|    34 | #include <QLoggingCategory>

|       |          ^~~~~~~~~~~~~~~~~~

| compilation terminated.


patch 

https://gerrit.teamccp.com/#/c/477819/

packagegroup-rdk-qt5.bb meta-rdkNothing RPROVIDES 'qtremoteobjects' 

Added

DISTRO_FEATURES_append = " comcast_qt5"

in meta-cmf-raspberrypi/conf/machine/raspberrypi-rdk-hybrid.conf

ctrlm-main.bbmeta-rdk-video

ERROR: ctrlm-main-1.0-r0 do_compile: oe_runmake failed

| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1709: error: undefined reference to 'libevdev_new_from_fd'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1714: error: undefined reference to 'libevdev_get_uniq'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1720: error: undefined reference to 'libevdev_free'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1729: error: undefined reference to 'libevdev_free'


Added

DEPENDS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'build_for_sky', ' libevdev', ' ', d)}"

LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'build_for_sky', ' -levdev', ' ', d)}"

in ctrlm-main.bbappend


msgpack-c_2.1.1.bbmeta-rdk-ext

ERROR: msgpack-c-2.1.1+gitAUTOINC+20ef1f925b-r0 do_compile

| /mnt/home/mbaska691/vijith/mngr/build-raspberrypi-rdk-hybrid/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/msgpack-c/2.1.1+gitAUTOINC+20ef1f925b-r0/git/test/carray.cpp:2:25: fatal error: gtest/gtest.h: No such file or directory
|  #include <gtest/gtest.h>
|                          ^
| compilation terminated.


Add


DEPENDS ="gtest" 

in meta-rdk-ext/recipes-support/msgpack/msgpack-c_2.1.1.bb

asbluetoothrcu.bbmeta-cmf-raspberrypi| CMake Error at CMakeLists.txt:24 (cmake_minimum_required):
|   CMake 3.10.3 or higher is required.  You are running version 3.8.2

added cmake_3.10.3.bb and related recipes to openembedded-core/meta/recipes-devtools/cmake/


observed in morty image.




"BleRcuDaemon" received signal SIGSEGV, Segmentation fault.

upgrade bluez froom 5.45 to 5.48


 CTRLM  :FATAL : ctrlm_main: failed to load version

version.txt missing params,

JENKINS_JOB
JENKINS_BUILD_NUMBER


Qtbase bringup for controlMgr

https://gerrit.teamccp.com/plugins/gitiles/rdk/yocto_oe/layers/meta-qt5/+/stable2/recipes-qt/qt5/qtbase-5.1.1

List of patches included in the comcast meta-qt5.

Patches
0001-Add-linux-oe-g-platform.patch
0001-Backport-QDbus_Fix_of_Losing_Valid_DBus_Obj_After_UnregisterObject.patch
0001-Backport-QObject-Not-to-Destroy-SlotObject-inside-lock.patch
0001-backport-QAtomic-feature-enhacement.patch
0001-backport-QCommandLineParser-feature-addon.patch
0001-backport-QLoggingCategory-enhacement.patch
0001-backport-QLoggingCategory-feature-addon.patch
0001-backport-QVersionNumber-feature-from_addon.patch
0001-backport-qjsonvalue-toInt-function.patch
0001-fix_cmake_path_for_mkspec.patch
0002-qlibraryinfo-allow-to-set-qt.conf-from-the-outside-u.patch
0003-Add-external-hostbindir-option.patch
0004-qt_functions-temporary-remove-isEmpty-check.patch
0005-qmake-is-already-built-in-qtbase-native.patch
0006-Allow-building-a-separate-qmake-for-the-target.patch
0007-configureapp-Prefix-default-LIBDIRS-and-INCDIRS-with.patch
0008-qt_module-Fix-pkgconfig-replacement.patch
0009-qt_module-Fix-paths-in-.prl-files.patch
0010-wayland-scanner-disable-silent-rules.patch
0011-configure-don-t-export-SYSTEM_VARIABLES-to-.qmake.va.patch
0012-configure.prf-Allow-to-add-extra-arguments-to-make.patch
0013-Disable-mkv8snapshot.patch
0014-enables-tslib-device-to-be-read-from-env-variable.patch
0015-qtbase-allow-build-of-examples.patch
0018-QOpenGLPaintDevice-sub-area-support.patch
0020-Use-BGRA-extension-in-bindTexture.patch
0021-configure-make-pulseaudio-a-configurable-option.patch
0022-configure-make-alsa-a-configurable-option.patch
0023-configure-make-freetype-a-configurable-option.patch
0024-Use-OE_QMAKE_PATH_EXTERNAL_HOST_BINS-to-determine-pa.patch
0025-force-setting-of-MODULE_SYNCQT_DIR-correctly.patch
disable-printsupport.patch
qgetenv.patch
qt-5.1.1_qeglfs.patch


Some of the build errors and its root cause is described in the below table. We will keep updating the table as we encounter more errors. (Before opensourcing)


recipelayererror/warningroot causeaction
ctrlm-main.bbmeta-rdk-videoERROR: Nothing PROVIDES 'rdkversion'missing rdkversion recipeAdd rdkversion.bb file in meta-cmf-raspberrypi
xr-speech-router_1.0.bbmeta-rdk-voice-sdkERROR: Nothing PROVIDES 'xr-sm-engine'BBMASK was added for 'xr-sm-engine'

Comment

BBMASK .= "|meta-rdk-video/recipes-extended/xr-sm-engine/"

rdkx-logger_1.0.bbmeta-rdk-voice-sdk

ERROR: rdkx-logger-1.0-gitAUTOINC+777c7f9a2f-r0 do_compile: oe_runmake failed


EXTRA_OECONF_append = " --enable-rdkv "

add above line in bbappend file in meta-cmf-raspberrypi

ctrlm-main.bbmeta-rdk-videoERROR: Failed to parse recipe: /mnt/home/mbaska691/vijith/mngr/meta-rdk-video/recipes-extended/ctrlm/ctrlm-main.bb

RDK_CPC_ROOT_GIT ?= "git://${RDK_GIT}/rdk/components/cpc

add in meta-cmf-raspberrypi conf/layer.conf file.

xraudio_1.0.bbmeta-rdk-voice-sdk

ERROR: xraudio-1.0-gitAUTOINC+ac4106d2ff-r0 do_compile: oe_runmake failed

| ../../git/src/xraudio.c: In function 'xraudio_thread_poll':

| ../../git/src/xraudio.c:2346:8: error: #error Need to add thread poll for resource management thread.



Add xraudio_1.0.bbappend file in meta-cmf-raspberrypi from mmeta-rdk-comcast-video layer
xr-speech-router_1.0.bbmeta-rdk-voice-sdk

| ERROR: oe_runmake failed

| ../../git/src/xrsr_protocol_ws.c: In function 'xrsr_ws_connect_new':

| ../../git/src/xrsr_protocol_ws.c:408:25: error: implicit declaration of function 'nopoll_conn_new_opts6' [-Werror=implicit-function-declaration]

missing nopoll_0.3.2.b232.bbappend file.Add nopoll_0.3.2.b232.bbappend present in meta-rdk-comcast-voice-sdkiin meta-cmf-raspberrypi
ctrlm-main.bbmeta-rdk-video

ERROR: ctrlm-main-1.0-r0 do_compile: oe_runmake failed

| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ctrlm_main.cpp:1898: error: undefined reference to 'ctrlm_vendor_network_factory(unsigned long, json_t*, std::map<unsigned char, ctrlm_obj_network_t*, std::less<unsigned char>, std::allocator<std::pair<unsigned char const, ctrlm_obj_network_t*> > >&)'


Add ctrlm recipes present in meta-rdk-comcast-video to meta-cmf-raspberrypi
ctrlm-main.bbmeta-rdk-video

ERROR: ctrlm-main-1.0-r0 do_compile: oe_runmake failed

| ../../git/src/ctrlm_main.cpp:63:52: fatal error: client/linux/handler/exception_handler.h: No such file or directory

|  #include "client/linux/handler/exception_handler.h"



Comment breakpad from ctrlm-main.bbappend

# Enable breakpad

#EXTRA_OECONF_append = " --enable-breakpad"


ctrlm-main.bbmeta-rdk-video

ERROR: ctrlm-main-1.0-r0 do_compile: oe_runmake failed

| ../../git/src/ctrlm_main.cpp: At global scope:
| ../../git/src/ctrlm_main.cpp:931:17: error: 'gboolean ctrlm_authservice_expired(gpointer)' defined but not used [-Werror=unused-function]
|  static gboolean ctrlm_authservice_expired(gpointer user_data) {
|                  ^~~~~~~~~~~~~~~~~~~~~~~~~
| cc1plus: all warnings being treated as errors


Temporary fix

AUTH ?= "false"

in ctrlm-main.bbappend file.

ctrlm-main.bbappendmeta-cmf-raspberrypi

DISTRO_FEATURES_append = " ctrlm_irdb_uei"

Added append resulted in error.

ERROR: ParseError at /mnt/home/mbaska691/vijith/mngr/meta-cmf-raspberrypi/recipes-extended/ctrlm/ctrlm-main.bbappend:4: Could not inherit file classes/ctrlm-irdb-uei.bbclass

missing ctrlm-irdb-uei.bbclass file.Add bbclass file from meta-rdk-comcast-video
ctrlm-irdb-uei.bbmeta-cmf-raspberrypiERROR: ctrlm-irdb-uei-1.0-r0 do_fetch: Function failed: base_do_fetch

missing configuration for package download.

which should be present in ctrlm-irdb-uei.bbappend file

Temporary Solution:

Added the corresponding bbappend file. 

meta-arrisxi6wv/recipes-extended/ctrlm/ctrlm-irdb-uei.bbappend

packagegroup-rdk-qt5.bb meta-rdkNothing RPROVIDES 'qtremoteobjects' 

Added

DISTRO_FEATURES_append = " comcast_qt5"

in meta-cmf-raspberrypi/conf/machine/raspberrypi-rdk-hybrid.conf

ctrlm-main.bbmeta-rdk-video

ERROR: ctrlm-main-1.0-r0 do_compile: oe_runmake failed

| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1709: error: undefined reference to 'libevdev_new_from_fd'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1714: error: undefined reference to 'libevdev_get_uniq'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1720: error: undefined reference to 'libevdev_free'
| /usr/src/debug/ctrlm-main/1.0-r0/git/src/ble/ctrlm_hal_ble.cpp:1729: error: undefined reference to 'libevdev_free'


Added

LDFLAGS_append = "${@bb.utils.contains('DISTRO_FEATURES', 'build_for_sky', ' -levdev', ' ', d)}"

in meta-cmf-raspberrypi/recipes-extended/ctrlm/ctrlm-main.bbappend


asbluetoothrcu.bbmeta-cmf-raspberrypi| CMake Error at CMakeLists.txt:24 (cmake_minimum_required):
|   CMake 3.10.3 or higher is required.  You are running version 3.8.2

added cmake_3.10.3.bb and related recipes to openembedded-core/meta/recipes-devtools/cmake/


msgpack-c_2.1.1.bbmeta-rdk-ext

ERROR: msgpack-c-2.1.1+gitAUTOINC+20ef1f925b-r0 do_compile

| /mnt/home/mbaska691/vijith/mngr/build-raspberrypi-rdk-hybrid/tmp/work/cortexa7t2hf-neon-vfpv4-rdk-linux-gnueabi/msgpack-c/2.1.1+gitAUTOINC+20ef1f925b-r0/git/test/carray.cpp:2:25: fatal error: gtest/gtest.h: No such file or directory
|  #include <gtest/gtest.h>
|                          ^
| compilation terminated.


Add


DEPENDS ="gtest" 

in meta-rdk-ext/recipes-support/msgpack/msgpack-c_2.1.1.bb


Image Validation

login as: root
root@raspberrypi-rdk-hybrid:~# systemctl start ctrlm-main
Job for ctrlm-main.service failed because the control process exited with error code.
See "systemctl status ctrlm-main.service" and "journalctl -xe" for details.
root@raspberrypi-rdk-hybrid:~# systemctl status ctrlm-main.service
● ctrlm-main.service - Control Manager Main Service
Loaded: loaded (/lib/systemd/system/ctrlm-main.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Fri 2021-05-21 15:55:10 UTC; 3s ago
Process: 7870 ExecStart=/usr/bin/controlMgr (code=exited, status=255)
Main PID: 7870 (code=exited, status=255)
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]: 20210521 15:55:10:754 XLOG xlog_init_int : module <XRTA> level <XLOG_LEVEL_INFO>
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]: 20210521 15:55:10:754 XLOG xlog_init_int : module <CTRLM> level <XLOG_LEVEL_INFO>
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]: 20210521 15:55:10:754 CTRLM : ctrlm_main: load version
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]: 20210521 15:55:10:754 CTRLM : ctrlm_load_version: STB Name <rdk-generic-hybrid-wpe-image> Image Type <DEV> Version <4.05.21.21> Branch <rdk-next> Build Time <"2021-05-21 12:14:42">
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]: 20210521 15:55:10:755 CTRLM :FATAL : ctrlm_main: failed to load version
May 21 15:55:10 raspberrypi-rdk-hybrid systemd[1]: ctrlm-main.service: Main process exited, code=exited, status=255/n/a
May 21 15:55:10 raspberrypi-rdk-hybrid controlMgr[7870]:
May 21 15:55:10 raspberrypi-rdk-hybrid systemd[1]: Failed to start Control Manager Main Service.
May 21 15:55:10 raspberrypi-rdk-hybrid systemd[1]: ctrlm-main.service: Unit entered failed state.
May 21 15:55:10 raspberrypi-rdk-hybrid systemd[1]: ctrlm-main.service: Failed with result 'exit-code'.
root@raspberrypi-rdk-hybrid:~#

Issue Observed

ISSUERemark
CTRLM :FATAL : ctrlm_main: failed to load version

Ticket in progress,

DELIA-49822

List of Components (morty , before opensourcing)

Component nameRecipe namePath
ctrlm

ctrlm-device-update.bb

ctrlm-irdb-ruwido.bb

ctrlm-irdb-uei.bb

ctrlm-main.bbappend

meta-rdk-comcast-video/recipes-extended/ctrlm
nopollnopoll_0.3.2.b232.bbappendmeta-rdk-comcast-voice-sdk/recipes-common/nopoll
rdkversionrdkversion_1.0.bbmeta-rdk-comcast/recipes-common/rdkversion
rdkx_loggerrdkx-logger_1.0.bbappendmeta-rdk-comcast-video/recipes-extended/rdkx_logger
xraudioxraudio_1.0.bbappendmeta-rdk-comcast-video/recipes-extended/xraudio
  • No labels