@@ -17,8 +17,6 @@ OPTS+=("--setopt=cachedir=$DOM0_UPDATES_DIR/var/cache/dnf")
1717# Disarm protected packages mechanism, let dom0 evaluate it instead
1818OPTS+=(" --setopt=protected_packages=" )
1919CLEAN_OPTS=(" ${OPTS[@]} " )
20- # DNF verifies signatures implicitly, but yumdownloader does not.
21- SIGNATURE_REGEX=" "
2220PKGLIST=()
2321
2422# Executable (yum or dnf)
@@ -94,34 +92,12 @@ if ! [ -d "$DOM0_UPDATES_DIR" ]; then
9492 exit 1
9593fi
9694
97- mkdir -p $DOM0_UPDATES_DIR /etc
98-
99- # remove converted sqlite db if legacy db is newer, to force conversion again
100- # legacy db could be only in the /var/lib/rpm location, but sqlite could be in any
101- if [ -e " $DOM0_UPDATES_DIR /var/lib/rpm/rpmdb.sqlite" ] && \
102- [ " $DOM0_UPDATES_DIR /var/lib/rpm/Packages" -nt " $DOM0_UPDATES_DIR /var/lib/rpm/rpmdb.sqlite" ]; then
103- rm -f -- " $DOM0_UPDATES_DIR /var/lib/rpm/rpmdb.sqlite" *
104- elif [ -e " $DOM0_UPDATES_DIR /usr/lib/sysimage/rpm/rpmdb.sqlite" ] && \
105- [ " $DOM0_UPDATES_DIR /var/lib/rpm/Packages" -nt " $DOM0_UPDATES_DIR /usr/lib/sysimage/rpm/rpmdb.sqlite" ]; then
106- # remove the whole directory, to make the logic below happy
107- rm -rf -- " $DOM0_UPDATES_DIR /usr/lib/sysimage/rpm"
95+ " $( dirname " $0 " ) /qubes-download-dom0-updates-init.sh" ; RETCODE=$?
96+ if [ $RETCODE -ne 0 ]; then
97+ echo " qubes-download-dom0-updates-init.sh failed with exit code ${RETCODE} !" >&2
98+ exit $RETCODE
10899fi
109100
110- # Check if we need to copy rpmdb somewhere else
111- DOM0_DBPATH=/var/lib/rpm
112- if [ -d " $DOM0_UPDATES_DIR /usr/lib/sysimage/rpm" ] && ! [ -L " $DOM0_UPDATES_DIR /usr/lib/sysimage/rpm" ]; then
113- DOM0_DBPATH=/usr/lib/sysimage/rpm
114- fi
115- DBPATH=$( rpm --eval ' %{_dbpath}' )
116- if [ ! " $DBPATH " = " $DOM0_DBPATH " ]; then
117- mkdir -p " $DOM0_UPDATES_DIR$DBPATH "
118- rm -rf -- " $DOM0_UPDATES_DIR$DBPATH "
119- cp -r " $DOM0_UPDATES_DIR$DOM0_DBPATH " " $DOM0_UPDATES_DIR$DBPATH "
120- fi
121- # Rebuild rpm database in case of different rpm version
122- rm -f -- " $DOM0_UPDATES_DIR$DBPATH " /__*
123- rpm --root=$DOM0_UPDATES_DIR --rebuilddb
124-
125101if [ " $CLEAN " = " 1" ]; then
126102 # shellcheck disable=SC2086
127103 $UPDATE_CMD clean all " ${CLEAN_OPTS[@]} "
@@ -171,41 +147,5 @@ set -e
171147
172148" ${UPDATE_COMMAND[@]} " " ${OPTS[@]} " " ${PKGLIST[@]} "
173149
174- find " $DOM0_UPDATES_DIR /var/cache" -name ' *.rpm' -print0 2> /dev/null | \
175- xargs -0 -r ln -f -t " $DOM0_UPDATES_DIR /packages/"
176-
177- if ls " $DOM0_UPDATES_DIR " /packages/* .rpm > /dev/null 2>&1 ; then
178- if [ -n " $SIGNATURE_REGEX " ]; then
179- rpmkeys_error=0
180- for pkg in " $DOM0_UPDATES_DIR " /packages/* .rpm; do
181- rpmkeys_exit_code=0
182- output=" $( rpmkeys --root " $DOM0_UPDATES_DIR " --checksig " $pkg " ) " \
183- || rpmkeys_exit_code=" $? "
184- if [ ! " $rpmkeys_exit_code " = " 0" ]; then
185- echo " ERROR: could not verify $pkg " >&2
186- rpmkeys_error=1
187- rm " $pkg "
188- elif ! echo " $output " | grep -Pq " $SIGNATURE_REGEX " ; then
189- echo " ERROR: missing or invalid signature for $pkg " >&2
190- rpmkeys_error=1
191- rm " $pkg "
192- else
193- echo " Successfully verified $pkg " >&2
194- fi
195- done
196- if [ ! " $rpmkeys_error " = " 0" ]; then
197- echo " ERROR: could not verify one or more packages" >&2
198- exit 1
199- fi
200- fi
201-
202- cmd=" /usr/lib/qubes/qrexec-client-vm dom0 qubes.ReceiveUpdates /usr/lib/qubes/qfile-agent"
203- qrexec_exit_code=0
204- $cmd " $DOM0_UPDATES_DIR " /packages/* .rpm || { qrexec_exit_code=$? ; true ; };
205- if [ ! " $qrexec_exit_code " = " 0" ]; then
206- echo " '$cmd $DOM0_UPDATES_DIR /packages/*.rpm' failed with exit code ${qrexec_exit_code} !" >&2
207- exit " $qrexec_exit_code "
208- fi
209- else
210- echo " No packages downloaded" >&2
211- fi
150+ " $( dirname " $0 " ) /qubes-download-dom0-updates-finish.sh" ; RETCODE=$?
151+ exit $RETCODE
0 commit comments