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>
This commit is contained in:
parent
2fca33462b
commit
842ba7ecef
2
Makefile
2
Makefile
@ -565,14 +565,12 @@ ifeq ($(BR_FORCE_CHECK_DEPENDENCIES),YES)
|
||||
|
||||
define CHECK_ONE_DEPENDENCY
|
||||
ifeq ($$($(2)_TYPE),target)
|
||||
ifeq ($$($(2)_IS_VIRTUAL),)
|
||||
ifneq ($$($$($(2)_KCONFIG_VAR)),y)
|
||||
$$(error $$($(2)_NAME) is in the dependency chain of $$($(1)_NAME) that \
|
||||
has added it to its _DEPENDENCIES variable without selecting it or \
|
||||
depending on it from Config.in)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endef
|
||||
|
||||
$(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\
|
||||
|
@ -1088,15 +1088,15 @@ $$($(2)_TARGET_DIRCLEAN): PKG=$(2)
|
||||
$$($(2)_TARGET_DIRCLEAN): NAME=$(1)
|
||||
|
||||
# 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)
|
||||
$(2)_KCONFIG_VAR = BR2_LINUX_KERNEL
|
||||
else ifneq ($$(filter boot/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/boot/%),$(pkgdir)),)
|
||||
$(2)_KCONFIG_VAR = BR2_TARGET_$(2)
|
||||
else ifneq ($$(filter toolchain/% $$(foreach dir,$$(BR2_EXTERNAL_DIRS),$$(dir)/toolchain/%),$(pkgdir)),)
|
||||
$(2)_KCONFIG_VAR = BR2_$(2)
|
||||
else ifeq ($$($(2)_IS_VIRTUAL),YES)
|
||||
$(2)_KCONFIG_VAR = BR2_PACKAGE_HAS_$(2)
|
||||
else
|
||||
$(2)_KCONFIG_VAR = BR2_PACKAGE_$(2)
|
||||
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)_KCONFIG_OPT,$(2)_KCONFIG_OPTS))
|
||||
|
||||
ifneq ($$($(2)_IS_VIRTUAL),YES)
|
||||
PACKAGES += $(1)
|
||||
endif
|
||||
|
||||
ifneq ($$($(2)_PERMISSIONS),)
|
||||
PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
|
||||
@ -1292,22 +1294,6 @@ ifneq ($$($(2)_HELP_CMDS),)
|
||||
HELP_PACKAGES += $(2)
|
||||
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
|
||||
endef # inner-generic-package
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user