openvswitch: fix intree tunnel recursive dependency
authorJoshua Klinesmith <redacted>
Sun, 29 Mar 2026 20:35:56 +0000 (16:35 -0400)
committerFlorian Eckert <redacted>
Thu, 2 Apr 2026 06:34:03 +0000 (08:34 +0200)
Remove PROVIDES from all OVS kernel packages. The provider-
alternation logic in scripts/package-metadata.pl generates
recursive Kconfig dependencies when kmod-openvswitch-intree
provides kmod-openvswitch, because userspace packages
(openvswitch, ovsd, ovn-host) that +depend on kmod-openvswitch
get cross-referenced against the intree provider via
PACKAGE_<provider> < PACKAGE_<requester> conditions.

Verified locally: make defconfig produces zero OVS-related
recursive dependency errors with PROVIDES removed entirely.
The previous selective approach (keeping PROVIDES only for
openvswitch-intree) did not resolve the userspace recursion.

Users must install kmod-openvswitch-intree explicitly instead
of relying on provider alternation.

Fixes: openwrt/openwrt#22664
Signed-off-by: Joshua Klinesmith <redacted>
Co-Authored-By: Claude Opus 4.6 (1M context) <redacted>
net/openvswitch/Makefile

index 605dedf437edbf2a476f8cf1e94ef4e859cba48d..5a8be8957c1cd3e54bb8c045260401d184c0f4f2 100644 (file)
@@ -17,7 +17,7 @@ include ./openvswitch.mk
 #
 PKG_NAME:=openvswitch
 PKG_VERSION:=$(ovs_version)
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
 PKG_HASH:=e1b3fa472676626853f22d63f959e5ad061e1bf57e1bbd444d0ed88f947ef8b1
@@ -54,6 +54,12 @@ ovs_kmod_package_name=$(if $(filter openvswitch,$(1)),openvswitch,$(1))
 ovs_kmod_is_intree=$(filter %-intree,$(1))
 ovs_kmod_upstream_name=kmod-$(call ovs_kmod_package_name,$(patsubst %-intree,%,$(1)))
 ovs_kmod_package_provides=$(call ovs_kmod_upstream_name,$(1))
+# Do not use PROVIDES for any OVS kmod. The provider-alternation logic in
+# scripts/package-metadata.pl generates recursive Kconfig dependencies when
+# kmod-openvswitch-intree provides kmod-openvswitch, because userspace
+# packages (openvswitch, ovsd, ovn-host) that +depend on kmod-openvswitch
+# get cross-referenced against the intree provider via PACKAGE_<provider>
+# < PACKAGE_<requester> conditions (#22664).
 define OvsKmodPackageTemplate
 ifeq ($(if $(call ovs_kmod_is_intree,$(1)),$(ovs_kmod_intree_not_supported)),)
   define KernelPackage/$(call ovs_kmod_package_name,$(1))
@@ -62,7 +68,6 @@ ifeq ($(if $(call ovs_kmod_is_intree,$(1)),$(ovs_kmod_intree_not_supported)),)
      SUBMENU:=Network Support
      TITLE:=$(ovs_kmod_$(1)_title)
      DEPENDS:=$(ovs_kmod_$(1)_depends) $(if $(call ovs_kmod_is_intree,$(1)),@IPV6 @DEVEL)
-     PROVIDES:=$(call ovs_kmod_package_provides,$(1))
      KCONFIG:=$(ovs_kmod_$(1)_kconfig)
      FILES:=$(ovs_kmod_$(1)_files)
      AUTOLOAD:=$(call AutoProbe,$(foreach m,$(ovs_kmod_$(1)_files),$(notdir $(patsubst %.ko,%,$(basename $(m))))))
git clone https://git.99rst.org/PROJECT