summaryrefslogtreecommitdiffstats
path: root/source/k/kernel-source.SlackBuild
diff options
context:
space:
mode:
Diffstat (limited to 'source/k/kernel-source.SlackBuild')
-rwxr-xr-xsource/k/kernel-source.SlackBuild78
1 files changed, 69 insertions, 9 deletions
diff --git a/source/k/kernel-source.SlackBuild b/source/k/kernel-source.SlackBuild
index c4b90cd71..ad6bc282d 100755
--- a/source/k/kernel-source.SlackBuild
+++ b/source/k/kernel-source.SlackBuild
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2018, 2020 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# Copyright 2018, 2020, 2021, 2023 Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -27,6 +27,9 @@ BUILD=${BUILD:-1}
NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
TMP=${TMP:-/tmp}
PKG=$TMP/package-$PKGNAM
+# If CONFIG_PREEMPT=y and CONFIG_PREEMPT_DYNAMIC=y, then set a default preempt
+# mode (none, voluntary, or full):
+CONFIG_PREEMPT_DEFAULT_MODE=${CONFIG_PREEMPT_DEFAULT_MODE:-voluntary}
# If a $VERSION is not passed to this script, use the newest linux-*.tar.xz
# found in this directory:
@@ -43,6 +46,54 @@ if [ -z "$ARCH" ]; then
esac
fi
+# This function will revert or apply patches that are present here.
+# Directories that are currently supported:
+# patches-revert-${VERSION} (revert patches from this directory if kernel version matches)
+# patches-revert-${ARCH} (revert patches from this directory if $ARCH matches)
+# patches-${VERSION} (apply patches from this directory if kernel version matches)
+# patches-${ARCH} (apply patches from this directory if $ARCH matches)
+# All the applied/reverted patches will be copied to the root of the kernel source tree.
+apply_patches() {
+ # First do patches-revert:
+ if [ -d $CWD/patches-revert-${VERSION} ]; then
+ if [ "$1" = "VERBOSE" ]; then
+ echo "Reverting kernel patches in $CWD/patches-revert-${VERSION} and copying patches to $PKG/usr/src/linux-${VERSION}..."
+ zcat $CWD/patches-revert-${VERSION}/*.gz | patch -p1 -R --backup --suffix=.orig || exit 1
+ else
+ zcat $CWD/patches-revert-${VERSION}/*.gz | patch -p1 -R --backup --suffix=.orig 1> /dev/null 2> /dev/null || exit 1
+ fi
+ cp -a $CWD/patches-revert-${VERSION}/*.gz .
+ fi
+ if [ -d $CWD/patches-revert-${ARCH} ]; then
+ if [ "$1" = "VERBOSE" ]; then
+ echo "Reverting kernel patches in $CWD/patches-revert-${ARCH} and copying patches to $PKG/usr/src/linux-${VERSION}..."
+ zcat $CWD/patches-revert-${ARCH}/*.gz | patch -p1 -R --backup --suffix=.orig || exit 1
+ else
+ zcat $CWD/patches-revert-${ARCH}/*.gz | patch -p1 -R --backup --suffix=.orig 1> /dev/null 2> /dev/null || exit 1
+ fi
+ cp -a $CWD/patches-revert-${ARCH}/*.gz .
+ fi
+ # Then apply patches:
+ if [ -d $CWD/patches-${VERSION} ]; then
+ if [ "$1" = "VERBOSE" ]; then
+ echo "Applying kernel patches in $CWD/patches-${VERSION} and copying patches to $PKG/usr/src/linux-${VERSION}..."
+ zcat $CWD/patches-${VERSION}/*.gz | patch -p1 --backup --suffix=.orig || exit 1
+ else
+ zcat $CWD/patches-${VERSION}/*.gz | patch -p1 --backup --suffix=.orig 1> /dev/null 2> /dev/null || exit 1
+ fi
+ cp -a $CWD/patches-${VERSION}/*.gz .
+ fi
+ if [ -d $CWD/patches-${ARCH} ]; then
+ if [ "$1" = "VERBOSE" ]; then
+ echo "Applying kernel patches in $CWD/patches-${ARCH} and copying patches to $PKG/usr/src/linux-${VERSION}..."
+ zcat $CWD/patches-${ARCH}/*.gz | patch -p1 --backup --suffix=.orig || exit 1
+ else
+ zcat $CWD/patches-${ARCH}/*.gz | patch -p1 --backup --suffix=.orig 1> /dev/null 2> /dev/null || exit 1
+ fi
+ cp -a $CWD/patches-${ARCH}/*.gz .
+ fi
+}
+
# Kernel extraversion, such as "-smp" on 32-bit. There's usually no need to set
# this unless you're using something unusual. We use it to find which .config
# file to use, but we'll then use whatever CONFIG_LOCALVERSION is set to
@@ -96,9 +147,7 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
cd $TEMPDIR
tar xf $CWD/linux-${VERSION}.tar.?z || exit 1
cd linux*
- if [ -d $CWD/patches-${VERSION} ]; then
- zcat $CWD/patches-${VERSION}/*.gz | patch -p1 --backup --suffix=.orig 1> /dev/null 2> /dev/null || exit 1
- fi
+ apply_patches
PACKAGE_VERSION=$(grep "^VERSION = " Makefile | rev | cut -f 1 -d ' ' | rev).$(grep "^PATCHLEVEL = " Makefile | rev | cut -f 1 -d ' ' | rev).$(grep "^SUBLEVEL = " Makefile | rev | cut -f 1 -d ' ' | rev)$(grep "^EXTRAVERSION = " Makefile | rev | cut -f 1 -d ' ' | rev)
cd $CWD
rm -rf $TEMPDIR
@@ -118,11 +167,7 @@ echo "Untarring $CWD/linux-${VERSION}.tar.?z in $PKG/usr/src..."
echo "Making /usr/src/linux symlink..."
ln -sf linux-* linux
cd linux-*
- if [ -d $CWD/patches-${VERSION} ]; then
- echo "Applying kernel patches in $CWD/patches-${VERSION} and copying patches to $PKG/usr/src/linux-${VERSION}..."
- zcat $CWD/patches-${VERSION}/*.gz | patch -p1 --verbose --backup --suffix=.orig || exit 1
- cp -a $CWD/patches-${VERSION}/*.gz .
- fi
+ apply_patches VERBOSE
echo "Copying $CWD/kernel-configs/${KERNEL_CONFIG} to .config..."
cp -a $CWD/kernel-configs/${KERNEL_CONFIG} .config
echo "Fixing permissions/ownership..."
@@ -145,6 +190,21 @@ echo "Untarring $CWD/linux-${VERSION}.tar.?z in $PKG/usr/src..."
echo "Saving new .config as: $CWD/kernel-configs/config-generic${LOCALVERSION}-${VERSION}${LOCALVERSION}${CONFIG_SUFFIX}"
cp -a .config $CWD/kernel-configs/config-generic${LOCALVERSION}-${VERSION}${LOCALVERSION}${CONFIG_SUFFIX}
fi
+
+ # If CONFIG_PREEMPT=y and CONFIG_PREEMPT_DYNAMIC=y, then set a default preempt
+ # mode (none, voluntary, or full):
+ if grep -wq CONFIG_PREEMPT=y .config ; then
+ if grep -wq CONFIG_PREEMPT_DYNAMIC=y .config ; then
+ # Sanity check:
+ if ! echo $CONFIG_PREEMPT_DEFAULT_MODE | grep -wq -e none -e voluntary -e full ; then
+ echo "ERROR: Invalid mode for CONFIG_PREEMPT_DEFAULT_MODE: $CONFIG_PREEMPT_DEFAULT_MODE"
+ exit 1
+ fi
+ echo "Setting default PREEMPT mode: $CONFIG_PREEMPT_DEFAULT_MODE"
+ sed -i "s/^int preempt_dynamic_mode = preempt_dynamic_.*;$/int preempt_dynamic_mode = preempt_dynamic_$CONFIG_PREEMPT_DEFAULT_MODE;/g" kernel/sched/core.c
+ fi
+ fi
+
echo "Building kernel and modules (needed before clean for building NVIDIA to work)..."
make ${NUMJOBS} || exit 1
make ${NUMJOBS} modules || exit 1