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).
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
# --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
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 |
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