AGL Uses the Repo tool for managing repositories. First you need to setup layers of AGL. You can use these commands.
$ mkdir ~/bin $ export PATH=~/bin:$PATH $ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo
To download all code from master:
$ repo init -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo $ repo sync
To download all layers on the current release branch which may be in the midst of testing or changes prior to the next stable release:
$ repo init -b chinook -u https://gerrit.automotivelinux.org/gerrit/AGL/AGL-repo $ repo sync
Repo set up information, release notes, and more for previous stable versions of AGL
Set up the development environment for the desired target hardware. AGL has created a set up script for defining the target build and desired optional features. To get a complete list of the options available run.
$ source meta-agl/scripts/aglsetup.sh -h
Once you run aglsetup.sh with your desired paramaters, you can build any target desired. Some examples follow.
Here is the list of features for AGL 2.0 that can be specified in the aglsetup.sh command line:
For newer features or to get more details on a given feature, take a look at the configuration files stored for each feature and/or each machine in meta-agl/templates and meta-agl-extra/templates.
To build the QEMU version of the AGL demo start use machine “qemux86-64” and feature “agl-demo”
$ source meta-agl/scripts/aglsetup.sh -m qemux86-64 agl-demo agl-netboot agl-appfw-smack $ bitbake agl-demo-platform
To get kernel source tree, you have to build kernel once, to do that, you can use these commands,
$ bitbake virtual/kernel
Then you can find kernel source tree at
Here is a good manual for developing kernel code http://www.yoctoproject.org/docs/current/kernel-dev/kernel-dev.html
You can choose from 2 ways to add code to AGL kernel.
Due to a known bug in the upstream of meta-rust the Yocto/OE recipe for rust-cross may fail while building RVI SOTA Client or another application written in the Rust programming language. Until the complete resolution of the issue the workaround is to disable all use of the CXX11 ABI by applying the following lines to conf/local.conf:
LD_CXXFLAGS_append = " -D_GLIBCXX_USE_CXX11_ABI=0" TARGET_CXXFLAGS_append = " -D_GLIBCXX_USE_CXX11_ABI=0" CXXFLAGS_append = " -D_GLIBCXX_USE_CXX11_ABI=0" BUILD_CXXFLAGS_remove_pn-gcc-runtime = "-D_GLIBCXX_USE_CXX11_ABI=0" TARGET_CXXFLAGS_remove_pn-gcc-runtime = "-D_GLIBCXX_USE_CXX11_ABI=0" CXXFLAGS_remove_pn-gcc-runtime = "-D_GLIBCXX_USE_CXX11_ABI=0"