mirror of
https://github.com/PartialVolume/shredos.x86_64.git
synced 2026-02-20 17:42:10 +00:00
Like we did for the linux kernel, change linux-headers to only check the license hashes for the latest known version as the content of COPYING has changed between versions. To simplify the test, we introduce an intermediate, blind option that get selected when the latest kernel sources are used. Reported-by: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Markus Mayer <mmayer@broadcom.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
149 lines
5.9 KiB
Makefile
149 lines
5.9 KiB
Makefile
################################################################################
|
|
#
|
|
# linux-headers
|
|
#
|
|
################################################################################
|
|
|
|
# This package is used to provide Linux kernel headers for the
|
|
# internal toolchain backend.
|
|
|
|
# Set variables depending on whether we are using headers from a kernel
|
|
# build or a standalone header package.
|
|
ifeq ($(BR2_KERNEL_HEADERS_AS_KERNEL),y)
|
|
LINUX_HEADERS_CUSTOM_TARBALL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL))
|
|
LINUX_HEADERS_CUSTOM_GIT = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_GIT))
|
|
LINUX_HEADERS_CUSTOM_HG = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_HG))
|
|
LINUX_HEADERS_CUSTOM_SVN = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_SVN))
|
|
LINUX_HEADERS_VERSION = $(call qstrip,$(BR2_LINUX_KERNEL_VERSION))
|
|
LINUX_HEADERS_CUSTOM_TARBALL_LOCATION = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION))
|
|
LINUX_HEADERS_REPO_URL = $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_REPO_URL))
|
|
else # ! BR2_KERNEL_HEADERS_AS_KERNEL
|
|
LINUX_HEADERS_CUSTOM_TARBALL = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL))
|
|
LINUX_HEADERS_CUSTOM_GIT = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_GIT))
|
|
LINUX_HEADERS_CUSTOM_HG =
|
|
LINUX_HEADERS_CUSTOM_SVN =
|
|
LINUX_HEADERS_VERSION = $(call qstrip,$(BR2_DEFAULT_KERNEL_HEADERS))
|
|
LINUX_HEADERS_CUSTOM_TARBALL_LOCATION = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL_LOCATION))
|
|
LINUX_HEADERS_REPO_URL = $(call qstrip,$(BR2_KERNEL_HEADERS_CUSTOM_REPO_URL))
|
|
endif # BR2_KERNEL_HEADERS_AS_KERNEL
|
|
|
|
# Compute LINUX_HEADERS_SOURCE and LINUX_HEADERS_SITE from the configuration
|
|
ifeq ($(LINUX_HEADERS_CUSTOM_TARBALL),y)
|
|
LINUX_HEADERS_SOURCE = $(notdir $(LINUX_HEADERS_CUSTOM_TARBALL_LOCATION))
|
|
LINUX_HEADERS_SITE = $(patsubst %/,%,$(dir $(LINUX_HEADERS_CUSTOM_TARBALL_LOCATION)))
|
|
else ifeq ($(LINUX_HEADERS_CUSTOM_GIT),y)
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
|
|
LINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)
|
|
LINUX_HEADERS_SITE_METHOD = git
|
|
else ifeq ($(LINUX_HEADERS_CUSTOM_HG),y)
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
|
|
LINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)
|
|
LINUX_HEADERS_SITE_METHOD = hg
|
|
else ifeq ($(LINUX_HEADERS_CUSTOM_SVN),y)
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
|
|
LINUX_HEADERS_SITE = $(LINUX_HEADERS_REPO_URL)
|
|
LINUX_HEADERS_SITE_METHOD = svn
|
|
else ifneq ($(findstring -rc,$(LINUX_HEADERS_VERSION)),)
|
|
# Since 4.12-rc1, -rc kernels are generated from cgit. This also works for
|
|
# older -rc kernels.
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.gz
|
|
LINUX_HEADERS_SITE = https://git.kernel.org/torvalds/t
|
|
else
|
|
LINUX_HEADERS_SOURCE = linux-$(LINUX_HEADERS_VERSION).tar.xz
|
|
ifeq ($(findstring x2.6.,x$(LINUX_HEADERS_VERSION)),x2.6.)
|
|
LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v2.6
|
|
else
|
|
LINUX_HEADERS_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/v$(firstword $(subst ., ,$(LINUX_HEADERS_VERSION))).x
|
|
endif # x2.6
|
|
endif # LINUX_HEADERS_CUSTOM_TARBALL
|
|
|
|
# Apply any necessary patches if we are using the headers from a kernel
|
|
# build.
|
|
ifeq ($(BR2_KERNEL_HEADERS_AS_KERNEL),y)
|
|
LINUX_HEADERS_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) \
|
|
$(wildcard $(addsuffix /linux,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))))
|
|
|
|
# We rely on the generic package infrastructure to download and apply
|
|
# remote patches (downloaded from ftp, http or https). For local
|
|
# patches, we can't rely on that infrastructure, because there might
|
|
# be directories in the patch list (unlike for other packages).
|
|
LINUX_HEADERS_PATCH = $(filter ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES))
|
|
|
|
define LINUX_HEADERS_APPLY_LOCAL_PATCHES
|
|
for p in $(filter-out ftp://% http://% https://%,$(LINUX_HEADERS_PATCHES)) ; do \
|
|
if test -d $$p ; then \
|
|
$(APPLY_PATCHES) $(@D) $$p \*.patch || exit 1 ; \
|
|
else \
|
|
$(APPLY_PATCHES) $(@D) `dirname $$p` `basename $$p` || exit 1; \
|
|
fi \
|
|
done
|
|
endef
|
|
|
|
LINUX_HEADERS_POST_PATCH_HOOKS += LINUX_HEADERS_APPLY_LOCAL_PATCHES
|
|
endif # BR2_KERNEL_HEADERS_AS_KERNEL
|
|
|
|
# Skip hash checking for custom kernel headers.
|
|
ifeq ($(BR2_KERNEL_HEADERS_VERSION)$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL)$(BR2_KERNEL_HEADERS_CUSTOM_GIT),y)
|
|
BR_NO_CHECK_HASH_FOR += $(LINUX_HEADERS_SOURCE)
|
|
endif
|
|
|
|
# linux-headers really is the same as the linux package
|
|
LINUX_HEADERS_DL_SUBDIR = linux
|
|
|
|
LINUX_HEADERS_LICENSE = GPL-2.0
|
|
ifeq ($(BR2_KERNEL_HEADERS_LATEST),y)
|
|
LINUX_HEADERS_LICENSE_FILES = \
|
|
COPYING \
|
|
LICENSES/preferred/GPL-2.0 \
|
|
LICENSES/exceptions/Linux-syscall-note
|
|
endif
|
|
|
|
LINUX_HEADERS_INSTALL_STAGING = YES
|
|
|
|
# linux-headers is part of the toolchain so disable the toolchain dependency
|
|
LINUX_HEADERS_ADD_TOOLCHAIN_DEPENDENCY = NO
|
|
|
|
# For some architectures (eg. Arc, Cris, Hexagon, ia64, parisc,
|
|
# score and xtensa), the Linux buildsystem tries to call the
|
|
# cross-compiler, although it is not needed at all.
|
|
# This results in seemingly errors like:
|
|
# [...]/scripts/gcc-version.sh: line 26: arc-linux-uclibc-gcc: command not found
|
|
# Those can be safely ignored.
|
|
|
|
# This step is required to have a separate linux headers location for
|
|
# uClibc building. This way uClibc doesn't modify linux headers on installation
|
|
# of "its" headers
|
|
define LINUX_HEADERS_CONFIGURE_CMDS
|
|
(cd $(@D); \
|
|
$(TARGET_MAKE_ENV) $(MAKE) \
|
|
ARCH=$(KERNEL_ARCH) \
|
|
HOSTCC="$(HOSTCC)" \
|
|
HOSTCFLAGS="$(HOSTCFLAGS)" \
|
|
HOSTCXX="$(HOSTCXX)" \
|
|
INSTALL_HDR_PATH=$(@D)/usr \
|
|
headers_install)
|
|
endef
|
|
|
|
define LINUX_HEADERS_INSTALL_STAGING_CMDS
|
|
(cd $(@D); \
|
|
$(TARGET_MAKE_ENV) $(MAKE) \
|
|
ARCH=$(KERNEL_ARCH) \
|
|
HOSTCC="$(HOSTCC)" \
|
|
HOSTCFLAGS="$(HOSTCFLAGS)" \
|
|
HOSTCXX="$(HOSTCXX)" \
|
|
INSTALL_HDR_PATH=$(STAGING_DIR)/usr \
|
|
headers_install)
|
|
endef
|
|
|
|
ifeq ($(BR2_KERNEL_HEADERS_VERSION)$(BR2_KERNEL_HEADERS_AS_KERNEL)$(BR2_KERNEL_HEADERS_CUSTOM_TARBALL)$(BR2_KERNEL_HEADERS_CUSTOM_GIT),y)
|
|
define LINUX_HEADERS_CHECK_VERSION
|
|
$(call check_kernel_headers_version,\
|
|
$(BUILD_DIR),\
|
|
$(STAGING_DIR),\
|
|
$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)))
|
|
endef
|
|
LINUX_HEADERS_POST_INSTALL_STAGING_HOOKS += LINUX_HEADERS_CHECK_VERSION
|
|
endif
|
|
|
|
$(eval $(generic-package))
|