Skip to content

Commit edae40c

Browse files
committed
Drop yumdownloader, shellcheck fixes and comments
According to PR comments: #521 (comment) #521 (comment)
1 parent f65af7c commit edae40c

File tree

1 file changed

+7
-46
lines changed

1 file changed

+7
-46
lines changed

package-managers/qubes-download-dom0-updates.sh

+7-46
Original file line numberDiff line numberDiff line change
@@ -144,53 +144,14 @@ if [ ${#PKGLIST[@]} -eq 0 ] && [ "$CHECK_ONLY" = "1" ]; then
144144
fi
145145
fi
146146

147-
# now, we will download something
148-
UPDATE_COMMAND=(fakeroot $UPDATE_CMD $UPDATE_ACTION "${UPDATE_ARGUMENTS[@]}")
149-
"$UPDATE_CMD" "$UPDATE_ACTION" --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly)
150-
# check for --downloadonly option - if not supported (Debian), fallback to
151-
# yumdownloader
152-
if ! "$UPDATE_CMD" --help | grep -q downloadonly && ! "$UPDATE_CMD" --version | grep -q dnf5; then
153-
if dpkg --compare-versions \
154-
"$(dpkg-query --show --showformat='${version}' rpm)" gt 4.14; then
155-
SIGNATURE_REGEX="^[A-Za-z0-9._+-/]{1,128}\.rpm: digests signatures OK$"
156-
else
157-
SIGNATURE_REGEX="^[A-Za-z0-9._+-/]{1,128}\.rpm: [a-z0-9() ]* (pgp|gpg) [a-z0-9 ]* OK$"
158-
fi
147+
# now, we will download something (or perform search, list or other tasks)
148+
UPDATE_COMMAND=(fakeroot "$UPDATE_CMD" "$UPDATE_ACTION" "${UPDATE_ARGUMENTS[@]}")
159149

160-
# setup environment for yumdownloader to be happy
161-
if [ ! -e "$DOM0_UPDATES_DIR/etc/yum.conf" ]; then
162-
ln -nsf dnf/dnf.conf "$DOM0_UPDATES_DIR/etc/yum.conf"
163-
fi
164-
if [ "$UPDATE_ACTION" = "install" ]; then
165-
UPDATE_COMMAND=(yumdownloader "--destdir=$DOM0_UPDATES_DIR/packages" --resolve)
166-
elif [ "$UPDATE_ACTION" = "upgrade" ]; then
167-
# shellcheck disable=SC2086
168-
UPDATES_FULL=$($UPDATE_CMD check-update "${UPDATE_ARGUMENTS[@]}" "${OPTS[@]}" "${PKGLIST[@]}")
169-
check_update_retcode=$?
170-
UPDATES_FULL=$(echo "$UPDATES_FULL" | grep -v "^Loaded plugins:\|^Last metadata\|^$")
171-
mapfile -t PKGLIST < <(echo "$UPDATES_FULL" | grep -v "^Obsoleting\|Could not" | cut -f 1 -d ' ')
172-
if [ "$check_update_retcode" -eq 0 ]; then
173-
# exit code 0 means no updates available - regardless of stdout messages
174-
echo "No new updates available" >&2
175-
exit 0
176-
fi
177-
UPDATE_COMMAND=(yumdownloader "--destdir=$DOM0_UPDATES_DIR/packages" --resolve)
178-
elif [ "$UPDATE_ACTION" == "list" ] || [ "$UPDATE_ACTION" == "search" ]; then
179-
# those actions do not download any package, so lack of --downloadonly is irrelevant
180-
UPDATE_COMMAND=($UPDATE_CMD "${UPDATE_ARGUMENTS[@]}" -- "$UPDATE_ACTION")
181-
elif [ "$UPDATE_ACTION" == "reinstall" ]; then
182-
# this is just approximation of 'reinstall' action...
183-
mapfile -t PKGLIST < <(rpm "--root=$DOM0_UPDATES_DIR" -q "${PKGLIST[@]}")
184-
UPDATE_COMMAND=(yumdownloader "--destdir=$DOM0_UPDATES_DIR/packages" --resolve)
185-
else
186-
echo "ERROR: yum version installed in VM $(hostname) does not suppport --downloadonly option" >&2
187-
echo "ERROR: only 'install' and 'upgrade' actions supported ($UPDATE_ACTION not)" >&2
188-
if [ "$GUI" = 1 ]; then
189-
zenity --error --text="yum version too old for '$UPDATE_ACTION' action, see console for details"
190-
fi
191-
exit 1
192-
fi
193-
fi
150+
# DNF4 supported --downloadonly option for all actions. DNF5 fails for list,
151+
# search, info and similar actions if --downloadonly is specified. The below
152+
# condition is a smart way to check if --downloadonly option is applicable to
153+
# the action.
154+
"$UPDATE_CMD" "$UPDATE_ACTION" --help | grep -q downloadonly && UPDATE_COMMAND+=(--downloadonly)
194155

195156
mkdir -p "$DOM0_UPDATES_DIR/packages"
196157

0 commit comments

Comments
 (0)