diff options
Diffstat (limited to 'mkosi.conf.d/10-debian-ubuntu')
-rw-r--r-- | mkosi.conf.d/10-debian-ubuntu/mkosi.conf | 5 | ||||
-rwxr-xr-x | mkosi.conf.d/10-debian-ubuntu/mkosi.prepare | 26 |
2 files changed, 21 insertions, 10 deletions
diff --git a/mkosi.conf.d/10-debian-ubuntu/mkosi.conf b/mkosi.conf.d/10-debian-ubuntu/mkosi.conf index d14746f..472064e 100644 --- a/mkosi.conf.d/10-debian-ubuntu/mkosi.conf +++ b/mkosi.conf.d/10-debian-ubuntu/mkosi.conf @@ -8,10 +8,6 @@ Distribution=|ubuntu PackageManagerTrees=mkosi-pinning.pref:/etc/apt/preferences.d/mkosi-pinning.pref [Content] -# Debian ships /usr/bin/login from shadow instead of util-linux which doesn't support credentials so we -# enable autologin the old-fashioned way. -Autologin=yes - VolatilePackages= libnss-myhostname libnss-mymachines @@ -58,6 +54,7 @@ Packages= knot libcap-ng-utils locales + login man-db multipath-tools ncat diff --git a/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare b/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare index acab113..bf2c5eb 100755 --- a/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare +++ b/mkosi.conf.d/10-debian-ubuntu/mkosi.prepare @@ -8,9 +8,23 @@ fi mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG") -apt-cache depends "${PACKAGES[@]}" | - grep --invert-match --regexp "<" --regexp "|" --regexp systemd | # Remove e.g. <python3:any> and |dbus-broker like results - grep --extended-regexp "Depends|Suggests|Recommends" | - sed --quiet 's/.*: //p' | # Get every line with ": " in it and strip it at the same time. - sort --unique | - xargs --delimiter '\n' --no-run-if-empty mkosi-install +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)" + "?and(?reverse-recommends(?exact-name($PACKAGE)), $COMMON)" + "?and(?reverse-suggests(?exact-name($PACKAGE)), $COMMON)" + ) +done + +mkosi-install "${PATTERNS[@]}" |