# Maintainer: Leonidas Spyropoulos # Contributor: Jan Alexander Steffens (heftig) # Credit to graysky for shamelessly copying PKGBUILD from linux-ck ### BUILD OPTIONS # Any/all of the next three variables may be set to ANYTHING # that is not null to enable their respective build options # Tweak kernel options prior to a build via nconfig _makenconfig= # Only compile select modules to reduce the number of modules built # # To keep track of which modules are needed for your specific system/hardware, # give module_db a try: https://aur.archlinux.org/packages/modprobed-db # This PKGBUILD reads the database kept if it exists # More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db _localmodcfg= # Compile using clang rather than gcc _clangbuild= # Optionally select a sub architecture by number or leave blank which will # require user interaction during the build. Note that the generic (default) # option is 39. _subarch=39 # 1. AMD Opteron/Athlon64/Hammer/K8 (MK8) # 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3) (NEW) # 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10) (NEW) # 4. AMD Barcelona (MBARCELONA) (NEW) # 5. AMD Bobcat (MBOBCAT) (NEW) # 6. AMD Jaguar (MJAGUAR) (NEW) # 7. AMD Bulldozer (MBULLDOZER) (NEW) # 8. AMD Piledriver (MPILEDRIVER) (NEW) # 9. AMD Steamroller (MSTEAMROLLER) (NEW) # 10. AMD Excavator (MEXCAVATOR) (NEW) # 11. AMD Zen (MZEN) (NEW) # 12. AMD Zen 2 (MZEN2) (NEW) # 13. AMD Zen 3 (MZEN3) (NEW) # 14. AMD Zen 4 (MZEN4) (NEW) # 15. Intel P4 / older Netburst based Xeon (MPSC) # 16. Intel Core 2 (MCORE2) # 17. Intel Atom (MATOM) # 18. Intel Nehalem (MNEHALEM) (NEW) # 19. Intel Westmere (MWESTMERE) (NEW) # 20. Intel Silvermont (MSILVERMONT) (NEW) # 21. Intel Goldmont (MGOLDMONT) (NEW) # 22. Intel Goldmont Plus (MGOLDMONTPLUS) (NEW) # 23. Intel Sandy Bridge (MSANDYBRIDGE) (NEW) # 24. Intel Ivy Bridge (MIVYBRIDGE) (NEW) # 25. Intel Haswell (MHASWELL) (NEW) # 26. Intel Broadwell (MBROADWELL) (NEW) # 27. Intel Skylake (MSKYLAKE) (NEW) # 28. Intel Skylake X (MSKYLAKEX) (NEW) # 29. Intel Cannon Lake (MCANNONLAKE) (NEW) # 30. Intel Ice Lake (MICELAKE) (NEW) # 31. Intel Cascade Lake (MCASCADELAKE) (NEW) # 32. Intel Cooper Lake (MCOOPERLAKE) (NEW) # 33. Intel Tiger Lake (MTIGERLAKE) (NEW) # 34. Intel Sapphire Rapids (MSAPPHIRERAPIDS) (NEW) # 35. Intel Rocket Lake (MROCKETLAKE) (NEW) # 36. Intel Alder Lake (MALDERLAKE) (NEW) # 37. Intel Raptor Lake (MRAPTORLAKE) (NEW) # 38. Intel Meteor Lake (MMETEORLAKE) (NEW) # 39. Generic-x86-64 (GENERIC_CPU) # 40. Generic-x86-64-v2 (GENERIC_CPU2) (NEW) # 41. Generic-x86-64-v3 (GENERIC_CPU3) (NEW) # 42. Generic-x86-64-v4 (GENERIC_CPU4) (NEW) # 43. Intel-Native optimizations autodetected by the compiler (MNATIVE_INTEL) (NEW) # 44. AMD-Native optimizations autodetected by the compiler (MNATIVE_AMD) (NEW) ### IMPORTANT: Do no edit below this line unless you know what you're doing pkgbase=linux-prjc pkgver=6.8.7 pkgrel=1 pkgdesc='Linux' url="https://gitlab.com/alfredchen/linux-prjc" arch=(x86_64) license=(GPL-2.0-only) makedepends=( bc cpio gettext git libelf pahole python perl tar xz ) [[ -n "$_clangbuild" ]] && makedepends+=(clang llvm lld) options=( !debug !strip ) _srcname=linux-${pkgver} _kernel_base_commit=12dadc409c2bd8538c6ee0e56e191efde6d92007 _kernel_arch_tag=${pkgver}-arch1 _arch_config_commit=9f042c5b72f15799ec45d5acec115dfa2b2caf34 _prjc_version=6.8-r6 _prjc_patch="prjc_v${_prjc_version}.patch" _gcc_more_v=20240221.2 source=( "https://www.kernel.org/pub/linux/kernel/v6.x/linux-$pkgver.tar".{xz,sign} "${pkgbase}-${pkgver}-config::https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/raw/${_arch_config_commit}/config" "${_prjc_patch}::https://gitlab.com/alfredchen/projectc/raw/master/${_prjc_version%-*}/${_prjc_patch}" "more-uarches-$_gcc_more_v.tar.gz::https://github.com/graysky2/kernel_compiler_patch/archive/$_gcc_more_v.tar.gz" "0001-${pkgbase}-${pkgver}-v${_kernel_arch_tag}.patch::https://github.com/archlinux/linux/compare/${_kernel_base_commit}..v${_kernel_arch_tag}.patch" "sched_numa_hop_mask.patch::https://gitlab.com/alfredchen/linux-prjc/-/commit/58a9cabf63a961c5fc501cf1ade12e1dc6029642.patch" ) validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman ) b2sums=('e8626a99c6c5769a8126d5ee1c7962c3df3c7a8c689193ffa864c4a4b8e72daeeaf22c3e3bb6ba5490eca3ef64c32a4a12980360a196444a53abadd791cd1855' 'SKIP' '3cceed93d989f168bbb9b18e99d2bb264e72da3ae6de34f94630eba0605be3577d139b62ab602ae8c3295796310fc7345577be234b288b9f1d4a2c61cbd5c015' 'ebcd249b775d9820aaf9bb93bbedd9c941589e2ba5002806a99927c16a2596846101bd7b66ba7a9395b7cfd002f8b8771a9b8167426460c87ca7c405263d8b9c' '221de3283857198a908a28b837cb542c5cf4e29868539f3f3c2c783c07c59a6868f3b1d4fe1e023e986fd3f9d17bd2e4f68b7c86fa5da76fcde25e5955b3c74d' '1d5de635ea609239d332105114de148685c1b54009c6e7f8d1806ff836ef5f31f5744eb31413b375ccef596504a569f87e0dbb5a6a98340c705715c96822e417' '07318d94a39ffe5fd252836a7a0d872c217bf57da25cab0411f04676273027763237b9eb8c83bf808c77e2f1b211469f740baf28fe8b6b739dcaf556b54a4ddb') _kernelname=${pkgbase#linux} : ${_kernelname:=-prjc} export EXTRAVERSION="" export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" _make() { test -s version make KERNELRELEASE="$( localversion.10-pkgrel echo "$_kernelname" > localversion.20-pkgname make defconfig make -s kernelrelease > version make mrproper local src for src in "${source[@]}"; do src="${src%%::*}" src="${src##*/}" [[ $src = 0*.patch ]] || continue echo "Applying patch $src..." patch -Np1 < "../$src" done echo "Setting config..." cp ../${pkgbase}-${pkgver}-config .config # https://bbs.archlinux.org/viewtopic.php?pid=1824594#p1824594 scripts/config --enable CONFIG_PSI_DEFAULT_DISABLED # https://bbs.archlinux.org/viewtopic.php?pid=1863567#p1863567 scripts/config --disable CONFIG_LATENCYTOP scripts/config --disable CONFIG_SCHED_DEBUG # FS#66613 # https://bugzilla.kernel.org/show_bug.cgi?id=207173#c6 scripts/config --disable CONFIG_KVM_WERROR echo "Applying patch ${_prjc_patch}..." patch -Np1 -i "$srcdir/${_prjc_patch}" # https://gitlab.com/alfredchen/linux-prjc/-/merge_requests/33 #patch -Np1 -i "$srcdir/sched_numa_hop_mask.patch" if [[ -n "$_clangbuild" ]]; then scripts/config -e LTO_CLANG_THIN export _LLVM=1 export _LLVM_IAS=$_LLVM fi # EXTRAVERSION is set by arch patch, we reset it to empty sed -ri 's/^(EXTRAVERSION\s=\s)(\-[a-z0-9]+)$/\1/' Makefile # non-interactively apply prjc default options # this isn't redundant if we want a clean selection of subarch below _make LLVM=$_LLVM LLVM_IAS=$_LLVM olddefconfig # diff -u ../${pkgbase}-${pkgver}-config .config || : # https://github.com/graysky2/kernel_gcc_patch # make sure to apply after olddefconfig to allow the next section echo "Patching to enable GCC optimization for other uarchs..." patch -Np1 -i "$srcdir/kernel_compiler_patch-$_gcc_more_v/more-uarches-for-kernel-6.8-rc4+.patch" if [ -n "$_subarch" ]; then # user wants a subarch so apply choice defined above interactively via 'yes' yes "$_subarch" | _make LLVM=$_LLVM LLVM_IAS=$_LLVM oldconfig else # no subarch defined so allow user to pick one _make LLVM=$_LLVM LLVM_IAS=$_LLVM oldconfig fi ### Optionally load needed modules for the make localmodconfig # See https://aur.archlinux.org/packages/modprobed-db if [ -n "$_localmodcfg" ]; then if [ -f $HOME/.config/modprobed.db ]; then echo "Running Steven Rostedt's make localmodconfig now" _make LLVM=$_LLVM LLVM_IAS=$_LLVM LSMOD="$HOME/.config/modprobed.db" localmodconfig else echo "No modprobed.db data found" exit fi fi echo "Prepared ${pkgbase} version $(