36 lines
1.4 KiB
Bash
Executable File
36 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -e
|
|
|
|
if [[ "$1" == "build" ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
|
|
|
|
PATTERNS=()
|
|
|
|
# The ?reverse-depends() pattern for some weird reason lists all the packages providing systemd-sysusers
|
|
# instead of just excluding it, so we add another pattern to filter out anything that conflicts with
|
|
# any other systemd packages so we filter out both opensysusers and systemd-sysusers-standalone. We also
|
|
# exclude packages that belong to the systemd source package as we'll install these later. Finally, we
|
|
# exclude virtual packages as trying to install these makes apt fail with an error saying we need to install
|
|
# a specific implementation even if one is already installed.
|
|
COMMON="?not(?virtual), ?not(?reverse-conflicts(?source-package(^systemd$))), ?not(?reverse-breaks(?source-package(^systemd$))), ?not(?source-package(^systemd$))"
|
|
|
|
for PACKAGE in "${PACKAGES[@]}"; do
|
|
# Get all the dependencies of the systemd packages including recommended and suggested dependencies.
|
|
PATTERNS+=(
|
|
"?and(?reverse-depends(?exact-name($PACKAGE)), $COMMON)"
|
|
)
|
|
|
|
if ! ((SYSTEMD_REQUIRED_DEPS_ONLY)); then
|
|
PATTERNS+=(
|
|
"?and(?reverse-recommends(?exact-name($PACKAGE)), $COMMON)"
|
|
"?and(?reverse-suggests(?exact-name($PACKAGE)), $COMMON)"
|
|
)
|
|
fi
|
|
done
|
|
|
|
mkosi-install "${PATTERNS[@]}"
|