aboutsummaryrefslogtreecommitdiff
path: root/linux/linux.mk
diff options
context:
space:
mode:
authorGravatar Gustavo Zacarias <gustavo.zacarias@free-electrons.com>2016-02-07 10:41:48 -0300
committerGravatar Peter Korsgaard <peter@korsgaard.com>2016-02-10 08:12:57 +0100
commitd6a5d71aba8e21b8aa28d93075a603297d1d3b3c (patch)
tree3ea08438912cd612552307fa1a3ed1f4b08edb8c /linux/linux.mk
parent63b77dd64c98825edef7d0cddd945ce096785ecd (diff)
downloadbuildroot-d6a5d71aba8e21b8aa28d93075a603297d1d3b3c.tar.gz
buildroot-d6a5d71aba8e21b8aa28d93075a603297d1d3b3c.tar.bz2
linux: add conditional patch for timeconst.pl
Kernels older than 3.9 (not counting stable releases) used the timeconst.pl perl script for their build process. The problem with this script is that it used deprecated perl features, namely defined(@array) which was removed for the perl 5.22 release, causing build failure of older kernels on newer distributions. To fix this instead of going the hard way (moving to the new timeconst.bc script) use the easy way by patching timeconst.pl with an upstream patch used for stable releases. First try a dry-run on the patch to see if it applies, if it does then call a proper APPLY_PATCHES to it. Tested against an arbitrary 2.6.30 kernel (applies and builds), against 4.4.1 for a missing timeconst.pl (does not apply since it's missing) and 3.8.13 (does not apply since it's fixed already). Known broken distributions: fedora 23, debian testing (stretch) and unstable (sid). Signed-off-by: Gustavo Zacarias <gustavo.zacarias@free-electrons.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'linux/linux.mk')
-rw-r--r--linux/linux.mk10
1 files changed, 10 insertions, 0 deletions
diff --git a/linux/linux.mk b/linux/linux.mk
index 578fea1a58..7e20255956 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -184,6 +184,16 @@ endef
LINUX_POST_PATCH_HOOKS += LINUX_APPLY_LOCAL_PATCHES
+# Older linux kernels use deprecated perl constructs in timeconst.pl
+# that were removed for perl 5.22+ so it breaks on newer distributions
+# Try a dry-run patch to see if this applies, if it does go ahead
+define LINUX_TRY_PATCH_TIMECONST
+ @if patch -p1 --dry-run -f -s -d $(@D) <$(LINUX_PKGDIR)/0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional >/dev/null ; then \
+ $(APPLY_PATCHES) $(@D) $(LINUX_PKGDIR) 0001-timeconst.pl-Eliminate-Perl-warning.patch.conditional ; \
+ fi
+endef
+LINUX_POST_PATCH_HOOKS += LINUX_TRY_PATCH_TIMECONST
+
ifeq ($(BR2_LINUX_KERNEL_USE_DEFCONFIG),y)
LINUX_KCONFIG_DEFCONFIG = $(call qstrip,$(BR2_LINUX_KERNEL_DEFCONFIG))_defconfig
else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG),y)