Just want to understand: why is it safe to ignore/skip these "bad" packages and proceed with an upgrade build? Because newer versions will come with the build anyways?
Here's the output from mine, before I've attempted to update:
root@OpenWrt:~# missing=$(owut check -v | awk '/missing to-version/ {print $1}') && owut check -v -r "$missing"
ERROR: Checks reveal errors, do not upgrade
owut - OpenWrt Upgrade Tool 2025.04.08~ef2bfb4d-r1 (/usr/bin/owut)
ASU-Server https://sysupgrade.openwrt.org
Upstream https://downloads.openwrt.org
Target mediatek/mt7622
Profile linksys_e8450-ubi
Package-arch aarch64_cortex-a53
Root-FS-type squashfs
Sys-type sysupgrade
Version-from SNAPSHOT r29468-f8da45e25d (kernel 6.6.89)
Version-to SNAPSHOT r29802-200a31b6f5 (kernel 6.6.92)
Build-FS-type squashfs
Build-at 2025-05-26T16:59:26Z (~7 hours ago)
Image-prefix openwrt-mediatek-mt7622-linksys_e8450-ubi
Image-URL https://downloads.openwrt.org/snapshots/targets/mediatek/mt7622
Image-file openwrt-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itb
Installed 172 packages
Top-level 122 packages
Default 33 packages
User-installed 92 packages (top-level only)
Package version changes:
base-files 1658~f8da45e25d 1658~200a31b6f5
hostapd-common 2025.02.09~c8c7d56a-r1 2025.02.09~c8c7d56a-r2
iw 6.9-r2 6.9-r4
jshn 2024.03.29~eb9bcb64-r1 2024.12.19~3868f47c-r1
kmod-cfg80211 6.6.89.6.12.6-r1 6.6.92.6.12.6-r2
kmod-crypto-acompress 6.6.89-r1 6.6.92-r1
kmod-crypto-aead 6.6.89-r1 6.6.92-r1
kmod-crypto-ccm 6.6.89-r1 6.6.92-r1
kmod-crypto-cmac 6.6.89-r1 6.6.92-r1
kmod-crypto-crc32c 6.6.89-r1 6.6.92-r1
kmod-crypto-ctr 6.6.89-r1 6.6.92-r1
kmod-crypto-gcm 6.6.89-r1 6.6.92-r1
kmod-crypto-geniv 6.6.89-r1 6.6.92-r1
kmod-crypto-gf128 6.6.89-r1 6.6.92-r1
kmod-crypto-ghash 6.6.89-r1 6.6.92-r1
kmod-crypto-hash 6.6.89-r1 6.6.92-r1
kmod-crypto-hmac 6.6.89-r1 6.6.92-r1
kmod-crypto-manager 6.6.89-r1 6.6.92-r1
kmod-crypto-null 6.6.89-r1 6.6.92-r1
kmod-crypto-rng 6.6.89-r1 6.6.92-r1
kmod-crypto-seqiv 6.6.89-r1 6.6.92-r1
kmod-crypto-sha3 6.6.89-r1 6.6.92-r1
kmod-crypto-sha512 6.6.89-r1 6.6.92-r1
kmod-gpio-button-hotplug 6.6.89-r5 6.6.92-r5
kmod-hwmon-core 6.6.89-r1 6.6.92-r1
kmod-leds-gpio 6.6.89-r1 6.6.92-r1
kmod-lib-crc-ccitt 6.6.89-r1 6.6.92-r1
kmod-lib-crc32c 6.6.89-r1 6.6.92-r1
kmod-lib-lzo 6.6.89-r1 6.6.92-r1
kmod-mac80211 6.6.89.6.12.6-r1 6.6.92.6.12.6-r2
kmod-mt76-connac 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt76-core 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt7615-common 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt7615e 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt7622-firmware 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt7915-firmware 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-mt7915e 6.6.89.2025.04.11~be28ef77-r1 6.6.92.2025.04.11~be28ef77-r1
kmod-nf-conntrack 6.6.89-r1 6.6.92-r1
kmod-nf-conntrack6 6.6.89-r1 6.6.92-r1
kmod-nf-flow 6.6.89-r1 6.6.92-r1
kmod-nf-log 6.6.89-r1 6.6.92-r1
kmod-nf-log6 6.6.89-r1 6.6.92-r1
kmod-nf-nat 6.6.89-r1 6.6.92-r1
kmod-nf-reject 6.6.89-r1 6.6.92-r1
kmod-nf-reject6 6.6.89-r1 6.6.92-r1
kmod-nfnetlink 6.6.89-r1 6.6.92-r1
kmod-nft-core 6.6.89-r1 6.6.92-r1
kmod-nft-fib 6.6.89-r1 6.6.92-r1
kmod-nft-nat 6.6.89-r1 6.6.92-r1
kmod-nft-offload 6.6.89-r1 6.6.92-r1
kmod-nls-base 6.6.89-r1 6.6.92-r1
kmod-ppp 6.6.89-r1 6.6.92-r1
kmod-pppoe 6.6.89-r1 6.6.92-r1
kmod-pppox 6.6.89-r1 6.6.92-r1
kmod-slhc 6.6.89-r1 6.6.92-r1
kmod-thermal 6.6.89-r1 6.6.92-r1
kmod-usb-core 6.6.89-r1 6.6.92-r1
kmod-usb-xhci-hcd 6.6.89-r1 6.6.92-r1
kmod-usb-xhci-mtk 6.6.89-r1 6.6.92-r1
kmod-usb3 6.6.89-r1 6.6.92-r1
libgcc1 14.2.0-r4 14.3.0-r4
libucode20230711 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
luci 25.123.45854~98f7f2a 25.142.72525~0336767
luci-app-firewall 25.123.45854~98f7f2a 25.142.72525~0336767
luci-app-package-manager 25.123.45854~98f7f2a 25.142.72525~0336767
luci-app-statistics 25.123.45854~98f7f2a 25.142.72525~0336767
luci-base 25.123.45854~98f7f2a 25.142.72525~0336767
luci-light 25.123.45854~98f7f2a 25.142.72525~0336767
luci-mod-admin-full 25.123.45854~98f7f2a 25.142.72525~0336767
luci-mod-network 25.123.45854~98f7f2a 25.142.72525~0336767
luci-mod-status 25.123.45854~98f7f2a 25.142.72525~0336767
luci-mod-system 25.123.45854~98f7f2a 25.142.72525~0336767
luci-proto-ipv6 25.123.45854~98f7f2a 25.142.72525~0336767
luci-proto-ppp 25.123.45854~98f7f2a 25.142.72525~0336767
luci-ssl 25.123.45854~98f7f2a 25.142.72525~0336767
luci-theme-bootstrap 25.123.45854~98f7f2a 25.142.72525~0336767
owut 2025.04.08~ef2bfb4d-r1 2025.05.12~8353c4e9-r1
ubus 2025.01.02~afa57cce-r1 2025.05.16~88e63250-r1
ubusd 2025.01.02~afa57cce-r1 2025.05.16~88e63250-r1
ucode 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-digest 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-fs 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-math 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-nl80211 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-rtnl 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-ubus 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-uci 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
ucode-mod-uloop 2025.03.24~b27d70c9-r1 2025.05.11~d5b3a9dc-r1
wpad-basic-mbedtls 2025.02.09~c8c7d56a-r1 2025.02.09~c8c7d56a-r2
89 packages are out-of-date
Default package analysis:
Default Provided-by
libustream-mbedtls libustream-mbedtls20201210
nftables nftables-json
There are currently package build failures for SNAPSHOT aarch64_cortex-a53:
Feed: packages
augeas Mon May 26 13:19:54 2025 - not installed
domoticz Mon May 26 17:38:45 2025 - not installed
gcc Mon May 26 12:42:55 2025 - not installed
libmcrypt Mon May 26 11:25:46 2025 - not installed
libpfring Mon May 26 11:29:01 2025 - not installed
mpack Mon May 26 11:33:44 2025 - not installed
openthread-br Mon May 26 15:31:33 2025 - not installed
openvswitch Mon May 26 16:58:41 2025 - not installed
ovn Mon May 26 17:58:26 2025 - not installed
perl-authen-sasl-xs Mon May 26 16:30:45 2025 - not installed
python-augeas Mon May 26 17:58:48 2025 - not installed
python-gevent Mon May 26 17:59:49 2025 - not installed
xr_usb_serial_common Mon May 26 13:42:28 2025 - not installed
Feed: routing
cjdns Mon May 26 15:22:25 2025 - not installed
hnetd Mon May 26 16:44:49 2025 - not installed
oonf-dlep-proxy Mon May 26 15:22:34 2025 - not installed
oonf-dlep-radio Mon May 26 15:22:36 2025 - not installed
Feed: telephony
dahdi-linux Mon May 26 13:47:10 2025 - not installed
dahdi-tools Mon May 26 15:22:45 2025 - not installed
freeswitch Mon May 26 18:04:30 2025 - not installed
freeswitch-mod-bcg729 Mon May 26 18:35:42 2025 - not installed
freetdm Mon May 26 18:35:44 2025 - not installed
libpri Mon May 26 15:27:30 2025 - not installed
miax Mon May 26 12:23:23 2025 - not installed
rtpengine Mon May 26 18:49:45 2025 - not installed
rtpproxy Mon May 26 16:47:06 2025 - not installed
siproxd Mon May 26 13:47:34 2025 - not installed
sofia-sip Mon May 26 16:46:27 2025 - not installed
Feed: video
cog Mon May 26 19:11:53 2025 - not installed
qt5base Mon May 26 19:02:05 2025 - not installed
qt5quick Mon May 26 19:02:01 2025 - not installed
qt5quick-controls Mon May 26 19:05:16 2025 - not installed
qt5script Mon May 26 19:02:04 2025 - not installed
qt5svg Mon May 26 19:02:04 2025 - not installed
qt5translations Mon May 26 19:41:38 2025 - not installed
qt5virtualkeyboard Mon May 26 19:41:39 2025 - not installed
wpewebkit Mon May 26 19:11:41 2025 - not installed
Failures don't affect this device, details at
https://downloads.openwrt.org/snapshots/faillogs/aarch64_cortex-a53/
It is safe to proceed with an upgrade
So what will happen if I force upgrade? Will something in OpenWrt attempt to call on those missing packages, or are they just unused orphan packages that mean nothing (in this case, ignored to bypass the upgrade check)?
They are dependencies of other packages, so removing them has no effect on the build. The only reason you see them is because owut checks to make sure that all of the installed packages (including those non-top-level ones) actually exist and includes them in the package reporting when they can't be found.
You can't as they no longer exist, owut will just stop with Update checks reveal errors, can't proceed.
The underlying issue is with apk, as it is missing a means for saving the ABI version in the metadata (current status here https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/11066). With opkg that information is in the package metadata and installed database, so when you say ubus call rpc-sys packagelist the ABI versions are stripped from the name and you get the canonical libubus and not libubus20250102 or whatever the current version is. This allows owut to say, "We have libubus installed, is there one available? Ok, yes, then all is good and I don't have to say anything."
If none of the ABI-versioned libraries have changed since your last upgrade, then $missing will be empty and the dangling -r will generate an error. (In that case a simple owut upgrade will work.)
$ owut check -r ""
'store' action requires a value
... blah blah
We are right on the cusp of not needing this any longer!
Yesterday's commit on apk-tools which resolved this request for custom tags adds the capability to the apk command to include the missing ABI version data into the package metadata and indexes. I've got a partial port of the above new code in my build environment and have worked all day on getting all the other bits and pieces together.
In the rpcd repo, rewrite rpcd/sys.c to produce ABI-stripped package names when ubus call rpc-sys packagelist is called.
☐ PR submitted https://github.com/openwrt/rpcd/pull/12
☒ Will require update in package/system/rpcd/Makefile once accepted
The code is all done (pending any tweaks), and is actually quite trivial, albeit scattered around a bit, but getting things through the process and then waiting for the builds to get the changes onto the downloads site might take a while.
Once all those changes are in and have propagated through the builds, I can begin testing owut, which shouldn't need any changes, but you never know...