2. Download Packages

Different repositories exist for different AGL releases. You need to download and install the packages based on your version of AGL.

Set the REVISION Environment Variable

All the packages reside in repositories managed by the OpenSUSE Build Service (OBS). You can see the packages here.

Currently, support exists for the following AGL releases:

  • ElectricEel
  • FunkyFlounder
  • GrumpyGuppy
  • Master

You need to set the REVISION environment variable to the AGL release you are using. For this example, set and export REVISION as “Funky Flounder”.

$ export REVISION=FunkyFlounder

For additional details about OBS, see LinuxAutomotive page on OBS.

Make Sure Your DISTRO Environment Variable is Set

The DISTRO environment variable needs to be correctly set for your Linux distribution. See the “Verify Your Build Host” section for information on how to set this variable.

Install the Repository

Hit:1 https://deb.nodesource.com/node_10.x xenial InRelease
Hit:2 https://download.docker.com/linux/ubuntu xenial InRelease
Hit:3 http://security.ubuntu.com/ubuntu xenial-security InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu xenial InRelease
Ign:5 http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_FunkyFlounder/xUbuntu_16.04 ./ InRelease
Hit:6 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:7 http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_FunkyFlounder/xUbuntu_16.04 ./ Release
Hit:8 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease
Reading package lists... Done

Not sure why you get the Ign on line 5. I guess InRelease does not exist.

If you don’t have a /etc/apt/sources.list.d/AGL.list file to even start with, and you run through the whole thing, you get the following output:

$ sudo apt-get update
Hit:1 https://deb.nodesource.com/node_10.x xenial InRelease
Hit:2 https://download.docker.com/linux/ubuntu xenial InRelease
Hit:3 http://us.archive.ubuntu.com/ubuntu xenial InRelease
Get:4 http://us.archive.ubuntu.com/ubuntu xenial-updates InRelease [109 kB]
Get:5 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB]
Ign:6 http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_FunkyFlounder/xUbuntu_16.04 ./ InRelease
Hit:7 http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_FunkyFlounder/xUbuntu_16.04 ./ Release
Get:9 http://us.archive.ubuntu.com/ubuntu xenial-backports InRelease [107 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [902 kB]
Fetched 1,225 kB in 1s (803 kB/s)
Reading package lists... Done

Following are example commands that show how to install the package repository based on various values of DISTRO and REVISION:

Ubuntu and “FunkyFlounder”

export REVISION=FunkyFlounder
export DISTRO="xUbuntu_18.04"
wget -O - http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_${REVISION}/${DISTRO}/Release.key | sudo apt-key add -
sudo bash -c "cat >> /etc/apt/sources.list.d/AGL.list <<EOF
#AGL
deb http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_${REVISION}/${DISTRO}/ ./
EOF"
sudo apt-get update

You can see the installed repository using the following command:

cat /etc/apt/sources.list.d/AGL.list

OpenSUSE and “FunkyFlounder”

export DISTRO="OpenSUSE_lEAP_42.3"
export REVISION=FunkyFlounder
source /etc/os-release; export DISTRO=$(echo $PRETTY_NAME | sed "s/ /_/g")
sudo zypper ar http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_${REVISION}/${DISTRO}/isv:LinuxAutomotive:AGL_${REVISION}.repo
sudo zypper --gpg-auto-import-keys ref

You can see the installed repository using the following command:

zypper repos | grep AGL

Fedora and “FunkyFlounder”

export DISTRO="Fedora_28"
export REVISION=FunkyFlounder
source /etc/os-release ; export DISTRO="${NAME}_${VERSION_ID}"
sudo wget -O /etc/yum.repos.d/isv:LinuxAutomotive:AGL_${REVISION}.repo http://download.opensuse.org/repositories/isv:/LinuxAutomotive:/AGL_${REVISION}/${DISTRO}/isv:LinuxAutomotive:AGL_${REVISION}.repo

You can see the installed repository using the following command:

dnf repolist --all | grep AGL

Switching Between Repositories

The commands in the previous section showed you how to install the packages from a specific repository and how to verify whether or not the packages are enabled or disabled. You can switch between different repositories. You must disable your current AGL repository and then enable the repository designated for the switch.

Following is an example for Debian distributions:

Example for Debian distro

Suppose you are on “master” and you want the “ElectricEel” AGL revision.

export OLDR=Master
export NEWR=ElectricEel
sudo sed -i "s/${OLDR}/${NEWR}/g" /etc/apt/sources.list.d/AGL.list
sudo apt-get update

Example for openSuse distro

#  | Alias                               | Name                                                                                      | Enabled | GPG Check | Refresh
---+-------------------------------------+-------------------------------------------------------------------------------------------+---------+-----------+--------
 1 | Atom                                | Atom Editor                                                                               | Yes     | (r ) Yes  | No
 2 | code                                | Visual Studio Code                                                                        | Yes     | (r ) Yes  | No
 3 | http-ftp.uni-erlangen.de-e3cebb6d   | Packman Repository                                                                        | Yes     | (r ) Yes  | Yes
 4 | isv_LinuxAutomotive_AGL_ElectricEel | isv:LinuxAutomotive:AGL_ElectricEel (openSUSE_Leap_15.0)                                  | Yes     | (r ) Yes  | No
 5 | isv_LinuxAutomotive_AGL_Master      | Automotive Grade Linux Application Development tools - master branch (openSUSE_Leap_15.0) | No      | ----      | ----
 6 | openSUSE-Leap-15.0-1                | openSUSE-Leap-15.0-1                                                                      | No      | ----      | ----
 7 | repo-debug                          | openSUSE-Leap-15.0-Debug                                                                  | No      | ----      | ----
 8 | repo-debug-non-oss                  | openSUSE-Leap-15.0-Debug-Non-Oss                                                          | No      | ----      | ----
 9 | repo-debug-update                   | openSUSE-Leap-15.0-Update-Debug                                                           | No      | ----      | ----
10 | repo-debug-update-non-oss           | openSUSE-Leap-15.0-Update-Debug-Non-Oss                                                   | No      | ----      | ----
11 | repo-non-oss                        | openSUSE-Leap-15.0-Non-Oss                                                                | Yes     | (r ) Yes  | Yes
12 | repo-oss                            | openSUSE-Leap-15.0-Oss                                                                    | Yes     | (r ) Yes  | Yes
13 | repo-source                         | openSUSE-Leap-15.0-Source                                                                 | No      | ----      | ----
14 | repo-source-non-oss                 | openSUSE-Leap-15.0-Source-Non-Oss                                                         | No      | ----      | ----
15 | repo-update                         | openSUSE-Leap-15.0-Update                                                                 | Yes     | (r ) Yes  | Yes
16 | repo-update-non-oss                 | openSUSE-Leap-15.0-Update-Non-Oss                                                         | Yes     | (r ) Yes  | Yes

Now, you want your “master” repository enabled. In the above output, the “ElectricEel” repository is at the fourth line and the “master” repository is at the fifth line. Thus, enter the following:

$ sudo zypper mr -d 4 && sudo zypper mr -e 5
Repository 'isv_LinuxAutomotive_AGL_ElectricEel' has been successfully disabled.
Repository 'isv_LinuxAutomotive_AGL_Master' has been successfully enabled.
sudo zypper refresh

NOTE: In the previous command, the “-d” option is used for “disable” and the “-e” option is used for “enable”.

Following are the results:

#  | Alias                               | Name                                                                                      | Enabled | GPG Check | Refresh
---+-------------------------------------+-------------------------------------------------------------------------------------------+---------+-----------+--------
 1 | Atom                                | Atom Editor                                                                               | Yes     | (r ) Yes  | No
 2 | code                                | Visual Studio Code                                                                        | Yes     | (r ) Yes  | No
 3 | http-ftp.uni-erlangen.de-e3cebb6d   | Packman Repository                                                                        | Yes     | (r ) Yes  | Yes
 4 | isv_LinuxAutomotive_AGL_ElectricEel | isv:LinuxAutomotive:AGL_ElectricEel (openSUSE_Leap_15.0)                                  | No      | ----      | ----
 5 | isv_LinuxAutomotive_AGL_Master      | Automotive Grade Linux Application Development tools - master branch (openSUSE_Leap_15.0) | Yes     | (r ) Yes  | No
 6 | openSUSE-Leap-15.0-1                | openSUSE-Leap-15.0-1                                                                      | No      | ----      | ----
 7 | repo-debug                          | openSUSE-Leap-15.0-Debug                                                                  | No      | ----      | ----
 8 | repo-debug-non-oss                  | openSUSE-Leap-15.0-Debug-Non-Oss                                                          | No      | ----      | ----
 9 | repo-debug-update                   | openSUSE-Leap-15.0-Update-Debug                                                           | No      | ----      | ----
10 | repo-debug-update-non-oss           | openSUSE-Leap-15.0-Update-Debug-Non-Oss                                                   | No      | ----      | ----
11 | repo-non-oss                        | openSUSE-Leap-15.0-Non-Oss                                                                | Yes     | (r ) Yes  | Yes
12 | repo-oss                            | openSUSE-Leap-15.0-Oss                                                                    | Yes     | (r ) Yes  | Yes
13 | repo-source                         | openSUSE-Leap-15.0-Source                                                                 | No      | ----      | ----
14 | repo-source-non-oss                 | openSUSE-Leap-15.0-Source-Non-Oss                                                         | No      | ----      | ----
15 | repo-update                         | openSUSE-Leap-15.0-Update                                                                 | Yes     | (r ) Yes  | Yes
16 | repo-update-non-oss                 | openSUSE-Leap-15.0-Update-Non-Oss                                                         | Yes     | (r ) Yes  | Yes

Example for Fedora distro

isv_LinuxAutomotive_AGL_FunkyFlounder       isv:LinuxAutomotive:AGL disabled
isv_LinuxAutomotive_AGL_Master            Automotive Grade Linux  enabled

The following commands enable the “ElectricEel” repository:

dnf config-manager --set-disabled isv_LinuxAutomotive_AGL_Master
dnf config-manager --set-enabled isv_LinuxAutomotive_AGL_FunkyFlounder
$ dnf repolist --all | grep AGL
isv_LinuxAutomotive_AGL_FunkyFlounder       isv:LinuxAutomotive:AGL enabled
isv_LinuxAutomotive_AGL_Master            Automotive Grade Linux  disabled