7665ac3c53
Split most changes into properly attributed patches from their respecive source repos, taking into account where each one seems to have been first introduced. The attribution was done manually on a best-effort basis by inspecting git logs from repositories such as tkg, zen, xanmod, and pf. This commit also fixes a case of an invalid macro effectively disabling the "defer+madvise" patch. Glitched-base included a variant of the patch where the change depends on a config option named CONFIG_AVL_INTERACTIVE. This config option isn't even mentioned anywhere else in linux-tkg, so the patch has likely never been active in any build. I replaced the patch with an identical one from zen-kernel and modified it to depend on CONFIG_ZENIFY. Signed-off-by: Juuso Alasuutari <juuso.alasuutari@gmail.com>
286 lines
11 KiB
Bash
286 lines
11 KiB
Bash
# Based on the file created for Arch Linux by:
|
|
# Tobias Powalowski <tpowa@archlinux.org>
|
|
# Thomas Baechler <thomas@archlinux.org>
|
|
|
|
# Contributor: Tk-Glitch <ti3nou at gmail dot com>
|
|
|
|
plain ' .---.` `.---.'
|
|
plain ' `/syhhhyso- -osyhhhys/`'
|
|
plain ' .syNMdhNNhss/``.---.``/sshNNhdMNys.'
|
|
plain ' +sdMh.`+MNsssssssssssssssNM+`.hMds+'
|
|
plain ' :syNNdhNNhssssssssssssssshNNhdNNys:'
|
|
plain ' /ssyhhhysssssssssssssssssyhhhyss/'
|
|
plain ' .ossssssssssssssssssssssssssssso.'
|
|
plain ' :sssssssssssssssssssssssssssssssss:'
|
|
plain ' /sssssssssssssssssssssssssssssssssss/'
|
|
plain ' :sssssssssssssoosssssssoosssssssssssss:'
|
|
plain ' osssssssssssssoosssssssoossssssssssssso'
|
|
plain ' osssssssssssyyyyhhhhhhhyyyyssssssssssso'
|
|
plain ' /yyyyyyhhdmmmmNNNNNNNNNNNmmmmdhhyyyyyy/'
|
|
plain ' smmmNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmmms'
|
|
plain ' /dNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNd/'
|
|
plain ' `:sdNNNNNNNNNNNNNNNNNNNNNNNNNds:`'
|
|
plain ' `-+shdNNNNNNNNNNNNNNNdhs+-`'
|
|
plain ' `.-:///////:-.`'
|
|
|
|
_where="$PWD" # track basedir as different Arch based distros are moving srcdir around
|
|
|
|
source "$_where"/customization.cfg # load default configuration from file
|
|
source "$_where"/linux*-tkg-config/prepare
|
|
|
|
if [[ "$_sub" = rc* ]]; then
|
|
_srcpath="linux-${_basekernel}-${_sub}"
|
|
else
|
|
_srcpath="linux-${_basekernel}"
|
|
fi
|
|
|
|
_tkg_initscript
|
|
|
|
_distro="Arch"
|
|
|
|
if [ -n "$_custom_pkgbase" ]; then
|
|
pkgbase="${_custom_pkgbase}"
|
|
else
|
|
pkgbase=linux"${_basever}"-tkg-"${_cpusched}"
|
|
fi
|
|
pkgname=("${pkgbase}" "${pkgbase}-headers")
|
|
pkgver="${_basekernel}"."${_sub}"
|
|
pkgrel=21
|
|
pkgdesc='Linux-tkg'
|
|
arch=('x86_64') # no i686 in here
|
|
url="http://www.kernel.org/"
|
|
license=('GPL2')
|
|
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf' 'pahole' 'patchutils' 'flex' 'python-sphinx' 'python-sphinx_rtd_theme' 'graphviz' 'imagemagick' 'git')
|
|
optdepends=('schedtool')
|
|
options=('!strip' 'docs')
|
|
source=("https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.xz"
|
|
"https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-${pkgver}.xz"
|
|
"https://raw.githubusercontent.com/graysky2/kernel_gcc_patch/master/enable_additional_cpu_optimizations_for_gcc_v10.1%2B_kernel_v5.8%2B.patch"
|
|
'config.x86_64' # stock Arch config
|
|
#'config_hardened.x86_64' # hardened Arch config
|
|
90-cleanup.hook
|
|
cleanup
|
|
# ARCH Patches
|
|
0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch
|
|
# TkG
|
|
0002-clear-patches.patch
|
|
0003-glitched-base.patch
|
|
0003-glitched-cfs.patch
|
|
#0004-glitched-ondemand-muqss.patch
|
|
#0004-glitched-muqss.patch
|
|
#0004-5.8-ck1.patch
|
|
0005-undead-glitched-ondemand-pds.patch
|
|
0005-undead-glitched-pds.patch
|
|
0005-v5.8_undead-pds099o.patch
|
|
0005-glitched-pds.patch
|
|
0006-add-acs-overrides_iommu.patch
|
|
0007-v5.8-fsync.patch
|
|
0008-5.8-bcachefs.patch
|
|
0009-glitched-ondemand-bmq.patch
|
|
0009-glitched-bmq.patch
|
|
0009-prjc_v5.8-r3.patch
|
|
0011-ZFS-fix.patch
|
|
#0012-linux-hardened.patch
|
|
0012-misc-additions.patch
|
|
)
|
|
sha256sums=('e7f75186aa0642114af8f19d99559937300ca27acaf7451b36d4f9b0f85cf1f5'
|
|
'1afdba17525f899c855eff4044a1519474c7164d3501e5d89565c9b6b1f5fd1b'
|
|
'5ab29eb64e57df83b395a29a6a4f89030d142feffbfbf73b3afc6d97a2a7fd12'
|
|
'181330a9cf4517abbbe29b93165bc859ad8ca14a43582f4e1d69aae2b5ecc2c9'
|
|
'1e15fc2ef3fa770217ecc63a220e5df2ddbcf3295eb4a021171e7edd4c6cc898'
|
|
'66a03c246037451a77b4d448565b1d7e9368270c7d02872fbd0b5d024ed0a997'
|
|
'f6383abef027fd9a430fd33415355e0df492cdc3c90e9938bf2d98f4f63b32e6'
|
|
'35a7cde86fb94939c0f25a62b8c47f3de0dbd3c65f876f460b263181b3e92fc0'
|
|
'2ef939628d8b302974d88e17f9ef4e179d1bfe7df18e16f93b1539e1fdd6138a'
|
|
'7058e57fd68367b029adc77f2a82928f1433daaf02c8c279cb2d13556c8804d7'
|
|
'62496f9ca788996181ef145f96ad26291282fcc3fb95cdc04080dcf84365be33'
|
|
'7fd8e776209dac98627453fda754bdf9aff4a09f27cb0b3766d7983612eb3c74'
|
|
'31b172eb6a0c635a8d64cc1c2e8181d9f928ee991bd44f6e556d1713b815f8d9'
|
|
'87bca363416655bc865fcb2cc0d1532cb010a61d9b9f625e3c15cd12eeee3a59'
|
|
'19661ec0d39f9663452b34433214c755179894528bf73a42f6ba52ccf572832a'
|
|
'cd225e86d72eaf6c31ef3d7b20df397f4cc44ddd04389850691292cdf292b204'
|
|
'86414a20225deec084e0e48b35552b3a4eef67f76755b32a10febb7b6308dcb7'
|
|
'9fad4a40449e09522899955762c8928ae17f4cdaa16e01239fd12592e9d58177'
|
|
'965a517a283f265a012545fbb5cc9e516efc9f6166d2aa1baf7293a32a1086b7'
|
|
'f5dbff4833a2e3ca94c202e5197894d5f1006c689ff149355353e77d2e17c943'
|
|
'49262ce4a8089fa70275aad742fc914baa28d9c384f710c9a62f64796d13e104'
|
|
'98311deeb474b39e821cd1e64198793d5c4d797155b3b8bbcb1938b7f11e8d74')
|
|
|
|
export KBUILD_BUILD_HOST=archlinux
|
|
export KBUILD_BUILD_USER=$pkgbase
|
|
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
|
|
|
|
prepare() {
|
|
rm -rf $pkgdir # Nuke the entire pkg folder so it'll get regenerated clean on next build
|
|
|
|
ln -s "${_where}/customization.cfg" "${srcdir}" # workaround
|
|
|
|
cd "${srcdir}/${_srcpath}"
|
|
|
|
_tkg_srcprep
|
|
}
|
|
|
|
build() {
|
|
cd "${srcdir}/${_srcpath}"
|
|
|
|
# Use custom compiler paths if defined
|
|
if [ -n "${CUSTOM_GCC_PATH}" ]; then
|
|
PATH=${CUSTOM_GCC_PATH}/bin:${CUSTOM_GCC_PATH}/lib:${CUSTOM_GCC_PATH}/include:${PATH}
|
|
fi
|
|
|
|
if [ "$_force_all_threads" = "true" ]; then
|
|
_force_all_threads="-j$((`nproc`*2))"
|
|
else
|
|
_force_all_threads="${MAKEFLAGS}"
|
|
fi
|
|
|
|
# ccache
|
|
if [ "$_noccache" != "true" ] && pacman -Qq ccache &> /dev/null; then
|
|
export PATH="/usr/lib/ccache/bin/:$PATH"
|
|
export CCACHE_SLOPPINESS="file_macro,locale,time_macros"
|
|
export CCACHE_NOHASHDIR="true"
|
|
msg2 'ccache was found and will be used'
|
|
fi
|
|
|
|
# document the TkG variables, excluding "_", "_EXT_CONFIG_PATH", and "_where".
|
|
declare -p | cut -d ' ' -f 3 | grep -P '^_(?!=|EXT_CONFIG_PATH|where)' > "${srcdir}/customization-full.cfg"
|
|
|
|
# build!
|
|
_runtime=$( time ( schedtool -B -n 1 -e ionice -n 1 make ${_force_all_threads} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 ) || _runtime=$( time ( make ${_force_all_threads} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 )
|
|
}
|
|
|
|
hackbase() {
|
|
pkgdesc="The $pkgdesc kernel and modules"
|
|
depends=('coreutils' 'kmod' 'initramfs')
|
|
optdepends=('linux-docs: Kernel hackers manual - HTML documentation that comes with the Linux kernel.'
|
|
'crda: to set the correct wireless channels of your country.'
|
|
'linux-firmware: Firmware files for Linux'
|
|
'modprobed-db: Keeps track of EVERY kernel module that has ever been probed. Useful for make localmodconfig.'
|
|
'nvidia-tkg: NVIDIA drivers for all installed kernels - non-dkms version.'
|
|
'nvidia-dkms-tkg: NVIDIA drivers for all installed kernels - dkms version.'
|
|
'update-grub: Simple wrapper around grub-mkconfig.')
|
|
provides=("linux=${pkgver}" "${pkgbase}" VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE)
|
|
replaces=(virtualbox-guest-modules-arch wireguard-arch)
|
|
|
|
cd "${srcdir}/${_srcpath}"
|
|
|
|
# get kernel version
|
|
local _kernver="$(<version)"
|
|
local modulesdir="$pkgdir/usr/lib/modules/$_kernver"
|
|
|
|
msg2 "Installing boot image..."
|
|
# systemd expects to find the kernel here to allow hibernation
|
|
# https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
|
|
install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
|
|
|
|
# Used by mkinitcpio to name the kernel
|
|
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
|
|
|
|
msg2 "Installing modules..."
|
|
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
|
|
|
|
# remove build and source links
|
|
rm "$modulesdir"/{source,build}
|
|
|
|
# install cleanup pacman hook and script
|
|
sed -e "s|cleanup|${pkgbase}-cleanup|g" "${srcdir}"/90-cleanup.hook |
|
|
install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
|
|
install -Dm755 "${srcdir}"/cleanup "${pkgdir}/usr/share/libalpm/scripts/${pkgbase}-cleanup"
|
|
|
|
# install customization file, for reference
|
|
install -Dm644 "${srcdir}"/customization-full.cfg "${pkgdir}/usr/share/doc/${pkgbase}/customization.cfg"
|
|
}
|
|
|
|
hackheaders() {
|
|
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
|
|
provides=("linux-headers=${pkgver}" "${pkgbase}-headers=${pkgver}")
|
|
|
|
cd "${srcdir}/${_srcpath}"
|
|
local builddir="${pkgdir}/usr/lib/modules/$(<version)/build"
|
|
|
|
msg2 "Installing build files..."
|
|
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
|
|
localversion.* version vmlinux
|
|
install -Dt "$builddir/kernel" -m644 kernel/Makefile
|
|
install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
|
|
cp -t "$builddir" -a scripts
|
|
|
|
# add objtool for external module building and enabled VALIDATION_STACK option
|
|
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
|
|
|
|
# add xfs and shmem for aufs building
|
|
mkdir -p "$builddir"/{fs/xfs,mm}
|
|
|
|
msg2 "Installing headers..."
|
|
cp -t "$builddir" -a include
|
|
cp -t "$builddir/arch/x86" -a arch/x86/include
|
|
install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
|
|
|
|
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
|
|
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
|
|
|
|
# http://bugs.archlinux.org/task/13146
|
|
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
|
|
|
|
# http://bugs.archlinux.org/task/20402
|
|
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
|
|
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
|
|
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
|
|
|
|
msg2 "Installing KConfig files..."
|
|
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
|
|
|
|
msg2 "Removing unneeded architectures..."
|
|
local arch
|
|
for arch in "$builddir"/arch/*/; do
|
|
[[ $arch = */x86/ ]] && continue
|
|
echo "Removing $(basename "$arch")"
|
|
rm -r "$arch"
|
|
done
|
|
|
|
msg2 "Removing documentation..."
|
|
rm -r "$builddir/Documentation"
|
|
|
|
msg2 "Removing broken symlinks..."
|
|
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
|
|
|
|
msg2 "Removing loose objects..."
|
|
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
|
|
|
|
msg2 "Stripping build tools..."
|
|
local file
|
|
while read -rd '' file; do
|
|
case "$(file -bi "$file")" in
|
|
application/x-sharedlib\;*) # Libraries (.so)
|
|
strip -v $STRIP_SHARED "$file" ;;
|
|
application/x-archive\;*) # Libraries (.a)
|
|
strip -v $STRIP_STATIC "$file" ;;
|
|
application/x-executable\;*) # Binaries
|
|
strip -v $STRIP_BINARIES "$file" ;;
|
|
application/x-pie-executable\;*) # Relocatable binaries
|
|
strip -v $STRIP_SHARED "$file" ;;
|
|
esac
|
|
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
|
|
|
|
msg2 "Adding symlink..."
|
|
mkdir -p "$pkgdir/usr/src"
|
|
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
|
|
|
|
echo "Stripping vmlinux..."
|
|
strip -v $STRIP_STATIC "$builddir/vmlinux"
|
|
|
|
if [ $_NUKR = "true" ]; then
|
|
rm -rf "$srcdir" # Nuke the entire src folder so it'll get regenerated clean on next build
|
|
fi
|
|
}
|
|
|
|
source /dev/stdin <<EOF
|
|
package_${pkgbase}() {
|
|
hackbase
|
|
}
|
|
|
|
package_${pkgbase}-headers() {
|
|
hackheaders
|
|
}
|
|
EOF
|