Skip to end of metadata
Go to start of metadata



Copyright 2016 RDK Management, LLC. All rights reserved. The contents of this document are RDK Management, LLC Proprietary and Confidential and may not be distributed or otherwise disclosed without prior written permission of RDK Management, LLC.

Host Setup

The OpenEmbedded build system should be able to run on any modern distribution with the following versions for Git, tar, and Python.

  • Git 1.8.3.1 or greater.

  • tar 1.24 or greater.

  • Python 2.7.3 or greater excluding Python 3.x, which is not supported

Below is the host environment details

  • Operating System: Ubuntu 14.04.6 LTS
  • Kernel: Linux 3.13.0-170-generic
  • Architecture: x86_64

Note: You should also have about 50 Gbytes of free disk space for building images.

Ubuntu and Debian

The essential packages you need for a supported Ubuntu or Debian distribution are shown in the following command

$ sudo apt-get install make gcc g++ diffstat texinfo chrpath gcc-multilib git gawk build-essential autoconf libtool libncurses-dev gettext gperf lib32z1 libc6-i386 g++-multilib python-git

Repo setup

In order to use Yocto build system, the repo tool must be properly installed on the machine.  Make sure you have a /bin directory in your home directory and that it is included in your path

$ mkdir ~/bin

$ PATH=~/bin:$PATH

Download the repo tool and ensure that it is executable

$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

$ chmod a+x ~/bin/repo


Note: it is also recommended to put credentials in .netrc when interacting with repo.

A sample .netrc file is illustrated below

machine code.rdkcentral.com

login YOUR_USERNAME

password YOUR_PASSWORD


Build Setup

All RPi based RDK images with latest features are from rdk-next branch

Initializing the Build Environment

To build the image, follow the below instructions

$ mkdir <workspace dir>

$ cd <workspace dir>

$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-next -m rdkv-extsrc.xml

for ASP:

$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-next -m rdkv-asp-extsrc.xml

$ repo sync -j`nproc` --no-clone-bundle

Hybrid

Choose hybrid machine configuration to build the image with default compositor

$ MACHINE=raspberrypi-rdk-hybrid source meta-cmf-raspberrypi/setup-environment

$ bitbake rdk-generic-hybrid-wpe-image

for Mediaclient image with TDK

$ bitbake rdk-generic-hybrid-wpe-tdk-image


Choose the hybrid westeros machine configuration to build the image with westeros compositor

$ MACHINE=raspberrypi-rdk-hybrid-westeros source meta-cmf-raspberrypi/setup-environment

$ bitbake rdk-generic-hybrid-westeros-wpe-image

for Hybrid image with TDK

$ bitbake rdk-generic-hybrid-wpe-tdk-image


Link to check possible RDK images on RPi - https://code.rdkcentral.com/r/plugins/gitiles/components/generic/rdk-oe/meta-cmf-raspberrypi/+/refs/heads/rdk-next/recipes-core/images/

Development Branch

#To build the image from the development branch, the respective sprint month's development branch to be chosen and follow the below build procedure

$ mkdir <workspace dir>

$ cd <workspace dir>

For example to take development branch of September 2020, the rdk-dev-2009 branch to be used

for Non-ASP:
$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-dev-2009 -m rdkv-extsrc.xml

for ASP:

$ repo init -u https://code.rdkcentral.com/r/manifests -b rdk-dev-2009 -m rdkv-asp-extsrc.xml

$ repo sync -j `nproc` --no-clone-bundle


Note: The Kernel image and root filesystem will be created under ./ build-raspberrypi-rdkmc/tmp/deploy/images/raspberrypi-rdk-mc folder



  • No labels

1 Comment

  1. Hi Immaneni Kanthikiran , Gayathri ,


    I have been following your guideline  as below:

    $ repo init -u https://code.rdkcentral.com/r/manifests -m rdkv-raspberrypi.xml -b morty
    $ repo sync -j4 --no-clone-bundle

    # Wait for the repo has been syned. During the source pull, I have seen some errors - and I thought it was some connection errors, so I tried the repo sync command several times.


    $ source meta-cmf-raspberrypi/setup-environment

           → Select the raspberrypi-rdk-mc-westeros.conf option.


    build-raspberrypi-rdk-mc-westeros$ bitbake rdk-generic-mediaclient-westeros-wpe-image


    The build could run a litte bit, but I always get below errors:

    /usr/include/bits/floatn.h:75:1: error: unknown machine mode '__TC__'
    | /usr/include/bits/floatn.h:87:9: error: unknown type name '__float128'

    I have searched out from Google but not find the proper solution yet.


    Some snipped log from my procedure:

    // Bitbake log:

    Build Configuration:
    BB_VERSION = "1.32.0"
    BUILD_SYS = "x86_64-linux"
    NATIVELSBSTRING = "Ubuntu-18.04"
    TARGET_SYS = "arm-rdk-linux-gnueabi"
    MACHINE = "raspberrypi-rdk-mc-westeros"
    DISTRO = "rdk"
    DISTRO_VERSION = "2.0"
    TUNE_FEATURES = "arm armv7ve vfp thumb neon vfpv4 callconvention-hard cortexa7"
    TARGET_FPU = "hard"
    meta-metrological = "HEAD:c8a66ff9e2d6c480d0f2f17408cea1d7cadc4885"
    meta-raspberrypi = "HEAD:8db3240ba2b06f4f3e850d63a51b66f45f5e962a"
    meta-cmf = "HEAD:cda1cd07449ab9a7d76ced05820ce9806f82153b"
    meta-cmf-video-restricted = "HEAD:b5a4af851f77dbbc711ac3de6fcc244a7c7078a1"
    meta-cmf-video = "HEAD:d633e4eec7a3da16676f5be5c6cc0a2efdd6b8d6"
    meta-cmf-restricted = "HEAD:d8866fa1c8b0a295b477bb528e55b7afecd198ea"
    meta-cmf-qt5 = "HEAD:afd0f92998835a9fd9be8f97a4c3da5d05165d8f"
    meta-cmf-raspberrypi = "HEAD:e4552b0e9ea8cb4a710f14b0681f586fa46d3425"
    meta-rtlwifi = "HEAD:9af3c5e5a36ce366bb124da73c7ffd03c5acafe8"
    meta-rdk = "HEAD:b56fb127dfb99de09a36623b72dd1e4b87e6c5c7"
    meta-qt5 = "HEAD:139dfc4c6627a8abe5b26611fc0fc23da2e1ded8"
    meta-browser = "HEAD:1569eeb9cc1b87632abbf35fbb05f4ac4eeb3987"
    meta-java = "HEAD:5f4e053d2ab8e5db5a2825715cf78736b9196ddf"
    meta-webserver
    meta-multimedia
    meta-filesystems
    meta-oe
    meta-networking = "HEAD:153f85093c660eb3fbdd36db556d25d1bba59c1c"
    meta = "HEAD:32ec41c1efa5ecc806141a1f4fea5a8587c9fe12"
    meta-virtualization = "HEAD:912b50a9f66037d124bc51231a2156467996737d"
    meta-rdk-restricted = "HEAD:153cb21ae857686ed4f2fb0d9b57854702062804"
    meta-rdk-video = "HEAD:6a7203c98f14235568968fb9ccd9107d38321381"
    meta-rdk-ext = "HEAD:b4c5d65adea37c87f4a4f19d34dedfd66f6e8dc2"
    meta-python = "HEAD:153f85093c660eb3fbdd36db556d25d1bba59c1c"

    // I am using Ubuntu 18.04 on laptop HP-ProBook-650-G1.

    // The tree view of raspberrypi.

    $ tree -L 2 meta-cmf-raspberrypi/
    meta-cmf-raspberrypi/
    ├── conf
    │   ├── distro
    │   ├── include
    │   ├── layer.conf
    │   └── machine
    ├── licenses
    │   ├── Comcast
    │   └── RDK
    ├── LICENSES.TXT
    ├── recipes-bsp
    │   └── bootfiles
    ├── recipes-ccsp
    │   ├── ccsp
    │   ├── hal
    │   └── util
    ├── recipes-common
    │   └── rfc
    ├── recipes-connectivity
    │   ├── dibbler
    │   ├── hostapd
    │   ├── lirc
    │   ├── nfs-utils
    │   ├── openssh
    │   ├── openssl
    │   └── wpa-supplicant
    ├── recipes-containers
    │   └── lxc-container-generator
    ├── recipes-core
    │   ├── busybox
    │   ├── dbus
    │   ├── dropbear
    │   ├── images
    │   ├── packagegroups
    │   └── systemd
    ├── recipes-devtools
    │   ├── binutils
    │   ├── e2fsprogs
    │   ├── gdb
    │   ├── lua
    │   └── php
    ├── recipes-extended
    │   ├── aamp
    │   ├── appmanager
    │   ├── devicesettings
    │   ├── dvrmgr
    │   ├── gst-plugins-playersinkbin
    │   ├── gst-plugins-rdk-subtec
    │   ├── gstqamtunersrc
    │   ├── hdhomerun
    │   ├── iarmmgrs
    │   ├── libaio
    │   ├── lighttpd
    │   ├── logrotate
    │   ├── mediaframework
    │   ├── mediastreamer
    │   ├── networkmgr
    │   ├── packagegroups
    │   ├── rdkapps
    │   ├── storagemanager
    │   ├── sysint
    │   ├── tdk
    │   ├── tdkb
    │   ├── websocket-ipplayer2
    │   ├── wifi-client-hal
    │   └── xupnp
    ├── recipes-gnome
    │   └── librsvg
    ├── recipes-graphics
    │   ├── pxcore-libnode
    │   ├── userland
    │   ├── westeros
    │   └── westeros-soc
    ├── recipes-kernel
    │   └── linux
    ├── recipes-multimedia
    │   └── gstreamer
    ├── recipes-oem
    │   └── mfrlibs
    ├── recipes-protocols
    │   ├── net-snmp
    │   └── quagga
    ├── recipes-qt
    │   └── servicemanager
    ├── recipes-rdkb
    │   └── sysint-broadband
    ├── recipes-support
    │   ├── dnsmasq
    │   ├── gmp
    │   ├── libpcre
    │   ├── nettle
    │   ├── network-hotplug
    │   ├── parodus
    │   └── parodus2snmp
    ├── recipes-thirdparty
    │   └── tr69
    ├── recipes-wpe
    │   ├── wpe
    │   ├── wpe-backend
    │   ├── wpe-backend-rdk
    │   ├── wpebackend-rdk
    │   ├── wpelauncher
    │   ├── wpe-launcher
    │   ├── wpeservice
    │   ├── wpewebkit
    │   └── wpe-webkit
    └── setup-environment


    Thanks and Regards,

    Tung Lam