forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: KenHV <[email protected]>
- Loading branch information
Showing
1 changed file
with
202 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,202 @@ | ||
# Maintainer: Jan Alexander Steffens (heftig) <[email protected]> | ||
# Maintainer: KenHV <[email protected]> | ||
|
||
pkgbase=linux-kensur | ||
pkgver=5.19.7.kensur1 | ||
pkgrel=1 | ||
pkgdesc='Linux' | ||
_srctag=v${pkgver%.*}-${pkgver##*.} | ||
arch=(x86_64) | ||
license=(GPL2) | ||
makedepends=( | ||
bc libelf pahole cpio perl tar xz | ||
) | ||
|
||
options=('!strip') | ||
|
||
export KBUILD_BUILD_HOST=archlinux | ||
export KBUILD_BUILD_USER=$pkgbase | ||
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" | ||
|
||
[ -z ${personal+x} ] && personal=n | ||
[ -z ${ci+x} ] && ci=n | ||
[ -z ${lto+x} ] && lto=n | ||
[ -z ${ccache+x} ] && ccache=n | ||
[ -z ${clean+x} ] && clean=n | ||
|
||
prepare() { | ||
cd .. | ||
|
||
echo "Setting config..." | ||
make kensur_defconfig | ||
|
||
if [ "$ci" = "n" ]; then | ||
vendor=$(lscpu | awk '/Vendor ID/{print $3}') | ||
if [[ "$vendor" == "GenuineIntel" || "$vendor" == "AuthenticAMD" ]]; then | ||
echo "CPU: $(lscpu | awk '/Model name/{ print substr($0, index($0,$3)) }')" | ||
echo "Applying optimizations..." | ||
scripts/config -d GENERIC_CPU | ||
scripts/config --set-val NR_CPUS $(nproc --all) | ||
scripts/config --set-val VGA_ARB_MAX_GPUS $(lspci | grep -E "VGA|3D" | wc -l) | ||
|
||
if [[ "$vendor" == "GenuineIntel" ]]; then | ||
scripts/config -e MNATIVE_INTEL | ||
elif [[ "$vendor" == "AuthenticAMD" ]]; then | ||
scripts/config -e MNATIVE_AMD | ||
fi | ||
fi | ||
fi | ||
|
||
if [ "$personal" = "y" ]; then | ||
echo "Applying personal config..." | ||
scripts/config -d DRM_AMDGPU | ||
scripts/config -d DRM_NOUVEAU | ||
scripts/config -d DRM_RADEON | ||
scripts/config -d GENERIC_CPU | ||
scripts/config -e MSKYLAKE | ||
scripts/config --set-val NR_CPUS 8 | ||
scripts/config --set-val VGA_ARB_MAX_GPUS 2 | ||
fi | ||
|
||
if [ "$lto" = "y" ]; then | ||
echo "Enabling Clang Full LTO..." | ||
scripts/config -e LTO_CLANG_FULL | ||
fi | ||
|
||
if [ "$clean" = "y" ]; then | ||
echo "Clearing ccache..." | ||
rm -rf /tmp/ccache/* | ||
fi | ||
|
||
make -s kernelrelease > version | ||
echo "Prepared $pkgbase version $(<version)" | ||
} | ||
|
||
build() { | ||
cd .. | ||
if [ "$ccache" = "y" ]; then | ||
env PATH="/usr/lib/ccache/bin:${PATH}" make all -j$(nproc --all) | ||
else | ||
make all -j$(nproc --all) | ||
fi | ||
} | ||
|
||
_package() { | ||
pkgdesc="The $pkgdesc kernel and modules" | ||
depends=(coreutils kmod initramfs) | ||
optdepends=('wireless-regdb: to set the correct wireless channels of your country' | ||
'linux-firmware: firmware images needed for some devices') | ||
provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE KSMBD-MODULE) | ||
replaces=(virtualbox-guest-modules-arch wireguard-arch) | ||
|
||
cd .. | ||
local kernver="$(<version)" | ||
local modulesdir="$pkgdir/usr/lib/modules/$kernver" | ||
|
||
echo "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" | ||
|
||
echo "Installing modules..." | ||
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \ | ||
DEPMOD=/doesnt/exist modules_install # Suppress depmod | ||
|
||
# remove build and source links | ||
rm "$modulesdir"/{source,build} | ||
} | ||
|
||
_package-headers() { | ||
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel" | ||
depends=(pahole) | ||
|
||
cd .. | ||
local builddir="$pkgdir/usr/lib/modules/$(<version)/build" | ||
|
||
echo "Installing build files..." | ||
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ | ||
version vmlinux | ||
install -Dt "$builddir/kernel" -m644 kernel/Makefile | ||
install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile | ||
cp -t "$builddir" -a scripts | ||
|
||
# required when STACK_VALIDATION is enabled | ||
install -Dt "$builddir/tools/objtool" tools/objtool/objtool | ||
|
||
# required when DEBUG_INFO_BTF_MODULES is enabled | ||
#install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids | ||
|
||
echo "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 | ||
|
||
# https://bugs.archlinux.org/task/13146 | ||
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h | ||
|
||
# https://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 | ||
|
||
# https://bugs.archlinux.org/task/71392 | ||
install -Dt "$builddir/drivers/iio/common/hid-sensors" -m644 drivers/iio/common/hid-sensors/*.h | ||
|
||
echo "Installing KConfig files..." | ||
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; | ||
|
||
echo "Removing unneeded architectures..." | ||
local arch | ||
for arch in "$builddir"/arch/*/; do | ||
[[ $arch = */x86/ ]] && continue | ||
echo "Removing $(basename "$arch")" | ||
rm -r "$arch" | ||
done | ||
|
||
echo "Removing documentation..." | ||
rm -r "$builddir/Documentation" | ||
|
||
echo "Removing broken symlinks..." | ||
find -L "$builddir" -type l -printf 'Removing %P\n' -delete | ||
|
||
echo "Removing loose objects..." | ||
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete | ||
|
||
echo "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) | ||
|
||
echo "Stripping vmlinux..." | ||
strip -v $STRIP_STATIC "$builddir/vmlinux" | ||
|
||
echo "Adding symlink..." | ||
mkdir -p "$pkgdir/usr/src" | ||
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase" | ||
} | ||
|
||
pkgname=("$pkgbase" "$pkgbase-headers") | ||
for _p in "${pkgname[@]}"; do | ||
eval "package_$_p() { | ||
$(declare -f "_package${_p#$pkgbase}") | ||
_package${_p#$pkgbase} | ||
}" | ||
done | ||
|
||
# vim:set ts=8 sts=2 sw=2 et: |