#!/bin/bash # SPDX-License-Identifier: LGPL-2.1-or-later set -e # By default Suggests are not installed (and often Recommends are disabled too), which means we will miss # the dlopen optional dependencies, but the tests need them, so parse them from the package metadata and # install them. This is not an issue when building locally, as the build and runtime images are the same, # so they would get installed as build dependencies anyway. if [ "$1" = "build" ] || ! ((NO_BUILD)); then exit 0 fi # Query the Recommends and Suggests of all systemd packages, by matching on the version systemd_version="$(dpkg-query --showformat '${Version}' --show systemd)" mapfile -t systemd_packages < <( dpkg --list | grep '^ii' | grep "$systemd_version" | awk '{print $2}' | tr '\n' ' ' ) extra_packages=() # shellcheck disable=SC2068 for package in ${systemd_packages[@]}; do # We are looking for dlopens, so filter for libraries mapfile -t -O "${#extra_packages[@]}" extra_packages < <(dpkg-query --showformat '${Suggests}' --show "$package" | sed -e "s/, /\n/g" -e "s/|.*//" | grep "lib") mapfile -t -O "${#extra_packages[@]}" extra_packages < <(dpkg-query --showformat '${Recommends}' --show "$package" | sed -e "s/, /\n/g" -e "s/|.*//" | grep "lib") done if [ "${#extra_packages[@]}" -eq 0 ]; then exit 0 fi apt install "${extra_packages[@]}"