]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mkosi: Make systemd package filtering more robust
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 3 Sep 2024 10:53:23 +0000 (12:53 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 3 Sep 2024 12:42:09 +0000 (14:42 +0200)
Let's not just filter everything with systemd in the name, but instead
use the same list of volatile packages that we install to do the
filtering.

mkosi.conf.d/10-arch/mkosi.prepare
mkosi.conf.d/10-centos-fedora/mkosi.prepare
mkosi.conf.d/10-debian-ubuntu/mkosi.prepare
mkosi.conf.d/10-opensuse/mkosi.prepare

index aac7b3d76f91084a9209203d325b481d1d3a8460..76f67c14e5256f5e2a62a55f388ae02b01b835b8 100755 (executable)
@@ -6,9 +6,11 @@ if [[ "$1" == "build" ]]; then
     exit 0
 fi
 
+mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
+
 DEPS=""
 
-while read -r PACKAGE; do
+for PACKAGE in "${PACKAGES[@]}"; do
     DEPS="$DEPS $(
         pacman --sync --info "$PACKAGE" |
             sed '1,/^$/d' | # Only keep result from first repository (delete everything after first blank line).
@@ -23,11 +25,11 @@ while read -r PACKAGE; do
             sed 's/ *\(.*\):.*/\1/' | # Drop descriptions (everything after first colon for all lines).
             tr '\n' ' ' # Transform newlines to whitespace.
     )"
-done < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
+done
 
 echo "$DEPS" |
     xargs | # Remove extra whitespace.
     tr ' ' '\n' |
-    grep --invert-match --regexp systemd --regexp None | # systemd packages will be installed later on.
+    grep --extended-regexp --invert-match --regexp "$(IFS=\| ; echo "${PACKAGES[*]}")" --regexp None | # systemd packages will be installed later on.
     sort --unique |
     xargs --delimiter '\n' --no-run-if-empty mkosi-install
index 9e74aabae2e78422551012f82c9df4dba2c51b37..9aca0096d5bd81de53c71953462ebb65bd32f681 100755 (executable)
@@ -13,7 +13,7 @@ for DEPS in --requires --recommends --suggests; do
     # --latest-limit=1 is per <name>.<arch> so we have to pass --arch= explicitly to make sure i686 packages
     # are not considered on x86-64.
     dnf repoquery --arch="$DISTRIBUTION_ARCHITECTURE,noarch" --latest-limit=1 --quiet "$DEPS" "${PACKAGES[@]}" |
-        grep --invert-match --regexp systemd --regexp udev --regexp /bin/sh --regexp grubby --regexp sdubby --regexp libcurl-minimal |
+        grep --extended-regexp --invert-match --regexp "$(IFS=\| ; echo "${PACKAGES[*]}")" --regexp /bin/sh --regexp grubby --regexp sdubby --regexp libcurl-minimal |
         sort --unique |
         xargs --delimiter '\n' --no-run-if-empty mkosi-install
 done
index acab113b8c1a8281fd5fae6f18d478f562cd55c2..ffff10d2a4288cb132b12d22a372a6f5c2e8ed75 100755 (executable)
@@ -9,7 +9,8 @@ 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 --invert-match --regexp "<" --regexp "|" | # Remove e.g. <python3:any> and |dbus-broker like results
+    grep --extended-regexp --invert-match --regexp "$(IFS=\| ; echo "${PACKAGES[*]}")" |
     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 |
index 6ee0af2de9303467ff1fbaadba5f36c6d93db8a8..728b502b133db13e25b0d9c14fb054a2ade893de 100755 (executable)
@@ -6,18 +6,20 @@ if [[ "$1" == "build" ]]; then
     exit 0
 fi
 
+mapfile -t PACKAGES < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
+
 DEPS=""
 
-while read -r PACKAGE; do
+for PACKAGE in "${PACKAGES[@]}"; do
     # zypper's output is not machine readable so we make do with sed instead.
     DEPS="$DEPS\n$(
         zypper info --requires --recommends --suggests "$PACKAGE" |
             sed '/Requires/,$!d' | # Remove everything before Requires line
             sed --quiet 's/^    //p' # All indented lines have dependencies
     )"
-done < <(jq --raw-output .VolatilePackages[] <"$MKOSI_CONFIG")
+done
 
 echo -e "$DEPS" |
-    grep --invert-match --regexp systemd --regexp udev --regexp qemu |
+    grep --extended-regexp --invert-match --regexp "$(IFS=\| ; echo "${PACKAGES[*]}")" --regexp qemu |
     sort --unique |
     xargs --delimiter '\n' --no-run-if-empty mkosi-install