Part of the downloaded AGL software is a setup script that you must run to initialize the build environment.

aglsetup.sh Script

You can find this script here:

$AGL_TOP/lamprey/meta-agl/scripts/aglsetup.sh

The script accepts many options that allow you to define build parameters such as the target hardware (i.e. the machine), build directory, and so forth. Use the following commands to see the available options and script syntax:

$ cd $AGL_TOP/lamprey
$ source meta-agl/scripts/aglsetup.sh -h

AGL Machines (board support)

Your target platform will be selected with the -m flag. The MACHINE can be selected from the templates in meta-agl/templates/machine/*. Note: This is also the place where you can add new boards.

Following is a list of the available machines (level of support varies!):

Available machines:
   [meta-agl]
       bbe
       beaglebone
       cubox-i
       dragonboard-410c
       dragonboard-820c
       ebisu
       h3-salvator-x
       h3ulcb
       h3ulcb-kf
       h3ulcb-nogfx
       hsdk
       imx6qdlsabreauto
       imx8mqevk
       imx8mqevk-viv
       intel-corei7-64
       j7-evm
       m3-salvator-x
       m3ulcb
       m3ulcb-kf
       m3ulcb-nogfx
       nitrogen6x
       qemuarm
       qemuarm64
       qemuriscv64
     * qemux86-64
       raspberrypi4
       virtio-aarch64

AGL Features

Before running the aglsetup.sh, you should understand what AGL features you want to include as part of your image. The script's help output lists available features and shows you the layers in which they reside.

Following is a list of the available features:

Available features:
   [meta-agl]
       agl-all-features :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire  agl-netboot )
       agl-appfw-smack
       agl-archiver
       agl-buildstats
       agl-ci
       agl-ci-change-features :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire  agl-devel  agl-package-management  agl-netboot  agl-pipewire  agl-cloudproxy  agl-buildstats  agl-ptest )
       agl-ci-change-features-nogfx :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire  agl-devel  agl-package-management  agl-netboot  agl-pipewire  agl-cloudproxy  agl-buildstats  agl-ptest )
       agl-ci-snapshot-features :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire  agl-devel  agl-package-management  agl-netboot  agl-archiver  agl-pipewire  agl-buildstats  agl-ptest )
       agl-ci-snapshot-features-nogfx :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire  agl-devel  agl-package-management  agl-netboot  agl-archiver  agl-pipewire  agl-buildstats  agl-ptest )
       agl-devel :( agl-package-management )
       agl-fossdriver
       agl-gplv2
       agl-hmi-framework
       agl-localdev
       agl-netboot
       agl-package-management
       agl-pipewire
       agl-ptest
       agl-refhw-h3
       agl-sign-wgts
       agl-sota
       agl-virt
       agl-virt-guest-xen
       agl-virt-xen :( agl-virt )
       agl-weston-remoting :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire )
       agl-weston-waltham-remoting :( agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire )
   [meta-agl-demo]
       agl-cloudproxy
       agl-cluster-demo-support :( agl-weston-remoting  agl-demo  agl-appfw-smack  agl-hmi-framework  agl-pipewire )
       agl-demo :( agl-appfw-smack  agl-hmi-framework  agl-pipewire )
       agl-demo-preload
   [meta-agl-devel]
       agl-basesystem
       agl-drm-lease
       agl-jailhouse
       agl-lxc :( agl-virt  agl-drm-lease )
       agl-voiceagent-alexa  
       agl-voiceagent-alexa-wakeword :( agl-voiceagent-alexa )

To find out exactly what a feature provides, check out the respective layer and its README.

An AGL feature is a configuration that accounts for specific settings and dependencies needed for a particular build. For example, specifying the "agl-demo" feature makes sure that the aglsetup.sh script creates configuration files needed to build the image for the AGL demo.

Following are brief descriptions of the AGL features you can specify on the aglsetup.sh command line:

This feature provides a shortcut for using the layer meta-localdev in the top-level folder for easy modifications to your own recipes.

Example

Following is an example that initializes the build environment, selects "beaglebone" for the machine, and chooses the "agl-demo" feature, which also includes the "agl-appfw-smack", "agl-devel", and "agl-hmi-framework" features:

$ source meta-agl/scripts/aglsetup.sh -m qemux86-64 -b qemux86-64 agl-demo agl-devel
aglsetup.sh: Starting
Generating configuration files:
   Build dir: /home/scottrif/workspace_agl/build
   Machine: qemux86-64
   Features: agl-appfw-smack agl-demo agl-devel
   Running /home/scottrif/workspace_agl/poky/oe-init-build-env
   Templates dir: /home/scottrif/workspace_agl/meta-agl/templates/base
   Config: /home/scottrif/workspace_agl/build/conf/bblayers.conf
   Config: /home/scottrif/workspace_agl/build/conf/local.conf
   Setup script: /home/scottrif/workspace_agl/build/conf/setup.sh
   Executing setup script ... --- beginning of setup script
 fragment /home/scottrif/workspace_agl/meta-agl/templates/base/01_setup_EULAfunc.sh
 fragment /home/scottrif/workspace_agl/meta-agl/templates/base/99_setup_EULAconf.sh
 end of setup script
OK
Generating setup file: /home/scottrif/workspace_agl/build/agl-init-build-env ... OK
aglsetup.sh: Done
 Shell environment set up for builds.
You can now run 'bitbake target'
Common targets are:
  - meta-agl:          (core system)
    agl-image-minimal
    agl-image-minimal-qa

    agl-image-ivi
    agl-image-ivi-qa
    agl-image-ivi-crosssdk

    agl-image-weston

  - meta-agl-demo:     (demo with UI)
    agl-demo-platform  (* default demo target)
    agl-demo-platform-qa
    agl-demo-platform-crosssdk
    agl-demo-platform-html5

Running the script creates the Build Directory if it does not already exist. The default Build Directory is $AGL_TOP/<release-branch-name>/build, and the nomenclature to be used throughout this doc is going to be $AGL_TOP/<release-branch-name>/<build-dir> For this example, the Build Directory is $AGL_TOP/lamprey/qemux86-64.

The script's output also indicates the machine and AGL features selected for the build.

The script creates two primary configuration files used for the build: local.conf and bblayers.conf. Both these configuration files are located in the Build Directory in the conf folder. If you were to examine these files, you would find standard Yocto Project configurations along with AGL configuration fragments, which are driven by the machine (i.e. beaglebone) and the AGL features specified as part of the script's command line.

The end result is configuration files specific for your build in the AGL development environment.

Finally, part of the aglsetup.sh script makes sure that any End User License Agreements (EULA) are considered. You can see that processing in the script's output as well.

NOTE: Use of the local.conf and bblayers.conf configuration files is fundamental in the Yocto Project build environment. Consequently, it is fundamental in the AGL build environment. You can find lots of information on configuring builds in the Yocto Project documentation set. Here are some references if you want to dig into configuration further: