-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-kernel-src
More file actions
executable file
·98 lines (89 loc) · 3.2 KB
/
Copy pathbuild-kernel-src
File metadata and controls
executable file
·98 lines (89 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/sh
set -e
export LLVM=1 && export LLVM_IAS=1
SOURCE_DIR="$(dirname "$(realpath "$0")")/source"
FILES_DIR="$(dirname "$(realpath "$0")")/files"
if [ -z "$MAKEOPTS" ]; then
export MAKEOPTS="-j $(expr "$(nproc)" '+' 4) --load-average $(expr "$(nproc)" '+' 1)"
fi
# Install Kernel
rm -rf kernel && git clone "$SOURCE_DIR"/kernel kernel && pushd kernel
PATCH_LIST="
$(find "$SOURCE_DIR"/xanmod/linux-7.1.y-xanmod -type f -name '*.patch' | grep -v -f "$FILES_DIR"/xanmod/patch.blacklist | sort)
$(ls "$SOURCE_DIR"/cachy/7.1/misc/{0001-aufs*,0001-clang-polly}.patch)
$FILES_DIR/cachy/0001-Fixup-aufs-m-missing-symbols.patch
"
for PATCH in $PATCH_LIST; do
echo "Patching: $PATCH" >&2
git apply "$PATCH"
done
make defconfig
./scripts/config \
--enable MEMORY_HOTPLUG --enable MEMORY_HOTREMOVE --enable ZONE_DEVICE --enable DEVICE_PRIVATE
if [ ! -z "$TEST_CONFIG_PATH" ]; then
cat "$TEST_CONFIG_PATH" >.config
fi
make olddefconfig
make $MAKEOPTS
popd
KERNEL_DIR="$(realpath kernel)"
# Install NVIDIA
rm -rf nvidia && git clone "$SOURCE_DIR"/nvidia nvidia && pushd nvidia
PATCH_LIST="
$(find "$SOURCE_DIR"/cachy/7.1/misc/nvidia -type f -name '*.patch' | grep -v -f "$FILES_DIR"/cachy/nvidia-patch.blacklist | sort)
$FILES_DIR/nvidia/0001-Enable-in-tree-build.patch
"
for PATCH in $PATCH_LIST; do
echo "Patching: $PATCH" >&2
git apply "$PATCH"
done
./copy-builtin "$KERNEL_DIR"
popd
# Install zfs
rm -rf zfs && git clone "$SOURCE_DIR"/zfs zfs && pushd zfs
sed -i 's/CDDL/GPL/g' META # Evil, i know...
sed -i 's/\/Kbuild//g' module/.gitignore
echo >include/.gitignore
sh autogen.sh
./configure --disable-nls --disable-rpath \
--enable-linux-builtin --enable-linux-experimental --with-linux="$KERNEL_DIR"
./copy-builtin "$KERNEL_DIR"
popd
# Install bcachefs
rm -rf bcachefs && git clone "$SOURCE_DIR"/bcachefs bcachefs && pushd bcachefs
PATCH_LIST="
$FILES_DIR/bcachefs/*.patch
"
for PATCH in $PATCH_LIST; do
echo "Patching: $PATCH" >&2
git apply "$PATCH"
done
bash "$FILES_DIR"/bcachefs/copy-builtin.sh "$KERNEL_DIR"
popd
# Test Kernel
pushd kernel
make mrproper
make olddefconfig
./scripts/config \
--module ZFS \
--enable UNICODE --module BCACHEFS_FS --enable BCACHEFS_QUOTA \
--enable PCI --enable DRM --enable MEMORY_HOTPLUG --enable MEMORY_HOTREMOVE --enable ZONE_DEVICE --enable DEVICE_PRIVATE --module NVIDIA --module NVIDIA_MODESET --module NVIDIA_DRM --module NVIDIA_UVM --module NVIDIA_PEERMEM
if [ ! -z "$TEST_CONFIG_PATH" ]; then
cat "$TEST_CONFIG_PATH" >.config
fi
make olddefconfig
if [ -z "$SKIP_TEST" ]; then
make $MAKEOPTS
fi
popd
# Clean KernelTree
pushd kernel
make mrproper
git clean -Xdf
git add .
popd
# Package Source
rm -f cl-kernel.tar.zst cl-kernel.patch.zst
tar --exclude=.git --transform "s/^kernel/linux-$(make -C kernel kernelversion | grep -E '([0-9]*)\.([0-9]*)\.([0-9]*)')/" -cf source.tar kernel
git -C kernel diff --binary --cached >from-upstream.patch
zstd -T0 --long --ultra -22 --progress --rm source.tar from-upstream.patch