User Tools

Site Tools


troubleshooting:app-recipes

This is an old revision of the document!


Application bitbake wrapper recipes

These are simple wrapper recipes that will inherit aglwgt and produce a .wgt package from application sources if these conditions are met:

  • The build works with the SDK workflow already
  • make package is a valid make target
  • The wgt file is written to package/<name>.wgt

Also take special care that:

  • There are no dependencies outside the wgt
  • No dependencies between wgt's
  • Nothing should itself depend on a wgt
  • wgt's need to be self-contained

Shim recipe template

$~/> cat recipes-demo-hmi/helloworld/helloworld_git.bb
SUMMARY     = "helloworld application wrapper recipe"
DESCRIPTION = "helloworld application wrapper recipe to build the app with bitbake"
HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/XYZ"
SECTION     = "apps"

LICENSE     = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"

SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/XYZ;protocol=http"
SRCREV  = "${AUTOREV}"

PV = "1.0+git${SRCPV}"
S  = "${WORKDIR}/git"

inherit aglwgt
# Add inherit statements for your build procedure
# e.g. inherit cmake
#   or inherit qmake5

# build-time dependencies
#DEPENDS += "qtquickcontrols2"
# Add your build-time dependencies
# for all libraries to make sure the link step works
# Double check these are available at run-time and
# adapt the platform's packagegroups if needed

Sample shim recipe

$~/> cat recipes-demo-hmi/mixer/mixer_git.bb
SUMMARY     = "Mixer for CES2017 AGL Demonstration"
DESCRIPTION = "AGL HMI application for control of PulseAudio mixer elements"
HOMEPAGE    = "https://gerrit.automotivelinux.org/gerrit/#/admin/projects/apps/mixer"
SECTION     = "apps"

LICENSE     = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=ae6497158920d9524cf208c09cc4c984"

SRC_URI = "git://gerrit.automotivelinux.org/gerrit/apps/mixer;protocol=http"
SRCREV  = "${AUTOREV}"

PV = "1.0+git${SRCPV}"
S  = "${WORKDIR}/git"

inherit qmake5 aglwgt

# build-time dependencies
DEPENDS += "qtquickcontrols2 pulseaudio"

These variables are not allowed for the application wrapper recipes:

  • RDEPENDS (these must come from the platform)

Example: Makefile

Example: CMakelists.txt

Example: qmake.pro

The HVAC application is built using Qt and qmake. Check this example: https://git.automotivelinux.org/apps/hvac/tree/.

Autobuild migration

A warning is issued on old wgt build:

WARNING: navigation-git-r0 do_aglwgt_package: OBSOLETE: You must have an autobuild script located in:
WARNING: navigation-git-r0 do_aglwgt_package: autobuild/agl/ from the project root source folder
WARNING: navigation-git-r0 do_aglwgt_package: with filename autobuild which should generate
WARNING: navigation-git-r0 do_aglwgt_package: a .wgt file using wgtpack in the build
WARNING: navigation-git-r0 do_aglwgt_package: root folder calling:
WARNING: navigation-git-r0 do_aglwgt_package: ./autobuild/agl/autobuild package DEST=<BUILDDIR>
WARNING: navigation-git-r0 do_aglwgt_package: Fix your package as it will not work within the SDK
WARNING: navigation-git-r0 do_aglwgt_package: See: https://wiki.automotivelinux.org/troubleshooting/app-recipes

This warning is about the migration of wgt package build from various methods to only one, the autobuild script.

This script was originally located in <ROOT-FOLDER>/conf.d/autobuild/{agl,linux}/autobuild but now it should be located directly at the project root folder <ROOT-FOLDER>/autobuild/{agl,linux}/autobuild. Yocto takes the autobuild in the agl subdirectory. So you need the script <ROOT-FOLDER>/autobuild/agl/autobuild.

An example can be found in gerrit cmake-apps-module repository and use the CMake module to build the *wgt* so you maybe have to tweak it a little bit.

troubleshooting/app-recipes.1549632633.txt.gz · Last modified: 2019/02/08 13:30 by claneys