build: fix implicit self-provides

Fix setting implicit self-provides for packages when they don't have any
PROVIDES specified.

Remove redundant self-provide for kmods, since kmods are packages and
will have a self-provide added already.

Fixes: 5ed650a ("build: add support for virtual provides")
Fixes: 9b37b71 ("build: provide virtual self in kmods")
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21369
(cherry picked from commit 2d844a0770)
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-05 04:03:00 +02:00 committed by Robert Marko
parent 2f644e7cad
commit 46244b6b0b
3 changed files with 4 additions and 14 deletions

View file

@ -219,15 +219,6 @@ define KernelPackage
$(call KernelPackage/$(1))
$(call KernelPackage/$(1)/$(BOARD))
$(call KernelPackage/$(1)/$(BOARD)/$(SUBTARGET))
# Add an implicit self-provide. apk can't handle self provides, be it
# versioned or virtual, so opt for a prefix and a suffix instead. Package
# name without a prefix/suffix is too generic and might conflict with other
# packages, e.g. wireguard. This allows several variants to provide the same
# virtual package without adding extra provides to the default one, e.g.
# r8169 implicitly provides kmod-r8169-any and is marked as default, so
# r8125 can explicitly provide @kmod-r8169-any as well.
PROVIDES+=@kmod-$(1)-any
endef
ifdef KernelPackage/$(1)/conffiles

View file

@ -195,10 +195,9 @@ endef
# self. Filter it out, but keep virtual self provides, in the form of
# @(kmod-)?${package_name}-any.
#
# - Packages implicitly add a virtual @${package_name}-any provide in Package.
#
# - kmods implicitly add a virtual @kmod-${package_name}-any provide in
# KernelPackage.
# - Packages implicitly add a virtual @${package_name}-any provide in Package,
# which implies that kmods, which are also packages, will have a virtual
# @kmod-${package_name}-any provide.
#
# - Aside from the two aforementioned implicit provides, packages are expected
# to manage their provides themselves.

View file

@ -337,7 +337,7 @@ define BuildPackage
# variants to provide the same virtual package without adding extra provides
# to the default one, e.g. wget implicitly provides wget-any and is marked as
# default, so wget-ssl can explicitly provide @wget-any as well.
PROVIDES+=@$(1)-any
$(eval PROVIDES:=$(strip @$(1)-any $(PROVIDES)))
ifdef DESCRIPTION
$$(error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description)