+
+ if [ "$ci_host/$ci_variant/$ci_suite" = "native/production/buster" ]; then
+ packages=(
+ "${packages[@]}"
+ qttools5-dev-tools
+ qt5-default
+ )
+ fi
+
+ packages=(
+ "${packages[@]}"
+ adduser
+ autoconf-archive
+ automake
+ autotools-dev
+ ccache
+ cmake
+ debhelper
+ dh-autoreconf
+ dh-exec
+ docbook-xml
+ docbook-xsl
+ doxygen
+ dpkg-dev
+ g++
+ gcc
+ gnome-desktop-testing
+ libapparmor-dev
+ libaudit-dev
+ libcap-ng-dev
+ libexpat-dev
+ libglib2.0-dev
+ libselinux1-dev
+ libsystemd-dev
+ libx11-dev
+ python
+ python-dbus
+ python-gi
+ sudo
+ valgrind
+ wget
+ xauth
+ xmlto
+ xsltproc
+ xvfb
+ )
+
+ case "$ci_suite" in
+ (stretch)
+ # Debian 9 'stretch' didn't have the ducktype package
+ ;;
+
+ (*)
+ # assume Ubuntu 18.04 'bionic', Debian 10 'buster' or newer
+ packages=(
+ "${packages[@]}"
+ ducktype yelp-tools
+ )
+ ;;
+ esac
+
+ $sudo apt-get -qq -y --no-install-recommends install "${packages[@]}"
+
+ if [ "$ci_in_docker" = yes ]; then
+ # Add the user that we will use to do the build inside the
+ # Docker container, and let them use sudo
+ adduser --disabled-password --gecos "" user
+ echo "user ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopasswd
+ chmod 0440 /etc/sudoers.d/nopasswd
+ fi
+
+ # manual package setup
+ case "$ci_suite" in
+ (jessie|xenial)
+ # autoconf-archive in Debian 8 and Ubuntu 16.04 is too old,
+ # use the one from Debian 9 instead
+ wget http://deb.debian.org/debian/pool/main/a/autoconf-archive/autoconf-archive_20160916-1_all.deb
+ $sudo dpkg -i autoconf-archive_*_all.deb
+ rm autoconf-archive_*_all.deb
+ ;;
+ esac
+