Skip to content

This repo provides the yocto building environment & convenience classes for cross compilation and bundling of applications into Downloadable Application Container format and provides the recipes for the examples in dac-examples-src repo.

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
COPYING
Notifications You must be signed in to change notification settings

rdkcentral/meta-dac-sdk

Repository files navigation

meta-dac-sdk

One time SDK Build environment setup on HOST

# make sure that your Linux host has required packages needed for Yocto. 
# These are defined in https://docs.yoctoproject.org/3.1.33/ref-manual/ref-system-requirements.html#required-packages-for-the-build-host
# On CentOS-7 switch default gcc to 7.x from https://www.softwarecollections.org/en/scls/rhscl/devtoolset-7/
#[ -f /opt/rh/devtoolset-7/enable ] && source /opt/rh/devtoolset-7/enable

# Create build directory
mkdir build; cd build

# Install 'repo' tool from: https://android.googlesource.com/tools/repo
# following repo commands will download Yocto poky environment and other required meta-layers see manifest of https://github.com/rdkcentral/meta-dac-sdk/blob/master/manifests/dac-dunfell-manifest.xml
repo init -u https://github.com/rdkcentral/meta-dac-sdk/ -m manifests/dac-dunfell-manifest.xml
repo sync --no-clone-bundle -v -j$(getconf _NPROCESSORS_ONLN)

. ./oe-init-build-env
cp ../.repo/manifests/manifests/bblayers.conf conf/

# Need to decide whether you compile Application binaries against ARM 32bit or x86 64bit, Select one of them
# At this stage we do not support Multi CPU Arch container images yet, defaulting to ARM 32bit  
# for ARMv7
echo 'MACHINE = "raspberrypi4"' >> conf/local.conf
# for x86_64
#echo 'MACHINE = "qemux86-64"' >> conf/local.conf


# By default, gfx libraries are removed from DAC rootfs
# Also libglvnd is used to provide egl/gles/mesa
# To use mesa provider instead and not remove the gfx libraries:
#echo 'DISTRO_FEATURES_remove = "cleanup_gfx"' >> conf/local.conf
# end of [One time SDK Build environment setup on HOST] 

Building your DAC application container image

#Above steps you only need to do the first time you setup the SDK. For subsequent uses, you only need to run the following command to configure the build environment:
# cd build
# . ./oe-init-build-env

# Now you can build the "DAC application container image" of your choice. 
# Note that you need to have associated yocto image recipe defined in meta-layer and use that as <your yocto image target>
# as per example image recipes in https://github.com/rdkcentral/meta-dac-sdk/tree/master/recipes-example/images
# use bitbake <your yocto image target> to build the associated dac application container.
# below commands build dac application container examples coming with SDK
	bitbake dac-image-wayland-egl-test
bitbake dac-image-wayland-egl-test-input
bitbake dac-image-essos-sample
bitbake dac-image-essos-egl
bitbake dac-image-qt-test
bitbake dac-image-shell
bitbake dac-image-flutter-slide-puzzle
bitbake dac-image-chocolate-doom
bitbake dac-image-cobalt
bitbake dac-image-glmark2

# Or build them all at once
bitbake dac-image-wayland-egl-test dac-image-wayland-egl-test-input dac-image-essos-sample dac-image-essos-egl dac-image-qt-test dac-image-shell dac-image-flutter-slide-puzzle dac-image-glmark2

Building Cobalt DAC app

Use build target dac-image-cobalt. By default cobalt evergreen is not enabled and libcobalt will be built and linked with cobalt-launcher. To enable cobalt evergreen lite make sure cobalt_enable_evergreen_lite DISTRO_FEATURE is set. See conf/layer.conf. In that case libloader-app will be built and linked to cobalt-launcher.

However, currently this does not work on RPI target hosts: cobalt DAC app built with evergreen enabled, crashes on RPI. See comments in libcobalt_23.lts.stable.bbappend.

Building Cobalt 2024 DAC app

By default version 23 is built. Edit conf/layer.conf and uncomment this line to build version 24 instead:

DISTRO_FEATURES_append = " cobalt-24 gstreamer1_18 dunfell"

Building Netflix DAC app

Netflix DAC app needs several things in order to build:

To actually run the netflix DAC app, it also requires a correct netflix vault file on the host under /opt/netflix-binfile.bin.

Extra setup steps:

git clone "https://code.rdkcentral.com/r/apps/netflix/rdk-oe/meta-rdk-netflix"
mkdir -p build/downloads
cp ~/from_somewhere/nrd-5.3.1-27d5e9003f.tar.gz build/downloads/nrd-5.3.1-27d5e9003f.tar.gz
touch build/downloads/nrd-5.3.1-27d5e9003f.tar.gz.done
cp ~/from_somewhere/playready-sdk.zip build/downloads/
echo 'BBLAYERS += " ${TOPDIR}/../meta-rdk-netflix"' >> build/conf/bblayers.conf

Build:

bitbake dac-image-netflix

Building AmazonPrime5 DAC app

AmazonPrime DAC app needs several things in order to build:

  • AmazonPrime5 source tarball
  • meta-rdk-amazon repo

Extra setup steps:

    git clone "https://code.rdkcentral.com/r/apps/amazon/rdk-oe/meta-rdk-amazon"
    mkdir -p build/downloads
    cp ~/from_somewhere/avpk-v5.tgz build/downloads/avpk-v5.tgz
    touch build/downloads/avpk-v5.tgz.done
    echo 'BBLAYERS += " ${TOPDIR}/../meta-rdk-amazon"' >> build/conf/bblayers.conf
    sed -i '/BBMASK.*amazon-prime-src_5.0.bb/d' meta-rdk-amazon/conf/layer.conf

Build:

    bitbake dac-image-amazonprime5

Generating DAC bundles

Optionally, you can enable DAC bundle generation for a specific target platform. It will use BundleGen, skopeo and umoci to do this. More info on BundleGen can be found here: https://github.com/rdkcentral/BundleGen . These tools don't need to be installed separately. They are built within the Yocto environment.

You can enable bundle generation by adding BUNDLE_GENERATE = "1" to conf/local.conf. By default it will generate a tarball bundle for RPI3 reference image. The bundles are output in the ./bundles/ directory together with a test script to easily upload and run it on the target.

Other options are these:

  • BUNDLE_PLATFORM: use a different target platform. Defaults to "rpi3_reference_vc4_dunfell"
  • BUNDLE_OPTIONS: extra commandline options for BundleGen. Defaults to "-m normal --createmountpoints"
  • BUNDLE_TEMPLATE_PATH: path where to find the template files for your target. You could set it to "${TOPDIR}/templates" and put your templates in there. Example templates: https://github.com/rdkcentral/BundleGen/tree/master/templates

About

This repo provides the yocto building environment & convenience classes for cross compilation and bundling of applications into Downloadable Application Container format and provides the recipes for the examples in dac-examples-src repo.

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published