New package: linux5.11-5.11.1.
Switch to using 5.11 tarball + minor version patch. Allows the tarball
to be shared across updates.
Remove the DocBook makefile stuff. It's been carried over since kernel
4.13 (was introduced in ef67cec73b
),
probably to allow building DKMS modules which depended on it. DKMS
modules which build cleanly on 5.11 will definitely have been updated to
not depend on that Makefile, so remove it.
We are not enabling SGX for Intel due to it being mostly useless for now
and looking generally sketchy. There's also no literature we could find
supporting it not affecting overall system security, but literature
pointing out the opposite definitely does:
- https://arxiv.org/pdf/1702.08719.pdf "Using SGX to Conceal Cache Attacks"
memory poisoning patch necessary for ppc hasn't been rebased yet, so
remove those targets from archs.
This commit is contained in:
parent
b5ca8f6327
commit
e719fb5615
16 changed files with 60570 additions and 0 deletions
1
srcpkgs/linux5.11-dbg
Symbolic link
1
srcpkgs/linux5.11-dbg
Symbolic link
|
@ -0,0 +1 @@
|
|||
linux5.11
|
1
srcpkgs/linux5.11-headers
Symbolic link
1
srcpkgs/linux5.11-headers
Symbolic link
|
@ -0,0 +1 @@
|
|||
linux5.11
|
11606
srcpkgs/linux5.11/files/arm64-dotconfig
Normal file
11606
srcpkgs/linux5.11/files/arm64-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
10027
srcpkgs/linux5.11/files/i386-dotconfig
Normal file
10027
srcpkgs/linux5.11/files/i386-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
7
srcpkgs/linux5.11/files/mv-debug
Executable file
7
srcpkgs/linux5.11/files/mv-debug
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
mod=$1
|
||||
mkdir -p usr/lib/debug/${mod%/*}
|
||||
$OBJCOPY --only-keep-debug --compress-debug-sections $mod usr/lib/debug/$mod
|
||||
$OBJCOPY --add-gnu-debuglink=${DESTDIR}/usr/lib/debug/$mod $mod
|
||||
/usr/bin/$STRIP --strip-debug $mod
|
||||
gzip -9 $mod
|
8137
srcpkgs/linux5.11/files/ppc-dotconfig
Normal file
8137
srcpkgs/linux5.11/files/ppc-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
10104
srcpkgs/linux5.11/files/ppc64-dotconfig
Normal file
10104
srcpkgs/linux5.11/files/ppc64-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
9835
srcpkgs/linux5.11/files/ppc64le-dotconfig
Normal file
9835
srcpkgs/linux5.11/files/ppc64le-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
10226
srcpkgs/linux5.11/files/x86_64-dotconfig
Normal file
10226
srcpkgs/linux5.11/files/x86_64-dotconfig
Normal file
File diff suppressed because it is too large
Load diff
10
srcpkgs/linux5.11/patches/musl.patch
Normal file
10
srcpkgs/linux5.11/patches/musl.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- linux-5.10.1/kernel/bpf/preload/iterators/iterators.c.orig
|
||||
+++ linux-5.10.1/kernel/bpf/preload/iterators/iterators.c
|
||||
@@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/* Copyright (c) 2020 Facebook */
|
||||
-#include <argp.h>
|
||||
+#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
26
srcpkgs/linux5.11/patches/ppc-vas-on-4k.patch
Normal file
26
srcpkgs/linux5.11/patches/ppc-vas-on-4k.patch
Normal file
|
@ -0,0 +1,26 @@
|
|||
diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
|
||||
index 938803eab0ad..40c81b358004 100644
|
||||
--- a/arch/powerpc/platforms/powernv/Kconfig
|
||||
+++ b/arch/powerpc/platforms/powernv/Kconfig
|
||||
@@ -35,7 +35,7 @@ config PPC_MEMTRACE
|
||||
|
||||
config PPC_VAS
|
||||
bool "IBM Virtual Accelerator Switchboard (VAS)"
|
||||
- depends on PPC_POWERNV && PPC_64K_PAGES
|
||||
+ depends on PPC_POWERNV
|
||||
default y
|
||||
help
|
||||
This enables support for IBM Virtual Accelerator Switchboard (VAS).
|
||||
diff --git a/arch/powerpc/platforms/powernv/vas.c b/arch/powerpc/platforms/powernv/vas.c
|
||||
index 598e4cd563fb..d81e55de6db4 100644
|
||||
--- a/arch/powerpc/platforms/powernv/vas.c
|
||||
+++ b/arch/powerpc/platforms/powernv/vas.c
|
||||
@@ -70,7 +70,7 @@ static int init_vas_instance(struct platform_device *pdev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
- if (pdev->num_resources != 4) {
|
||||
+ if (pdev->num_resources < 4) {
|
||||
pr_err("Unexpected DT configuration for [%s, %d]\n",
|
||||
pdev->name, vasid);
|
||||
return -ENODEV;
|
34
srcpkgs/linux5.11/patches/ppc32-cpu-hotplug.patch
Normal file
34
srcpkgs/linux5.11/patches/ppc32-cpu-hotplug.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
Drop after the respective upstream fix.
|
||||
|
||||
From e3f22abab59aad3af3b555c4aa9af4441d7b4085 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Kolesa <daniel@octaforge.org>
|
||||
Date: Thu, 17 Dec 2020 22:28:12 +0100
|
||||
Subject: [PATCH] powerpc: only call cleanup_cpu_mmu_context on PPC64 powermacs
|
||||
|
||||
Originally introduced in 01b0f0eae0812e80efeee4ee17687e5386335e08.
|
||||
|
||||
This was only implemented on book3s64, so on ppc32 build fails
|
||||
with implicit function declaration.
|
||||
|
||||
Signed-off-by: Daniel Kolesa <daniel@octaforge.org>
|
||||
---
|
||||
arch/powerpc/platforms/powermac/smp.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/powerpc/platforms/powermac/smp.c b/arch/powerpc/platforms/powermac/smp.c
|
||||
index adae2a67..7ad90fd0 100644
|
||||
--- a/arch/powerpc/platforms/powermac/smp.c
|
||||
+++ b/arch/powerpc/platforms/powermac/smp.c
|
||||
@@ -911,7 +911,9 @@ static int smp_core99_cpu_disable(void)
|
||||
|
||||
mpic_cpu_set_priority(0xf);
|
||||
|
||||
+#ifdef CONFIG_PPC64
|
||||
cleanup_cpu_mmu_context();
|
||||
+#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.29.2
|
||||
|
86
srcpkgs/linux5.11/patches/ppc64-be-elfv2.patch
Normal file
86
srcpkgs/linux5.11/patches/ppc64-be-elfv2.patch
Normal file
|
@ -0,0 +1,86 @@
|
|||
This makes the Linux kernel build as ELFv2 on big endian ppc64. The upstream
|
||||
doesn't seem to be interested in this but it's a small patch that is unlikely
|
||||
to break/easy to remake and in worst case can always be ditched.
|
||||
|
||||
Using ELFv2 has some potential performance benefits and is already always used
|
||||
on little endian. It requires a relatively modern toolchain, which we already
|
||||
have.
|
||||
|
||||
Ping q66 if it does not apply.
|
||||
|
||||
--- a/arch/powerpc/Makefile 2020-01-05 14:40:50.395763093 +0100
|
||||
+++ b/arch/powerpc/Makefile 2020-01-05 14:48:39.025251092 +0100
|
||||
@@ -92,10 +92,8 @@
|
||||
|
||||
ifdef CONFIG_PPC64
|
||||
ifndef CONFIG_CC_IS_CLANG
|
||||
-cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
|
||||
-cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mcall-aixdesc)
|
||||
-aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(call cc-option,-mabi=elfv1)
|
||||
-aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mabi=elfv2
|
||||
+cflags-y += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
|
||||
+aflags-y += $(call cc-option,-mabi=elfv2,$(call cc-option,-mabi=elfv1))
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -144,14 +142,8 @@
|
||||
|
||||
CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-mtraceback=no)
|
||||
ifndef CONFIG_CC_IS_CLANG
|
||||
-ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
|
||||
-AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2)
|
||||
-else
|
||||
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
|
||||
-CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcall-aixdesc)
|
||||
-AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1)
|
||||
-endif
|
||||
+AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv2,$(call cc-option,-mabi=elfv1))
|
||||
endif
|
||||
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
|
||||
CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions)
|
||||
|
||||
--- a/arch/powerpc/boot/Makefile
|
||||
+++ b/arch/powerpc/boot/Makefile
|
||||
@@ -48,8 +48,8 @@ ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
BOOTCFLAGS += -mbig-endian
|
||||
else
|
||||
BOOTCFLAGS += -mlittle-endian
|
||||
-BOOTCFLAGS += $(call cc-option,-mabi=elfv2)
|
||||
endif
|
||||
+BOOTCFLAGS += $(call cc-option,-mabi=elfv2)
|
||||
|
||||
BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
|
||||
|
||||
--- a/drivers/crypto/vmx/Makefile 2020-01-01 10:56:10.560965046 +0100
|
||||
+++ b/drivers/crypto/vmx/Makefile 2020-01-01 10:57:05.189968856 +0100
|
||||
@@ -5,7 +5,7 @@
|
||||
ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
|
||||
override flavour := linux-ppc64le
|
||||
else
|
||||
-override flavour := linux-ppc64
|
||||
+override flavour := linux-ppc64v2
|
||||
endif
|
||||
|
||||
quiet_cmd_perl = PERL $@
|
||||
|
||||
--- a/drivers/crypto/vmx/ppc-xlate.pl
|
||||
+++ b/drivers/crypto/vmx/ppc-xlate.pl
|
||||
@@ -40,7 +40,7 @@ my $globl = sub {
|
||||
};
|
||||
my $text = sub {
|
||||
my $ret = ($flavour =~ /aix/) ? ".csect\t.text[PR],7" : ".text";
|
||||
- $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64le/);
|
||||
+ $ret = ".abiversion 2\n".$ret if ($flavour =~ /linux.*64(le|v2)/);
|
||||
$ret;
|
||||
};
|
||||
my $machine = sub {
|
||||
@@ -142,7 +142,7 @@ my $vmr = sub {
|
||||
|
||||
# Some ABIs specify vrsave, special-purpose register #256, as reserved
|
||||
# for system use.
|
||||
-my $no_vrsave = ($flavour =~ /linux-ppc64le/);
|
||||
+my $no_vrsave = ($flavour =~ /linux-ppc64(le|v2)/);
|
||||
my $mtspr = sub {
|
||||
my ($f,$idx,$ra) = @_;
|
||||
if ($idx == 256 && $no_vrsave) {
|
23
srcpkgs/linux5.11/patches/ppcle-broken-vdso.patch
Normal file
23
srcpkgs/linux5.11/patches/ppcle-broken-vdso.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
Disable vDSOs which are broken on 32 bit LE.
|
||||
|
||||
Source: @eerykitty
|
||||
|
||||
diff --git a/arch/powerpc/kernel/vdso32/vdso32.lds.S b/arch/powerpc/kernel/vdso32/vdso32.lds.S
|
||||
index a4b806b..0614638 100644
|
||||
--- a/arch/powerpc/kernel/vdso32/vdso32.lds.S
|
||||
+++ b/arch/powerpc/kernel/vdso32/vdso32.lds.S
|
||||
@@ -116,12 +116,14 @@ VERSION
|
||||
VDSO_VERSION_STRING {
|
||||
global:
|
||||
__kernel_get_syscall_map;
|
||||
+#ifndef __LITTLE_ENDIAN__
|
||||
__kernel_gettimeofday;
|
||||
__kernel_clock_gettime;
|
||||
__kernel_clock_gettime64;
|
||||
__kernel_clock_getres;
|
||||
__kernel_time;
|
||||
__kernel_get_tbfreq;
|
||||
+#endif
|
||||
__kernel_sync_dicache;
|
||||
__kernel_sigtramp32;
|
||||
__kernel_sigtramp_rt32;
|
107
srcpkgs/linux5.11/patches/ppcle-ll-compat-sys.patch
Normal file
107
srcpkgs/linux5.11/patches/ppcle-ll-compat-sys.patch
Normal file
|
@ -0,0 +1,107 @@
|
|||
From 98014e4b27063ed74313878233e91b7b52b2a031 Mon Sep 17 00:00:00 2001
|
||||
From: Will Springer <skirmisher@protonmail.com>
|
||||
Date: Tue, 9 Jun 2020 02:11:36 -0700
|
||||
Subject: [PATCH] powerpc/compat32: swap hi/lo parts of 64-bit syscall args on
|
||||
32LE
|
||||
|
||||
This allows compat_sys calls with 64-bit args to function correctly
|
||||
when called by ppcle userlands on ppc64le.
|
||||
|
||||
Tested with `file /bin/bash` (pread64) and `truncate -s 5G test` (ftruncate64).
|
||||
---
|
||||
arch/powerpc/kernel/sys_ppc32.c | 49 +++++++++++++++++++--------------
|
||||
1 file changed, 28 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c
|
||||
index d36c6391eaf5..16ff0399a257 100644
|
||||
--- a/arch/powerpc/kernel/sys_ppc32.c
|
||||
+++ b/arch/powerpc/kernel/sys_ppc32.c
|
||||
@@ -59,57 +59,64 @@ unsigned long compat_sys_mmap2(unsigned long addr, size_t len,
|
||||
/*
|
||||
* long long munging:
|
||||
* The 32 bit ABI passes long longs in an odd even register pair.
|
||||
+ * High and low parts are swapped depending on endian mode,
|
||||
+ * so define a macro (similar to mips linux32) to handle that.
|
||||
*/
|
||||
+#ifdef __LITTLE_ENDIAN__
|
||||
+#define merge_64(low, high) ((u64)high << 32) | low
|
||||
+#else
|
||||
+#define merge_64(high, low) ((u64)high << 32) | low
|
||||
+#endif
|
||||
|
||||
compat_ssize_t compat_sys_pread64(unsigned int fd, char __user *ubuf, compat_size_t count,
|
||||
- u32 reg6, u32 poshi, u32 poslo)
|
||||
+ u32 reg6, u32 pos1, u32 pos2)
|
||||
{
|
||||
- return ksys_pread64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
|
||||
+ return ksys_pread64(fd, ubuf, count, merge_64(pos1, pos2));
|
||||
}
|
||||
|
||||
compat_ssize_t compat_sys_pwrite64(unsigned int fd, const char __user *ubuf, compat_size_t count,
|
||||
- u32 reg6, u32 poshi, u32 poslo)
|
||||
+ u32 reg6, u32 pos1, u32 pos2)
|
||||
{
|
||||
- return ksys_pwrite64(fd, ubuf, count, ((loff_t)poshi << 32) | poslo);
|
||||
+ return ksys_pwrite64(fd, ubuf, count, merge_64(pos1, pos2));
|
||||
}
|
||||
|
||||
-compat_ssize_t compat_sys_readahead(int fd, u32 r4, u32 offhi, u32 offlo, u32 count)
|
||||
+compat_ssize_t compat_sys_readahead(int fd, u32 r4, u32 offset1, u32 offset2, u32 count)
|
||||
{
|
||||
- return ksys_readahead(fd, ((loff_t)offhi << 32) | offlo, count);
|
||||
+ return ksys_readahead(fd, merge_64(offset1, offset2), count);
|
||||
}
|
||||
|
||||
asmlinkage int compat_sys_truncate64(const char __user * path, u32 reg4,
|
||||
- unsigned long high, unsigned long low)
|
||||
+ unsigned long len1, unsigned long len2)
|
||||
{
|
||||
- return ksys_truncate(path, (high << 32) | low);
|
||||
+ return ksys_truncate(path, merge_64(len1, len2));
|
||||
}
|
||||
|
||||
-asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offhi, u32 offlo,
|
||||
- u32 lenhi, u32 lenlo)
|
||||
+asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offset1, u32 offset2,
|
||||
+ u32 len1, u32 len2)
|
||||
{
|
||||
- return ksys_fallocate(fd, mode, ((loff_t)offhi << 32) | offlo,
|
||||
- ((loff_t)lenhi << 32) | lenlo);
|
||||
+ return ksys_fallocate(fd, mode, ((loff_t)offset1 << 32) | offset2,
|
||||
+ merge_64(len1, len2));
|
||||
}
|
||||
|
||||
-asmlinkage int compat_sys_ftruncate64(unsigned int fd, u32 reg4, unsigned long high,
|
||||
- unsigned long low)
|
||||
+asmlinkage int compat_sys_ftruncate64(unsigned int fd, u32 reg4, unsigned long len1,
|
||||
+ unsigned long len2)
|
||||
{
|
||||
- return ksys_ftruncate(fd, (high << 32) | low);
|
||||
+ return ksys_ftruncate(fd, merge_64(len1, len2));
|
||||
}
|
||||
|
||||
-long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low,
|
||||
+long ppc32_fadvise64(int fd, u32 unused, u32 offset1, u32 offset2,
|
||||
size_t len, int advice)
|
||||
{
|
||||
- return ksys_fadvise64_64(fd, (u64)offset_high << 32 | offset_low, len,
|
||||
+ return ksys_fadvise64_64(fd, merge_64(offset1, offset2), len,
|
||||
advice);
|
||||
}
|
||||
|
||||
asmlinkage long compat_sys_sync_file_range2(int fd, unsigned int flags,
|
||||
- unsigned offset_hi, unsigned offset_lo,
|
||||
- unsigned nbytes_hi, unsigned nbytes_lo)
|
||||
+ unsigned offset1, unsigned offset2,
|
||||
+ unsigned nbytes1, unsigned nbytes2)
|
||||
{
|
||||
- loff_t offset = ((loff_t)offset_hi << 32) | offset_lo;
|
||||
- loff_t nbytes = ((loff_t)nbytes_hi << 32) | nbytes_lo;
|
||||
+ loff_t offset = merge_64(offset1, offset2);
|
||||
+ loff_t nbytes = merge_64(nbytes1, nbytes2);
|
||||
|
||||
return ksys_sync_file_range(fd, offset, nbytes, flags);
|
||||
}
|
||||
--
|
||||
2.26.2
|
||||
|
340
srcpkgs/linux5.11/template
Normal file
340
srcpkgs/linux5.11/template
Normal file
|
@ -0,0 +1,340 @@
|
|||
# Template file for 'linux5.11'
|
||||
pkgname=linux5.11
|
||||
version=5.11.1
|
||||
revision=1
|
||||
wrksrc="linux-${version%.*}"
|
||||
short_desc="Linux kernel and modules (${version%.*} series)"
|
||||
maintainer="Érico Nogueira <ericonr@disroot.org>"
|
||||
license="GPL-2.0-only"
|
||||
homepage="https://www.kernel.org"
|
||||
distfiles="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${version%.*}.tar.xz
|
||||
https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-${version}.xz"
|
||||
checksum="04f07b54f0d40adfab02ee6cbd2a942c96728d87c1ef9e120d0cb9ba3fe067b4
|
||||
8808ee2c7e904f2fb3c830b41c8bbc2b2ad37638ee95fdfde68167f0be35dd3f"
|
||||
skip_extraction="patch-${version}.xz"
|
||||
python_version=3
|
||||
patch_args="-Np1"
|
||||
|
||||
# XXX Restrict archs until a proper <arch>-dotconfig is available in FILESDIR.
|
||||
# XXX Add ppc back only if page poisoning is fixed
|
||||
archs="x86_64* i686* aarch64*"
|
||||
|
||||
nodebug=yes # -dbg package is generated below manually
|
||||
nostrip=yes
|
||||
noverifyrdeps=yes
|
||||
noshlibprovides=yes
|
||||
preserve=yes
|
||||
|
||||
hostmakedepends="tar xz bc elfutils-devel flex gmp-devel kmod libmpc-devel
|
||||
libressl-devel perl uboot-mkimage cpio pahole python3"
|
||||
|
||||
_kernver="${version}_${revision}"
|
||||
triggers="kernel-hooks"
|
||||
kernel_hooks_version="${_kernver}"
|
||||
|
||||
# These files could be modified when an external module is built.
|
||||
mutable_files="
|
||||
/usr/lib/modules/${_kernver}/modules.builtin.bin
|
||||
/usr/lib/modules/${_kernver}/modules.builtin.alias.bin
|
||||
/usr/lib/modules/${_kernver}/modules.softdep
|
||||
/usr/lib/modules/${_kernver}/modules.dep
|
||||
/usr/lib/modules/${_kernver}/modules.dep.bin
|
||||
/usr/lib/modules/${_kernver}/modules.symbols
|
||||
/usr/lib/modules/${_kernver}/modules.symbols.bin
|
||||
/usr/lib/modules/${_kernver}/modules.alias
|
||||
/usr/lib/modules/${_kernver}/modules.alias.bin
|
||||
/usr/lib/modules/${_kernver}/modules.devname"
|
||||
|
||||
# reproducible build
|
||||
export KBUILD_BUILD_TIMESTAMP=${SOURCE_DATE_EPOCH:-0}
|
||||
export KBUILD_BUILD_USER=voidlinux
|
||||
export KBUILD_BUILD_HOST=voidlinux
|
||||
|
||||
if [ "$CROSS_BUILD" ]; then
|
||||
_cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
|
||||
fi
|
||||
if [ "${_patchver}" ]; then
|
||||
_version="EXTRAVERSION=${_patchver}"
|
||||
fi
|
||||
|
||||
pre_patch() {
|
||||
xzcat $XBPS_SRCDISTDIR/$pkgname-$version/patch-${version}.xz | patch -Np1
|
||||
}
|
||||
|
||||
do_configure() {
|
||||
# If there's a file called <arch>-dotconfig, use it to
|
||||
# configure the kernel; otherwise use arch defaults and all stuff
|
||||
# as modules (allmodconfig).
|
||||
local arch subarch
|
||||
|
||||
case "$XBPS_TARGET_MACHINE" in
|
||||
i686*) arch=i386;;
|
||||
x86_64*) arch=x86_64;;
|
||||
arm*) arch=arm;;
|
||||
aarch64*) arch=arm64;;
|
||||
ppc64le*) arch=powerpc; subarch=ppc64le;;
|
||||
ppc64*) arch=powerpc; subarch=ppc64;;
|
||||
ppc*) arch=powerpc;;
|
||||
mips*) arch=mips;;
|
||||
esac
|
||||
|
||||
if [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom ]; then
|
||||
msg_normal "Detected a custom .config file for your arch, using it.\n"
|
||||
cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom .config
|
||||
make ${makejobs} ARCH=$arch ${_cross} oldconfig
|
||||
elif [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig ]; then
|
||||
msg_normal "Detected a .config file for your arch, using it.\n"
|
||||
cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig .config
|
||||
make ${makejobs} ARCH=$arch ${_cross} oldconfig
|
||||
elif [ -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig ]; then
|
||||
msg_normal "Detected a .config file for your cpu family, using it.\n"
|
||||
cp -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig .config
|
||||
make ${makejobs} ARCH=$arch ${_cross} oldconfig
|
||||
else
|
||||
msg_normal "Defaulting to 'allmodconfig'.\n"
|
||||
make ${makejobs} ARCH=$arch ${_cross} allmodconfig
|
||||
fi
|
||||
# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
|
||||
sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
|
||||
}
|
||||
|
||||
do_build() {
|
||||
local arch _args
|
||||
|
||||
case "$XBPS_TARGET_MACHINE" in
|
||||
i686*) _args="bzImage modules"; arch=i386;;
|
||||
x86_64*) _args="bzImage modules"; arch=x86_64;;
|
||||
arm*) _args="zImage modules dtbs"; arch=arm;;
|
||||
aarch64*) _args="Image modules dtbs"; arch=arm64;;
|
||||
ppc*) _args="zImage modules"; arch=powerpc;;
|
||||
mips*) _args="uImage modules dtbs"; arch=mips;;
|
||||
esac
|
||||
export LDFLAGS=
|
||||
make ARCH=$arch ${_version} ${_cross} ${makejobs} prepare
|
||||
make ARCH=$arch ${_version} ${_cross} ${makejobs} ${_args}
|
||||
}
|
||||
|
||||
do_install() {
|
||||
local arch subarch _args hdrdest
|
||||
|
||||
case "$XBPS_TARGET_MACHINE" in
|
||||
i686*) arch=x86; subarch=i386;;
|
||||
x86_64*) arch=x86; subarch=x86_64;;
|
||||
arm*) arch=arm;;
|
||||
aarch64*) arch=arm64;;
|
||||
ppc*) arch=powerpc;;
|
||||
mips*) arch=mips;;
|
||||
esac
|
||||
|
||||
# Run depmod after compressing modules.
|
||||
sed -i '2iexit 0' scripts/depmod.sh
|
||||
|
||||
# Install kernel, firmware and modules
|
||||
make ${makejobs} ARCH=${subarch:-$arch} INSTALL_MOD_PATH=${DESTDIR} ${_cross} modules_install
|
||||
|
||||
hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver}
|
||||
|
||||
vinstall .config 644 boot config-${_kernver}
|
||||
vinstall System.map 644 boot System.map-${_kernver}
|
||||
|
||||
case "$arch" in
|
||||
x86)
|
||||
vinstall arch/x86/boot/bzImage 644 boot vmlinuz-${_kernver}
|
||||
;;
|
||||
arm)
|
||||
vinstall arch/arm/boot/zImage 644 boot
|
||||
make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} ${_cross} dtbs_install
|
||||
;;
|
||||
arm64)
|
||||
vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver}
|
||||
make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} ${_cross} dtbs_install
|
||||
;;
|
||||
powerpc)
|
||||
# zImage on powerpc is useless as it won't load initramfs
|
||||
# raw vmlinux is huge, and this is nostrip, so do it manually
|
||||
vinstall vmlinux 644 boot vmlinux-${_kernver}
|
||||
/usr/bin/$STRIP ${DESTDIR}/boot/vmlinux-${_kernver}
|
||||
;;
|
||||
mips)
|
||||
vinstall arch/mips/boot/uImage.bin 644 boot uImage-${_kernver}
|
||||
make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} ${_cross} dtbs_install
|
||||
;;
|
||||
esac
|
||||
|
||||
# Switch to /usr.
|
||||
vmkdir usr
|
||||
mv ${DESTDIR}/lib ${DESTDIR}/usr
|
||||
|
||||
cd ${DESTDIR}/usr/lib/modules/${_kernver}
|
||||
rm -f source build
|
||||
ln -sf ../../../src/kernel-headers-${_kernver} build
|
||||
|
||||
cd ${wrksrc}
|
||||
# Install required headers to build external modules
|
||||
install -Dm644 Makefile ${hdrdest}/Makefile
|
||||
install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
|
||||
install -Dm644 .config ${hdrdest}/.config
|
||||
for file in $(find . -name Kconfig\*); do
|
||||
mkdir -p ${hdrdest}/$(dirname $file)
|
||||
install -Dm644 $file ${hdrdest}/${file}
|
||||
done
|
||||
for file in $(find arch/${subarch:-$arch} -name module.lds -o -name Kbuild.platforms -o -name Platform); do
|
||||
mkdir -p ${hdrdest}/$(dirname $file)
|
||||
install -Dm644 $file ${hdrdest}/${file}
|
||||
done
|
||||
mkdir -p ${hdrdest}/include
|
||||
# Remove firmware stuff provided by the "linux-firmware" pkg.
|
||||
rm -rf ${DESTDIR}/usr/lib/firmware
|
||||
|
||||
for i in acpi asm-generic clocksource config crypto drm generated linux vdso \
|
||||
math-emu media net pcmcia scsi sound trace uapi video xen dt-bindings; do
|
||||
if [ -d include/$i ]; then
|
||||
cp -a include/$i ${hdrdest}/include
|
||||
fi
|
||||
done
|
||||
|
||||
cd ${wrksrc}
|
||||
mkdir -p ${hdrdest}/arch/${arch}
|
||||
cp -a arch/${arch}/include ${hdrdest}/arch/${arch}
|
||||
|
||||
# Remove helper binaries built for host,
|
||||
# if generated files from the scripts/ directory need to be included,
|
||||
# they need to be copied to ${hdrdest} before this step
|
||||
if [ "$CROSS_BUILD" ]; then
|
||||
make ${makejobs} ARCH=${subarch:-$arch} ${_cross} _mrproper_scripts
|
||||
# remove host specific objects as well
|
||||
find scripts -name '*.o' -delete
|
||||
fi
|
||||
|
||||
# Copy files necessary for later builds, like nvidia and vmware
|
||||
cp Module.symvers ${hdrdest}
|
||||
cp -a scripts ${hdrdest}
|
||||
mkdir -p ${hdrdest}/security/selinux
|
||||
cp -a security/selinux/include ${hdrdest}/security/selinux
|
||||
mkdir -p ${hdrdest}/tools/include
|
||||
cp -a tools/include/tools ${hdrdest}/tools/include
|
||||
|
||||
mkdir -p ${hdrdest}/arch/${arch}/kernel
|
||||
cp arch/${arch}/Makefile ${hdrdest}/arch/${arch}
|
||||
if [ "$subarch" = "i386" ]; then
|
||||
mkdir -p ${hdrdest}/arch/x86
|
||||
cp arch/x86/Makefile_32.cpu ${hdrdest}/arch/x86
|
||||
fi
|
||||
if [ "$arch" = "x86" ]; then
|
||||
mkdir -p ${hdrdest}/arch/x86/kernel
|
||||
cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel
|
||||
elif [ "$arch" = "arm64" ]; then
|
||||
mkdir -p ${hdrdest}/arch/arm64/kernel
|
||||
cp -a arch/arm64/kernel/vdso ${hdrdest}/arch/arm64/kernel/
|
||||
fi
|
||||
|
||||
# add headers for lirc package
|
||||
# pci
|
||||
for i in bt8xx cx88 saa7134; do
|
||||
mkdir -p ${hdrdest}/drivers/media/pci/${i}
|
||||
cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i}
|
||||
done
|
||||
# usb
|
||||
for i in cpia2 em28xx pwc; do
|
||||
mkdir -p ${hdrdest}/drivers/media/usb/${i}
|
||||
cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i}
|
||||
done
|
||||
# i2c
|
||||
mkdir -p ${hdrdest}/drivers/media/i2c
|
||||
cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
|
||||
for i in cx25840; do
|
||||
mkdir -p ${hdrdest}/drivers/media/i2c/${i}
|
||||
cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
|
||||
done
|
||||
|
||||
# Add md headers
|
||||
mkdir -p ${hdrdest}/drivers/md
|
||||
cp drivers/md/*.h ${hdrdest}/drivers/md
|
||||
|
||||
# Add inotify.h
|
||||
mkdir -p ${hdrdest}/include/linux
|
||||
cp include/linux/inotify.h ${hdrdest}/include/linux
|
||||
|
||||
# Add wireless headers
|
||||
mkdir -p ${hdrdest}/net/mac80211/
|
||||
cp net/mac80211/*.h ${hdrdest}/net/mac80211
|
||||
|
||||
# add dvb headers for external modules
|
||||
mkdir -p ${hdrdest}/include/config/dvb/
|
||||
cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/
|
||||
|
||||
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
|
||||
mkdir -p ${hdrdest}/drivers/media/dvb-frontends
|
||||
cp drivers/media/dvb-frontends/lgdt330x.h \
|
||||
${hdrdest}/drivers/media/dvb-frontends/
|
||||
cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/
|
||||
|
||||
# add dvb headers
|
||||
mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb
|
||||
cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/
|
||||
mkdir -p ${hdrdest}/drivers/media/dvb-frontends
|
||||
cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/
|
||||
mkdir -p ${hdrdest}/drivers/media/tuners
|
||||
cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/
|
||||
|
||||
# Add xfs and shmem for aufs building
|
||||
mkdir -p ${hdrdest}/fs/xfs/libxfs
|
||||
mkdir -p ${hdrdest}/mm
|
||||
cp fs/xfs/libxfs/xfs_sb.h ${hdrdest}/fs/xfs/libxfs/xfs_sb.h
|
||||
|
||||
# Add objtool binary, needed to build external modules with dkms
|
||||
case "$XBPS_TARGET_MACHINE" in
|
||||
x86_64*)
|
||||
mkdir -p ${hdrdest}/tools/objtool
|
||||
cp tools/objtool/objtool ${hdrdest}/tools/objtool
|
||||
;;
|
||||
esac
|
||||
|
||||
# Remove unneeded architectures
|
||||
case "$arch" in
|
||||
i386|x86_64) _args="arm* m* p*";;
|
||||
arm|arm64) _args="x86* m* p*";;
|
||||
powerpc) _args="arm* m* x86* parisc";;
|
||||
mips) _args="arm* x86* p*";;
|
||||
esac
|
||||
for arch in alpha avr32 blackfin cris frv h8300 \
|
||||
ia64 s* um v850 xtensa ${_args}; do
|
||||
rm -rf ${hdrdest}/arch/${arch}
|
||||
done
|
||||
# Keep arch/x86/ras/Kconfig as it is needed by drivers/ras/Kconfig
|
||||
mkdir -p ${hdrdest}/arch/x86/ras
|
||||
cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
|
||||
|
||||
# Extract debugging symbols and compress modules
|
||||
msg_normal "$pkgver: extracting debug info and compressing modules, please wait...\n"
|
||||
install -Dm644 vmlinux ${DESTDIR}/usr/lib/debug/boot/vmlinux-${_kernver}
|
||||
(
|
||||
cd ${DESTDIR}
|
||||
export DESTDIR
|
||||
find ./ -name '*.ko' -print0 | \
|
||||
xargs -0r -n1 -P ${XBPS_MAKEJOBS} ${FILESDIR}/mv-debug
|
||||
)
|
||||
# ... and run depmod again.
|
||||
depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
|
||||
}
|
||||
linux5.11-headers_package() {
|
||||
preserve=yes
|
||||
nostrip=yes
|
||||
noshlibprovides=yes
|
||||
short_desc+=" - source headers for 3rd party modules"
|
||||
pkg_install() {
|
||||
vmove usr/src
|
||||
vmove usr/lib/modules/${_kernver}/build
|
||||
}
|
||||
}
|
||||
linux5.11-dbg_package() {
|
||||
preserve=yes
|
||||
nostrip=yes
|
||||
noverifyrdeps=yes
|
||||
noshlibprovides=yes
|
||||
repository=debug
|
||||
short_desc+=" - debugging symbols"
|
||||
pkg_install() {
|
||||
vmove usr/lib/debug
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue