imagebuilder: add ABI suffix to packages when using apk
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled

If an apk package with an ABI version doesn't have priority set, it
can't be selected by its base name:

$ make manifest PACKAGES='libustream-openssl libsqlite3'
ERROR: unable to select packages:
  libsqlite3 (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libsqlite3-0
    required by: world[libsqlite3]
  libustream-openssl (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libustream-openssl20201210
    required by: world[libustream-openssl]

Look up the ABI version in apk index and if present, add an ABI suffix
to all requested packages.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21449
(cherry picked from commit 31cdd13d22)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
George Sapkin 2026-01-08 05:00:26 +02:00 committed by Robert Marko
parent d943ebf5b3
commit 43057c5c16

View file

@ -145,6 +145,32 @@ BUILD_PACKAGES:=$(sort $(DEFAULT_PACKAGES) $($(USER_PROFILE)_PACKAGES) kernel)
BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
BUILD_PACKAGES:=$(USER_PACKAGES) $(BUILD_PACKAGES)
BUILD_PACKAGES:=$(filter-out $(filter -%,$(BUILD_PACKAGES)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES))),$(BUILD_PACKAGES))
ifneq ($(CONFIG_USE_APK),)
BUILD_PACKAGES+= \
"base-files=$(BASE_FILES_VERSION)" \
"libc=$(LIBC_VERSION)" \
"kernel=$(KERNEL_VERSION)"
endif
# Get ABI version suffix for a package from an apk index
#
# 1: package name
define GetABISuffix
$(shell $(APK) query --fields tags --match provides $(1) | grep openwrt:abiversion | awk -F= '{print $$2; exit}')
endef
# Format packages by adding an ABI version suffix if found
#
# 1: list of packages
define FormatPackages
$(strip $(foreach pkg,$(strip $(subst ",,$(1))),
$(eval pkg_name:=$(firstword $(subst =, ,$(pkg))))
$(if $(findstring =,$(pkg)),$(eval pkg_ver:==$(lastword $(subst =, ,$(pkg)))))
$(pkg_name)$(call GetABISuffix,$(pkg_name))$(pkg_ver)
))
endef
PACKAGES:=
_call_image: staging_dir/host/.prereq-build
@ -229,10 +255,8 @@ ifeq ($(CONFIG_USE_APK),)
$(OPKG) install $(wildcard $(PACKAGE_DIR)/kernel_*.ipk)
$(OPKG) install $(BUILD_PACKAGES)
else
$(APK) add --arch $(ARCH_PACKAGES) --no-scripts $(BUILD_PACKAGES) \
"base-files=$(BASE_FILES_VERSION)" \
"libc=$(LIBC_VERSION)" \
"kernel=$(KERNEL_VERSION)"
$(eval BUILD_PACKAGES:=$(call FormatPackages,$(BUILD_PACKAGES)))
$(APK) add --arch $(ARCH_PACKAGES) --no-scripts $(BUILD_PACKAGES)
endif
prepare_rootfs: FORCE