ci: Add pkgconf wrapper in install-common-dependencies

The script is used to install dependencies that are needed both
for the CI image and the gnome os system extension.

To avoid installing dependencies in an environment where they are
already satisfied, they should be guarded by an appropriate check,
most commonly pkgconf.

Right now these checks are straight-forward:
 - if a dependency is not in the base image, it will
   be built when building the CI image
 - if a dependency is not in GNOME OS, it will be
   built when building the GNOME OS system extension

However we will soon add another caller of the script, when
allowing to export a system extension from our development
toolboxes to the host.

That case is trickier, as the dependency *is* satisfied by
the build environment (because it is based on the CI image),
but it will still be needed by the exported system extension.

To account for that case, add a pkgconf wrapper that only searches
in PKG_CONFIG_DIRS in the specified destdirs.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4075>
This commit is contained in:
Florian Müllner 2024-10-08 21:49:20 +02:00 committed by Marge Bot
parent 0f8ba949ab
commit 0b3e85bf40

View File

@ -18,6 +18,23 @@ usage() {
EOF
}
pkgconf() {
local PKG_CONFIG_DIRS=(
/usr/lib64/pkgconfig
/usr/lib/pkgconfig
/usr/share/pkgconfig
)
local search_dirs=()
for destdir in "${DESTDIRS[@]}"; do
search_dirs+=( "${PKG_CONFIG_DIRS[@]/#/$destdir}" )
done
ENV=(PKG_CONFIG_PATH=$(echo "${search_dirs[@]}" | tr ' ' :))
env "${ENV[@]}" pkgconf --env-only "$@"
}
TEMP=$(getopt \
--name=$(basename $0) \
--options='h' \
@ -30,6 +47,7 @@ eval set -- "$TEMP"
unset TEMP
OPTIONS=()
DESTDIRS=()
while true; do
case "$1" in
@ -39,7 +57,7 @@ while true; do
;;
--destdir)
OPTIONS+=( --destdir=$2 )
DESTDIRS+=( $2 )
shift 2
;;
@ -55,6 +73,9 @@ while true; do
esac
done
[[ ${#DESTDIRS[@]} == 0 ]] && DESTDIRS+=( / )
OPTIONS+=( "${DESTDIRS[@]/#/--destdir=}" )
SCRIPTS_DIR="$(dirname $0)"
## Add necessary dependencies here, for example