diff options
| author | George Sapkin | 2026-01-08 03:00:26 +0000 |
|---|---|---|
| committer | Robert Marko | 2026-01-16 16:13:00 +0000 |
| commit | 43057c5c16c093bb8da5542a563c7e25e7d3c8e6 (patch) | |
| tree | 03764f7aee81905ae9bd320b4e77c0441043c30b | |
| parent | d943ebf5b33da82a032081f599572981f64852eb (diff) | |
| download | openwrt-43057c5c16c093bb8da5542a563c7e25e7d3c8e6.tar.gz | |
imagebuilder: add ABI suffix to packages when using apk
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 31cdd13d22dd374d4a8b8d86377627ad01928495)
Link: https://github.com/openwrt/openwrt/pull/21547
Signed-off-by: Robert Marko <robimarko@gmail.com>
| -rw-r--r-- | target/imagebuilder/files/Makefile | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/target/imagebuilder/files/Makefile b/target/imagebuilder/files/Makefile index ee40612c1f..a44eb8b988 100644 --- a/target/imagebuilder/files/Makefile +++ b/target/imagebuilder/files/Makefile @@ -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 |