mirror of
https://git.openwrt.org/project/rpcd.git
synced 2025-12-20 02:18:36 +08:00
rpc-sys: packagelist: handle ABI versions in apk world properly
It was originally assumed that all entries in '/etc/apk/world' would have ABI-versioned package names. This turns out to be false, and apk happily adds package names with or without the ABI version suffix. This causes the output from 'ubus call rpc-sys packagelist' to exclude some packages from the user-installed package list, thus causing them to disappear when doing an ASU build. Fix it by checking both versioned and unversioned package names. Link: https://forum.openwrt.org/t/owut-openwrt-upgrade-tool/200035/744 Fixes: https://github.com/efahl/owut/issues/49 Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
This commit is contained in:
12
sys.c
12
sys.c
@@ -318,10 +318,16 @@ rpc_sys_packagelist(struct ubus_context *ctx, struct ubus_object *obj,
|
||||
break;
|
||||
default:
|
||||
if (is_blank(line)) {
|
||||
if (pkg[0] && ver[0] && is_all_or_world(pkg, world)) {
|
||||
if (abi[0])
|
||||
if (pkg[0] && ver[0]) {
|
||||
/* Need to check both ABI-versioned and non-versioned pkg */
|
||||
bool keep = is_all_or_world(pkg, world);
|
||||
if (abi[0]) {
|
||||
pkg[strlen(pkg)-strlen(abi)] = '\0';
|
||||
blobmsg_add_string(&buf, pkg, ver);
|
||||
if (!keep)
|
||||
keep = is_all_or_world(pkg, world);
|
||||
}
|
||||
if (keep)
|
||||
blobmsg_add_string(&buf, pkg, ver);
|
||||
}
|
||||
abi[0] = pkg[0] = ver[0] = '\0';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user