ef89aa4b98
This commit add a new package version, while keeping the previous one. This was suggested in: https://lists.buildroot.org/pipermail/buildroot/2022-August/649398.html This is because linux-backports increased its minimal requirements on kernel version. Since Buildroot want to support a wide range of kernel versions, this package now supports several backport versions, one for each kernel version era (backports v5.10.110 for kernels down to version 3.10, backports v5.15.58 for kernels down to version 4.4). For detailed release commit log, see: https://git.kernel.org/pub/scm/linux/kernel/git/backports/backports.git/log/?h=v5.15.58-1 Signed-off-by: Julien Olivain <ju.o@free.fr> [yann.morin.1998@free.fr: split long lines] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
135 lines
5.6 KiB
Makefile
135 lines
5.6 KiB
Makefile
################################################################################
|
|
#
|
|
# linux-backports
|
|
#
|
|
################################################################################
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_5_10_X),y)
|
|
LINUX_BACKPORTS_VERSION_MAJOR = 5.10.110
|
|
LINUX_BACKPORTS_MINIMAL_KVER_MAJOR = 3
|
|
LINUX_BACKPORTS_MINIMAL_KVER_MINOR = 10
|
|
else
|
|
# use default the latest version as default
|
|
LINUX_BACKPORTS_VERSION_MAJOR = 5.15.58
|
|
LINUX_BACKPORTS_MINIMAL_KVER_MAJOR = 4
|
|
LINUX_BACKPORTS_MINIMAL_KVER_MINOR = 4
|
|
endif
|
|
|
|
LINUX_BACKPORTS_VERSION = $(LINUX_BACKPORTS_VERSION_MAJOR)-1
|
|
LINUX_BACKPORTS_SOURCE = backports-$(LINUX_BACKPORTS_VERSION).tar.xz
|
|
LINUX_BACKPORTS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/projects/backports/stable/v$(LINUX_BACKPORTS_VERSION_MAJOR)
|
|
LINUX_BACKPORTS_LICENSE = GPL-2.0
|
|
LINUX_BACKPORTS_LICENSE_FILES = \
|
|
COPYING \
|
|
LICENSES/exceptions/Linux-syscall-note \
|
|
LICENSES/preferred/GPL-2.0
|
|
|
|
# flex and bison are needed to generate kconfig parser. We use the
|
|
# same logic as the linux kernel (we add host dependencies only if
|
|
# host does not have them). See linux/linux.mk and
|
|
# support/dependencies/check-host-bison-flex.mk.
|
|
LINUX_BACKPORTS_DEPENDENCIES = \
|
|
$(BR2_BISON_HOST_DEPENDENCY) \
|
|
$(BR2_FLEX_HOST_DEPENDENCY)
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y)
|
|
LINUX_BACKPORTS_KCONFIG_FILE = $(LINUX_BACKPORTS_DIR)/defconfigs/$(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG))
|
|
else ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y)
|
|
LINUX_BACKPORTS_KCONFIG_FILE = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE))
|
|
endif
|
|
|
|
LINUX_BACKPORTS_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CONFIG_FRAGMENT_FILES))
|
|
LINUX_BACKPORTS_KCONFIG_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)
|
|
|
|
# linux-backports' build system expects the config options to be present
|
|
# in the environment, and it is so when using their custom buildsystem,
|
|
# because they are set in the main Makefile, which then calls a second
|
|
# Makefile.
|
|
#
|
|
# In our case, we do not use that first Makefile. So, we parse the
|
|
# .config file, filter-out comment lines and put the rest as command
|
|
# line variables.
|
|
#
|
|
# LINUX_BACKPORTS_MAKE_OPTS is used by the kconfig-package infra, while
|
|
# LINUX_BACKPORTS_MODULE_MAKE_OPTS is used by the kernel-module infra.
|
|
#
|
|
LINUX_BACKPORTS_MAKE_OPTS = \
|
|
LEX=flex \
|
|
YACC=bison \
|
|
BACKPORT_DIR=$(@D) \
|
|
KLIB_BUILD=$(LINUX_DIR) \
|
|
KLIB=$(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED) \
|
|
INSTALL_MOD_DIR=backports \
|
|
`sed -r -e '/^\#/d;' $(@D)/.config`
|
|
|
|
LINUX_BACKPORTS_MODULE_MAKE_OPTS = $(LINUX_BACKPORTS_MAKE_OPTS)
|
|
|
|
# This file is not automatically generated by 'oldconfig' that we use in
|
|
# the kconfig-package infrastructure. In the linux buildsystem, it is
|
|
# generated by running silentoldconfig, but that's not the case for
|
|
# linux-backports: it uses a hand-crafted rule to generate that file.
|
|
define LINUX_BACKPORTS_KCONFIG_FIXUP_CMDS
|
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(LINUX_BACKPORTS_MAKE_OPTS) backport-include/backport/autoconf.h
|
|
endef
|
|
|
|
# Checks to give errors that the user can understand
|
|
ifeq ($(BR_BUILDING),y)
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_DEFCONFIG),y)
|
|
ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG)),)
|
|
$(error No linux-backports defconfig name specified, check your BR2_PACKAGE_LINUX_BACKPORTS_DEFCONFIG setting)
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LINUX_BACKPORTS_USE_CUSTOM_CONFIG),y)
|
|
ifeq ($(call qstrip,$(BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE)),)
|
|
$(error No linux-backports configuration file specified, check your BR2_PACKAGE_LINUX_BACKPORTS_CUSTOM_CONFIG_FILE setting)
|
|
endif
|
|
endif
|
|
|
|
endif # BR_BUILDING
|
|
|
|
$(eval $(kernel-module))
|
|
$(eval $(kconfig-package))
|
|
|
|
# linux-backports' own .config file needs options from the kernel's own
|
|
# .config file. The dependencies handling in the infrastructure does not
|
|
# allow to express this kind of dependencies. Besides, linux.mk might
|
|
# not have been parsed yet, so the Linux build dir LINUX_DIR is not yet
|
|
# known. Thus, we use a "secondary expansion" so the rule is re-evaluated
|
|
# after all Makefiles are parsed, and thus at that time we will have the
|
|
# LINUX_DIR variable set to the proper value. Moreover, since linux-4.19,
|
|
# the kernel's build system internally touches its .config file, so we
|
|
# can't use it as a stamp file. We use the LINUX_KCONFIG_STAMP_DOTCONFIG
|
|
# instead.
|
|
#
|
|
# Furthermore, we want to check the kernel version is compatible with
|
|
# linux-backports. To avoid overriding linux-backports'
|
|
# KCONFIG_STAMP_DOTCONFIG rule defined in the kconfig-package infra, we
|
|
# use an intermediate stamp-file.
|
|
#
|
|
# Finally, it must also come after the call to kconfig-package, so we get
|
|
# LINUX_BACKPORTS_DIR properly defined (because the target part of the
|
|
# rule is not re-evaluated).
|
|
#
|
|
$(LINUX_BACKPORTS_DIR)/$(LINUX_BACKPORTS_KCONFIG_STAMP_DOTCONFIG): $(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version
|
|
|
|
.SECONDEXPANSION:
|
|
$(LINUX_BACKPORTS_DIR)/.stamp_check_kernel_version: $$(LINUX_DIR)/$$(LINUX_KCONFIG_STAMP_DOTCONFIG)
|
|
$(Q)KVER=$(LINUX_VERSION_PROBED); \
|
|
MIN_KVER_MAJOR=$(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR); \
|
|
MIN_KVER_MINOR=$(LINUX_BACKPORTS_MINIMAL_KVER_MINOR); \
|
|
KVER_MAJOR=`echo $${KVER} | sed 's/^\([0-9]*\)\..*/\1/'`; \
|
|
KVER_MINOR=`echo $${KVER} | sed 's/^[0-9]*\.\([0-9]*\).*/\1/'`; \
|
|
if [ $${KVER_MAJOR} -lt $(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR) \
|
|
-o \( $${KVER_MAJOR} -eq $(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR) \
|
|
-a $${KVER_MINOR} -lt $(LINUX_BACKPORTS_MINIMAL_KVER_MINOR) \
|
|
\) ]; then \
|
|
printf "Linux version '%s' is too old for linux-backports (needs %s.%s or later)\n" \
|
|
"$${KVER}" \
|
|
"$(LINUX_BACKPORTS_MINIMAL_KVER_MAJOR)" \
|
|
"$(LINUX_BACKPORTS_MINIMAL_KVER_MINOR)"; \
|
|
exit 1; \
|
|
fi
|
|
$(Q)touch $(@)
|