#!/usr/bin/bash EDITION="linux-lts54" RAMDISK_PATH="/run/user/$(id -u)/tmp" RAMDISK="$RAMDISK_PATH/$EDITION" SCRIPTPATH=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P ) N="ionice -c3 nice -n19 chrt -i 0" clean_ramdisk() { pushd . >/dev/null cd "$RAMDISK_PATH" || exit 1 rm -rf ./"$EDITION" popd >/dev/null } uname -a if [ "$1" != "nowait" ]; then echo "" pacolog -l 3 $EDITION sleep 8 else shift fi # Delete any old PKGBUILD and start fresh cd "$SCRIPTPATH" || exit 1 [ -d "$RAMDISK_PATH" ] && clean_ramdisk mkdir -p "$RAMDISK" || exit 1 rm -f "$EDITION" ln -s "$RAMDISK" "$EDITION" # Check for aur*.tar.gz file AUR=$(find . -maxdepth 0 -name "aur-*.tar.gz" | head -1) if [ -n "$AUR" ]; then echo "*** Using file $AUR as package source" cd "$EDITION" || exit 1 tar xvzf "$SCRIPTPATH/$AUR" mv aur-*/{*,.SRCINFO} . rmdir $(find -type d -name "aur-*") else echo -e "\n*** Building most current kernel version available" yay -G "$EDITION" cd "$EDITION" || exit 1 fi cp "$SCRIPTPATH/linux-5.4."*.tar.xz . 2>/dev/null || true cp "$SCRIPTPATH/patches/"* . # Edit PKGBUILD to change group and package name mv PKGBUILD PKGBUILD.ORIG awk -v edition="$EDITION" ' /^pkgbase=linux/ { print "pkgbase="edition"-custom\ngroups=(" "\x27" "custom" "\x27" ")\n"; next } /make htmldocs/ { printf "# %s\n",$0 next } /^pkgname=/ { sub(/ ?"\$pkgbase-docs"/,"",$0) print $0 next } /sphinx-workaround.patch/ { print " sphinx-workaround.patch" print " 1000-wireguard.patch" print " 1001-ath9k-regd.patch" print " 1002-ath9k-powerlimits.patch" print " 1003-ath9k-antenna-reduction.patch" print " 1004-gpio_keys_polled.patch" print " 1005-pcengines-54.patch" print " 1006-mlx4.patch" next } /b7c814c8183e4645947a6dcc3cbf80431de8a8fd4e895b780f9a5fd92f82cb8e/ { print " \047b7c814c8183e4645947a6dcc3cbf80431de8a8fd4e895b780f9a5fd92f82cb8e\047" print " \047SKIP\047" print " \047SKIP\047" print " \047SKIP\047" print " \047SKIP\047" print " \047SKIP\047" print " \047SKIP\047" print " \047SKIP\047)" next } { print $0 }' < PKGBUILD.ORIG > PKGBUILD # Delete sha256 sum for config file which we will modify SUM=$(sha256sum config | awk '{ printf $1 }') sed -i 's/'${SUM}'/SKIP/g' PKGBUILD diff -Nurp PKGBUILD.ORIG PKGBUILD PKGVER=$(grep ^pkgver= PKGBUILD | awk -F= '{ printf "%s",$2 }') rm PKGBUILD.ORIG # Modify kernel configuration cat <>config CONFIG_PINCTRL_AMD=y CONFIG_WIREGUARD=y # CONFIG_WIREGUARD_DEBUG is not set CONFIG_ATH_DEBUG=y CONFIG_ATH_REG_DYNAMIC_USER_REG_HINTS=y CONFIG_ATH_REG_DYNAMIC_USER_CERT_TESTING=y CONFIG_CFG80211_CERTIFICATION_ONUS=y CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=n CONFIG_CFG80211_REG_RELAX_NO_IR=y EOF if [ "$1" = "debug" ]; then echo -e "\nBuilding kernel with full debug info.\n" cat <>config CONFIG_CRASH_DUMP=y CONFIG_PROC_VMCORE=y CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_REDUCED=n CONFIG_DEBUG_INFO_SPLIT=n CONFIG_DEBUG_INFO_DWARF4=n CONFIG_GDB_SCRIPTS=n EOF fi # Build package time $N makepkg || { cd "$SCRIPTPATH" || exit 1 clean_ramdisk exit 1 } # Move final package files and clean up PKGS=$(ls "$EDITION"*.zst) mv -f $PKGS "$SCRIPTPATH" cd "$SCRIPTPATH" || exit 1 if [ "$1" = "debug" ]; then echo -e "\nCompressing crash debug kernel image..." VMK="$EDITION/src/linux-$PKGVER/vmlinux" chmod 0644 "$VMK" $N gzip "$VMK" mv "$VMK".gz . fi echo "" df -h | grep -E "^Filesystem|run/user" echo "" df -i | grep -E "^Filesystem|run/user" echo "" rm -f "$EDITION" clean_ramdisk # Install packages echo Press return to install... read -r if [ "$1" = "debug" ]; then sudo mkdir -p /var/crash sudo cp -f "$VMK".gz /var/crash/ else rm -f vmlinux.gz rm -f /var/crash/vmlinux.gz fi sudo pacman -U $PKGS