![Pascal de Bruijn](/assets/img/avatar_default.png)
Some linux tools (e.g. the Microsoft HyperV convenience utilities) will install programs tostart at boot time, so they need to be able to install init files (systemd units, sysv init script, or openrc units). Unlike the other commands, we are redefining the real _INSTALL_INIT_* macros, rather than use hooks, to let the infra call those at the right moment. We must be careful about the openrc support, though: if two tools are enabled, one which provides sysv scripts but no openrc config, and the other which provides openrc config, and we are using openrc as init system, then we want to use the sysv scripts from the former as well as the openrc config of the latter. Thus we need to duplicate a bit the openrc logic here. Signed-off-by: Pascal de Bruijn <p.debruijn@unilogic.nl> [yann.morin.1998@free.fr: - define macros, not hooks - introduce support for openrc too - expand commit log ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
68 lines
2.5 KiB
Makefile
68 lines
2.5 KiB
Makefile
################################################################################
|
|
#
|
|
# linux-tools
|
|
#
|
|
################################################################################
|
|
|
|
# Vampirising sources from the kernel tree, so no source nor site specified.
|
|
# Instead, we directly build in the sources of the linux package. We can do
|
|
# that, because we're not building in the same location and the same files.
|
|
#
|
|
# So, all tools refer to $(LINUX_DIR) instead of $(@D).
|
|
|
|
# Note: we need individual tools makefiles to be included *before* we build
|
|
# the list of build and install hooks below to guarantee that each tool has
|
|
# a chance to register itself once, and only once. Therefore, the makefiles
|
|
# are named linux-tool-*.mk.in, so they won't be picked up by the top-level
|
|
# Makefile, but can be included here, guaranteeing the single inclusion and
|
|
# the proper ordering.
|
|
|
|
include $(sort $(wildcard package/linux-tools/*.mk.in))
|
|
|
|
# We only need the kernel to be extracted, not actually built
|
|
LINUX_TOOLS_PATCH_DEPENDENCIES = linux
|
|
|
|
# Install Linux kernel tools in the staging directory since some tools
|
|
# may install shared libraries and headers (e.g. cpupower).
|
|
LINUX_TOOLS_INSTALL_STAGING = YES
|
|
|
|
LINUX_TOOLS_DEPENDENCIES += $(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$($(call UPPERCASE,$(tool))_DEPENDENCIES)))
|
|
|
|
LINUX_TOOLS_POST_BUILD_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$(call UPPERCASE,$(tool))_BUILD_CMDS))
|
|
|
|
LINUX_TOOLS_POST_INSTALL_STAGING_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$(call UPPERCASE,$(tool))_INSTALL_STAGING_CMDS))
|
|
|
|
LINUX_TOOLS_POST_INSTALL_TARGET_HOOKS += $(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$(call UPPERCASE,$(tool))_INSTALL_TARGET_CMDS))
|
|
|
|
define LINUX_TOOLS_INSTALL_INIT_SYSTEMD
|
|
$(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSTEMD))
|
|
)
|
|
endef
|
|
|
|
define LINUX_TOOLS_INSTALL_INIT_SYSV
|
|
$(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV))
|
|
)
|
|
endef
|
|
|
|
define LINUX_TOOLS_INSTALL_INIT_OPENRC
|
|
$(foreach tool,$(LINUX_TOOLS),\
|
|
$(if $(BR2_PACKAGE_LINUX_TOOLS_$(call UPPERCASE,$(tool))),\
|
|
$(or $($(call UPPERCASE,$(tool))_INSTALL_INIT_OPENRC),\
|
|
$($(call UPPERCASE,$(tool))_INSTALL_INIT_SYSV)))
|
|
)
|
|
endef
|
|
|
|
$(eval $(generic-package))
|