Browse Source

pkg-generic: fix rdepends and phony targets of virtual packages

Virtual packages are not added to the _RDEPENDENCIES list of packages
that they depend on (i.e. their provider).

This causes <provider>-show-rdepends to not show the virtual package
and <provider>-show-recursive-rdepends to miss all the packages that
transitively depend on <provider> via the virtual package.

The virtual make targets (e.g. <pkg>-show-info) are also not marked as
phony for virtual packages.

To fix those issues, remove most of the special handling of virtual
packages in pkg-generic by making $($($(1)_KCONFIG_VAR))=y for them as
well.

This also allows removal of some duplicated code in pkg-generic.mk and a
now unneeded special condition in CHECK_ONE_DEPENDENCY.

Still keep the virtual package out of PACKAGES since there is e.g. no
need to rsync per-package target dir to global target dir. I am not
aware of any showstoppers preventing addition to PACKAGES as well,
though, so it is probably just an optimization.

Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Anssi Hannula 3 years ago
parent
commit
842ba7ecef
2 changed files with 5 additions and 21 deletions
  1. 0 2
      Makefile
  2. 5 19
      package/pkg-generic.mk

+ 0 - 2
Makefile

@@ -565,14 +565,12 @@ ifeq ($(BR_FORCE_CHECK_DEPENDENCIES),YES)
 
 
 define CHECK_ONE_DEPENDENCY
 define CHECK_ONE_DEPENDENCY
 ifeq ($$($(2)_TYPE),target)
 ifeq ($$($(2)_TYPE),target)
-ifeq ($$($(2)_IS_VIRTUAL),)
 ifneq ($$($$($(2)_KCONFIG_VAR)),y)
 ifneq ($$($$($(2)_KCONFIG_VAR)),y)
 $$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \
 $$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \
 has added it to its _DEPENDENCIES variable without selecting it or \
 has added it to its _DEPENDENCIES variable without selecting it or \
 depending on it from Config.in)
 depending on it from Config.in)
 endif
 endif
 endif
 endif
-endif
 endef
 endef
 
 
 $(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\
 $(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\

+ 5 - 19
package/pkg-generic.mk

@@ -1088,15 +1088,15 @@ $$($(2)_TARGET_DIRCLEAN):		PKG=$(2)
 $$($(2)_TARGET_DIRCLEAN):		NAME=$(1)
 $$($(2)_TARGET_DIRCLEAN):		NAME=$(1)
 
 
 # Compute the name of the Kconfig option that correspond to the
 # Compute the name of the Kconfig option that correspond to the
-# package being enabled. We handle three cases: the special Linux
-# kernel case, the bootloaders case, and the normal packages case.
-# Virtual packages are handled separately (see below).
+# package being enabled.
 ifeq ($(1),linux)
 ifeq ($(1),linux)
 $(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
 $(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
 else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),)
 else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),)
 $(2)_KCONFIG_VAR = BR2_TARGET_$(2)
 $(2)_KCONFIG_VAR = BR2_TARGET_$(2)
 else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),)
 else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),)
 $(2)_KCONFIG_VAR = BR2_$(2)
 $(2)_KCONFIG_VAR = BR2_$(2)
+else ifeq ($$($(2)_IS_VIRTUAL),YES)
+$(2)_KCONFIG_VAR = BR2_PACKAGE_HAS_$(2)
 else
 else
 $(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
 $(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
 endif
 endif
@@ -1202,7 +1202,9 @@ $(eval $(call check-deprecated-variable,$(2)_BUILD_OPT,$(2)_BUILD_OPTS))
 $(eval $(call check-deprecated-variable,$(2)_GETTEXTIZE_OPT,$(2)_GETTEXTIZE_OPTS))
 $(eval $(call check-deprecated-variable,$(2)_GETTEXTIZE_OPT,$(2)_GETTEXTIZE_OPTS))
 $(eval $(call check-deprecated-variable,$(2)_KCONFIG_OPT,$(2)_KCONFIG_OPTS))
 $(eval $(call check-deprecated-variable,$(2)_KCONFIG_OPT,$(2)_KCONFIG_OPTS))
 
 
+ifneq ($$($(2)_IS_VIRTUAL),YES)
 PACKAGES += $(1)
 PACKAGES += $(1)
+endif
 
 
 ifneq ($$($(2)_PERMISSIONS),)
 ifneq ($$($(2)_PERMISSIONS),)
 PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
 PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
@@ -1292,22 +1294,6 @@ ifneq ($$($(2)_HELP_CMDS),)
 HELP_PACKAGES += $(2)
 HELP_PACKAGES += $(2)
 endif
 endif
 
 
-# Virtual packages are not built but it's useful to allow them to have
-# permission/device/user tables and target-finalize/rootfs-pre-cmd hooks.
-else ifeq ($$(BR2_PACKAGE_HAS_$(2)),y) # $(2)_KCONFIG_VAR
-
-ifneq ($$($(2)_PERMISSIONS),)
-PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
-endif
-ifneq ($$($(2)_DEVICES),)
-PACKAGES_DEVICES_TABLE += $$($(2)_DEVICES)$$(sep)
-endif
-ifneq ($$($(2)_USERS),)
-PACKAGES_USERS += $$($(2)_USERS)$$(sep)
-endif
-TARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS)
-ROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS)
-
 endif # $(2)_KCONFIG_VAR
 endif # $(2)_KCONFIG_VAR
 endef # inner-generic-package
 endef # inner-generic-package