diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 679 |
1 files changed, 221 insertions, 458 deletions
@@ -1,479 +1,236 @@ -# Maintainer: graysky <graysky AT archlinux DOT us> -# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> - -### BUILD OPTIONS -# Set these variables to ANYTHING that is not null to enable them - -# Tweak kernel options prior to a build via nconfig -_makenconfig= - -# Optionally select a sub architecture by number if building in a clean chroot -# Leaving this entry blank will require user interaction during the build -# which will cause a failure to build if using makechrootpkg. Note that the -# generic (default) option is 30. -# -# Note - the march=native option is unavailable by this method, use the nconfig -# and manually select it. -# -# 1. AMD Opteron/Athlon64/Hammer/K8 (MK8) -# 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3) -# 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10) -# 4. AMD Barcelona (MBARCELONA) -# 5. AMD Bobcat (MBOBCAT) -# 6. AMD Jaguar (MJAGUAR) -# 7. AMD Bulldozer (MBULLDOZER) -# 8. AMD Piledriver (MPILEDRIVER) -# 9. AMD Steamroller (MSTEAMROLLER) -# 10. AMD Excavator (MEXCAVATOR) -# 11. AMD Zen (MZEN) -# 12. AMD Zen 2 (MZEN2) -# 13. Intel P4 / older Netburst based Xeon (MPSC) -# 14. Intel Atom (MATOM) -# 15. Intel Core 2 (MCORE2) -# 16. Intel Nehalem (MNEHALEM) -# 17. Intel Westmere (MWESTMERE) -# 18. Intel Silvermont (MSILVERMONT) -# 19. Intel Goldmont (MGOLDMONT) -# 20. Intel Goldmont Plus (MGOLDMONTPLUS) -# 21. Intel Sandy Bridge (MSANDYBRIDGE) -# 22. Intel Ivy Bridge (MIVYBRIDGE) -# 23. Intel Haswell (MHASWELL) -# 24. Intel Broadwell (MBROADWELL) -# 25. Intel Skylake (MSKYLAKE) -# 26. Intel Skylake X (MSKYLAKEX) -# 27. Intel Cannon Lake (MCANNONLAKE) -# 28. Intel Ice Lake (MICELAKE) -# 29. Intel Cascade Lake (MCASCADELAKE) -# 30. Intel Cooper Lake (MCOOPERLAKE) -# 31. Intel Tiger Lake (MTIGERLAKE) -# 32. Generic-x86-64 (GENERIC_CPU) -# 33. Native optimizations autodetected by GCC (MNATIVE) -_subarch= - -# Compile ONLY used modules to VASTLYreduce the number of modules built -# and the build time. -# -# To keep track of which modules are needed for your specific system/hardware, -# give module_db script a try: https://aur.archlinux.org/packages/modprobed-db -# This PKGBUILD read the database kept if it exists -# -# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db -_localmodcfg= - -### IMPORTANT: Do no edit below this line unless you know what you're doing - -pkgbase=linux-mainline-bcachefs -pkgver=5.9.14 -_pkgverpntrel=14 -pkgrel=1 -_smt_nice="true" -_runqueue_sharing="mc-llc" -_timer_freq="500" -_default_cpu_gov="performance" -arch=(x86_64) -url="https://wiki.archlinux.org/index.php/Bcachefs" -license=(GPL2) -makedepends=( - bc kmod libelf -) -options=('!strip') - -#_reponame="bcachefs" -#_repo_url="https://github.com/koverstreet/$_reponame" - -source=( - "https://www.kernel.org/pub/linux/kernel/v5.x/linux-$pkgver.tar".{xz,sign} - config - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch" - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0002-clear-patches.patch" - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0003-glitched-base.patch" - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0006-add-acs-overrides_iommu.patch" - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0007-v5.9-fsync.patch" - "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.9/0008-5.9-bcachefs.patch" -) - -validpgpkeys=( - 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds - '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman -) -md5sums=('4727d38ee292c83c230a30a1db067983' - 'SKIP' - 'acaec169590211b789b7873145f84564' - 'a4eb432da721ad9a721d62a8bbed6d1d' - '31a83ad2d5c11e560c7bfdfd59659c84' - '825adea276dddc5ce88e9484d1dd4575' - '168a924c7c83ecdc872a9a1c6d1c8bdb' - 'bc259da4c80e5847ba6b4ad21b2b3f16' - 'bff07060407a694a7bac6cbf0e75aa71') +# 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> +# Contributor: Hyper-KVM <hyperkvmx86 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/ Linux-tkg' +plain ' :sssssssssssssoosssssssoosssssssssssss: kernels' +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 +_ispkgbuild="true" + +source "$_where"/customization.cfg # load default configuration from file +source "$_where"/prepare + +_tkg_initscript + +if [[ "$_sub" = rc* ]]; then + _srcpath="linux-${_basekernel}-${_sub}" + kernel_site="https://git.kernel.org/torvalds/t/linux-${_basekernel}-${_sub}.tar.gz" +else + _srcpath="linux-${_basekernel}" + kernel_site="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${_basekernel}.tar.xz" + patch_site="https://cdn.kernel.org/pub/linux/kernel/v5.x/patch-${_basekernel}.${_sub}.xz" +fi + + +pkgbase="linux-mainline-bcachefs" #"${_custom_pkgbase}" +pkgname=("${pkgbase}" "${pkgbase}-headers") +pkgver="${_basekernel}"."${_sub}" +pkgrel=111 +pkgdesc='Linux-tkg with bcachefs' +bcachefs="git+https://github.com/koverstreet/bcachefs.git" +arch=('x86_64') # no i686 in here +url="http://www.kernel.org/" +license=('GPL2') +makedepends=('bison' 'xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf' 'pahole' 'patchutils' 'flex' 'python-sphinx' 'python-sphinx_rtd_theme' 'graphviz' 'imagemagick' 'git' 'cpio' 'perl' 'tar' 'xz') +if [ "$_compiler_name" = "-llvm" ]; then + makedepends+=( 'lld' 'clang' 'llvm') +fi +optdepends=('schedtool') +options=('!strip' 'docs') + +case $_basever in + 510) + opt_ver="5.8%2B" + source=("$bcachefs" + "$patch_site" + "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 + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch" + # TkG + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0002-clear-patches.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0003-glitched-base.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0003-glitched-cfs.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0004-glitched-ondemand-muqss.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0004-glitched-muqss.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0004-5.10-ck1.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0005-undead-glitched-ondemand-pds.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0005-undead-glitched-pds.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0005-v5.10_undead-pds099o.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0005-glitched-pds.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0006-add-acs-overrides_iommu.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0007-v5.10-fsync.patch" + #"https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0008-5.10-bcachefs.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0009-glitched-ondemand-bmq.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0009-glitched-bmq.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0009-prjc_v5.10-r2.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0011-ZFS-fix.patch" + #"https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0012-linux-hardened.patch" + "https://raw.githubusercontent.com/Frogging-Family/linux-tkg/master/linux-tkg-patches/5.10/0012-misc-additions.patch" + ) + sha256sums=('SKIP' + '8ecf194fbba49edf9014112f15928f0e869355ebe305b98a99db6f2674a931c2' + 'SKIP' + '277c2126ecb28175a3c79732c91767d2e2fc0094c80eb0047eee34e0804ab55a' + '1e15fc2ef3fa770217ecc63a220e5df2ddbcf3295eb4a021171e7edd4c6cc898' + '66a03c246037451a77b4d448565b1d7e9368270c7d02872fbd0b5d024ed0a997' + 'f6383abef027fd9a430fd33415355e0df492cdc3c90e9938bf2d98f4f63b32e6' + '35a7cde86fb94939c0f25a62b8c47f3de0dbd3c65f876f460b263181b3e92fc0' + '1ac97da07e72ec7e2b0923d32daacacfaa632a44c714d6942d9f143fe239e1b5' + '7058e57fd68367b029adc77f2a82928f1433daaf02c8c279cb2d13556c8804d7' + 'c605f638d74c61861ebdc36ebd4cb8b6475eae2f6273e1ccb2bbb3e10a2ec3fe' + '2bbbac963b6ca44ef3f8a71ec7c5cad7d66df860869a73059087ee236775970a' + 'e00096244e5cddaa5500d08b5f692fd3f25be9401dfa3b0fc624625ff2f5e198' + '62496f9ca788996181ef145f96ad26291282fcc3fb95cdc04080dcf84365be33' + '31b428c464905e44ed61cdcd1f42b4ec157ebe5a44cb5b608c4c99b466df66ba' + '06e93b57b7a0b96aefc2c0ec12c3be28c6e8dc8506fa8a22c5a2313814a3c7f3' + 'fca63d15ca4502aebd73e76d7499b243d2c03db71ff5ab0bf5cf268b2e576320' + '19661ec0d39f9663452b34433214c755179894528bf73a42f6ba52ccf572832a' + 'b302ba6c5bbe8ed19b20207505d513208fae1e678cf4d8e7ac0b154e5fe3f456' + '9fad4a40449e09522899955762c8928ae17f4cdaa16e01239fd12592e9d58177' + 'a557b342111849a5f920bbe1c129f3ff1fc1eff62c6bd6685e0972fc88e39911' + 'e308292fc42840a2366280ea7cf26314e92b931bb11f04ad4830276fc0326ee1' + '49262ce4a8089fa70275aad742fc914baa28d9c384f710c9a62f64796d13e104' + 'c41bf6a5d2ec52df766ce3019800cf7dd60a62f52811ead6f20dd06765870de2') + ;; +esac export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" prepare() { - echo "Remember to set _subarch and _localmodcfg, as well as _smt_nice and _runqueue_sharing" - - cd linux-${pkgver} - -# git init - -# git fetch --tags - -# git remote add $_reponame $_repo_url || true -# git fetch --prune --jobs=5 --ipv4 $_reponame master -# git reset --hard $_reponame/master - -# export EDITOR=true - -# git rebase bcachefs/master - - # fix pkgver to chosen pkgver - sed -i "s/SUBLEVEL = 0/SUBLEVEL = $_pkgverpntrel/g" $srcdir/linux-${pkgver}/Makefile - - echo "Setting version..." - scripts/setlocalversion --save-scmversion - echo "-$pkgrel" > localversion.10-pkgrel - echo "${pkgbase#linux}" > localversion.20-pkgname - -# local src -# for src in "${source[@]}"; do -# src="${src%%::*}" -# src="${src##*/}" -# [[ $src = 000*.patch ]] || continue -# echo "Applying patch $src..." -# patch -Np1 < "../$src" -# done - - patch -Np1 -i ../0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch - - # TkG - patch -Np1 -i ../0002-clear-patches.patch + rm -rf $pkgdir # Nuke the entire pkg folder so it'll get regenerated clean on next build - patch -Np1 -i ../0003-glitched-base.patch - - echo "Setting config..." - cp ../config .config - - # Set some -tkg defaults - echo "# CONFIG_DYNAMIC_FAULT is not set" >> ./.config - sed -i -e 's/CONFIG_DEFAULT_FQ_CODEL=y/# CONFIG_DEFAULT_FQ_CODEL is not set/' ./.config - echo "CONFIG_DEFAULT_CAKE=y" >> ./.config - echo "CONFIG_NR_TTY_DEVICES=63" >> ./.config - echo "CONFIG_RAID6_USE_PREFER_GEN=y" >> ./.config - echo "# CONFIG_NTP_PPS is not set" >> ./.config - sed -i -e 's/CONFIG_CRYPTO_LZ4=m/CONFIG_CRYPTO_LZ4=y/' ./.config - sed -i -e 's/CONFIG_CRYPTO_LZ4HC=m/CONFIG_CRYPTO_LZ4HC=y/' ./.config - sed -i -e 's/CONFIG_LZ4_COMPRESS=m/CONFIG_LZ4_COMPRESS=y/' ./.config - sed -i -e 's/CONFIG_LZ4HC_COMPRESS=m/CONFIG_LZ4HC_COMPRESS=y/' ./.config - #sed -i -e 's/CONFIG_RCU_BOOST_DELAY=500/CONFIG_RCU_BOOST_DELAY=0/' ./.config - sed -i -e 's/# CONFIG_CMDLINE_BOOL is not set/CONFIG_CMDLINE_BOOL=y/' ./.config - echo "CONFIG_CMDLINE=\"${_custom_commandline}\"" >> ./.config - echo "# CONFIG_CMDLINE_OVERRIDE is not set" >> ./.config - - if [ "$_font_autoselect" != "false" ]; then - sed -i -e 's/CONFIG_FONT_TER16x32=y/# CONFIG_FONT_TER16x32 is not set\nCONFIG_FONT_AUTOSELECT=y/' ./.config - fi + ln -s "${_where}/customization.cfg" "${srcdir}" # workaround - # Inject cpuopts options - echo "# CONFIG_MK8SSE3 is not set" >> ./.config - echo "# CONFIG_MK10 is not set" >> ./.config - echo "# CONFIG_MBARCELONA is not set" >> ./.config - echo "# CONFIG_MBOBCAT is not set" >> ./.config - echo "# CONFIG_MJAGUAR is not set" >> ./.config - echo "# CONFIG_MBULLDOZER is not set" >> ./.config - echo "# CONFIG_MPILEDRIVER is not set" >> ./.config - echo "# CONFIG_MSTEAMROLLER is not set" >> ./.config - echo "# CONFIG_MEXCAVATOR is not set" >> ./.config - echo "# CONFIG_MZEN is not set" >> ./.config - echo "# CONFIG_MZEN2 is not set" >> ./.config - echo "# CONFIG_MATOM is not set" >> ./.config - echo "# CONFIG_MNEHALEM is not set" >> ./.config - echo "# CONFIG_MWESTMERE is not set" >> ./.config - echo "# CONFIG_MSILVERMONT is not set" >> ./.config - echo "# CONFIG_MSANDYBRIDGE is not set" >> ./.config - echo "# CONFIG_MIVYBRIDGE is not set" >> ./.config - echo "# CONFIG_MHASWELL is not set" >> ./.config - echo "# CONFIG_MBROADWELL is not set" >> ./.config - echo "# CONFIG_MSKYLAKE is not set" >> ./.config - echo "# CONFIG_MSKYLAKEX is not set" >> ./.config - echo "# CONFIG_MCANNONLAKE is not set" >> ./.config - echo "# CONFIG_MICELAKE is not set" >> ./.config - echo "# CONFIG_MGOLDMONT is not set" >> ./.config - echo "# CONFIG_MGOLDMONTPLUS is not set" >> ./.config - echo "# CONFIG_MCASCADELAKE is not set" >> ./.config - echo "# CONFIG_MCOOPERLAKE is not set" >> ./.config - echo "# CONFIG_MTIGERLAKE is not set" >> ./.config + #cd "${srcdir}/${_srcpath}" + cd "${srcdir}/bcachefs" - # cpu opt - if [ -n "" ] && [ "$_subarch" != "33" ]; then - echo "# CONFIG_MNATIVE is not set" >> ./.config - fi - - if [ -n "" ] && [ "$_subarch" != "32" ]; then - sed -i -e 's/CONFIG_GENERIC_CPU=y/# CONFIG_GENERIC_CPU is not set/' ./.config - fi + msg2 "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "${pkgbase#linux}" > localversion.20-pkgname + + msg2 "Fetch and merge stable..." + git fetch origin + git merge origin/master + + _tkg_srcprep +} - if [ "$_subarch" == "33" ] || [ "$_subarch" == "" ]; then - echo "CONFIG_MNATIVE=y" >> ./.config - elif [ "$_subarch" == "1" ]; then - sed -i -e 's/# CONFIG_MK8 is not set/CONFIG_MK8=y/' ./.config - elif [ "$_subarch" == "2" ]; then - sed -i -e 's/# CONFIG_MK8SSE3 is not set/CONFIG_MK8SSE3=y/' ./.config - elif [ "$_subarch" == "3" ]; then - sed -i -e 's/# CONFIG_MK10 is not set/CONFIG_MK10=y/' ./.config - elif [ "$_subarch" == "4" ]; then - sed -i -e 's/# CONFIG_MBARCELONA is not set/CONFIG_MBARCELONA=y/' ./.config - elif [ "$_subarch" == "5" ]; then - sed -i -e 's/# CONFIG_MBOBCAT is not set/CONFIG_MBOBCAT=y/' ./.config - elif [ "$_subarch" == "6" ]; then - sed -i -e 's/# CONFIG_MJAGUAR is not set/CONFIG_MJAGUAR=y/' ./.config - elif [ "$_subarch" == "7" ]; then - sed -i -e 's/# CONFIG_MBULLDOZER is not set/CONFIG_MBULLDOZER=y/' ./.config - elif [ "$_subarch" == "8" ]; then - sed -i -e 's/# CONFIG_MPILEDRIVER is not set/CONFIG_MPILEDRIVER=y/' ./.config - elif [ "$_subarch" == "9" ]; then - sed -i -e 's/# CONFIG_MSTEAMROLLER is not set/CONFIG_MSTEAMROLLER=y/' ./.config - elif [ "$_subarch" == "10" ]; then - sed -i -e 's/# CONFIG_MEXCAVATOR is not set/CONFIG_MEXCAVATOR=y/' ./.config - elif [ "$_subarch" == "11" ]; then - sed -i -e 's/# CONFIG_MZEN is not set/CONFIG_MZEN=y/' ./.config - elif [ "$_subarch" == "12" ]; then - sed -i -e 's/# CONFIG_MZEN2 is not set/CONFIG_MZEN2=y/' ./.config - elif [ "$_subarch" == "13" ]; then - sed -i -e 's/# CONFIG_MPSC is not set/CONFIG_MPSC=y/' ./.config - elif [ "$_subarch" == "14" ]; then - sed -i -e 's/# CONFIG_MATOM is not set/CONFIG_MATOM=y/' ./.config - elif [ "$_subarch" == "15" ]; then - sed -i -e 's/# CONFIG_MCORE2 is not set/CONFIG_MCORE2=y/' ./.config - elif [ "$_subarch" == "16" ]; then - sed -i -e 's/# CONFIG_MNEHALEM is not set/CONFIG_MNEHALEM=y/' ./.config - elif [ "$_subarch" == "17" ]; then - sed -i -e 's/# CONFIG_MWESTMERE is not set/CONFIG_MWESTMERE=y/' ./.config - elif [ "$_subarch" == "18" ]; then - sed -i -e 's/# CONFIG_MSILVERMONT is not set/CONFIG_MSILVERMONT=y/' ./.config - elif [ "$_subarch" == "19" ]; then - sed -i -e 's/# CONFIG_MGOLDMONT is not set/CONFIG_MGOLDMONT=y/' ./.config - elif [ "$_subarch" == "20" ]; then - sed -i -e 's/# CONFIG_MGOLDMONTPLUS is not set/CONFIG_MGOLDMONTPLUS=y/' ./.config - elif [ "$_subarch" == "21" ]; then - sed -i -e 's/# CONFIG_MSANDYBRIDGE is not set/CONFIG_MSANDYBRIDGE=y/' ./.config - elif [ "$_subarch" == "22" ]; then - sed -i -e 's/# CONFIG_MIVYBRIDGE is not set/CONFIG_MIVYBRIDGE=y/' ./.config - elif [ "$_subarch" == "23" ]; then - sed -i -e 's/# CONFIG_MHASWELL is not set/CONFIG_MHASWELL=y/' ./.config - elif [ "$_subarch" == "24" ]; then - sed -i -e 's/# CONFIG_MBROADWELL is not set/CONFIG_MBROADWELL=y/' ./.config - elif [ "$_subarch" == "25" ]; then - sed -i -e 's/# CONFIG_MSKYLAKE is not set/CONFIG_MSKYLAKE=y/' ./.config - elif [ "$_subarch" == "26" ]; then - sed -i -e 's/# CONFIG_MSKYLAKEX is not set/CONFIG_MSKYLAKEX=y/' ./.config - elif [ "$_subarch" == "27" ]; then - sed -i -e 's/# CONFIG_MCANNONLAKE is not set/CONFIG_MCANNONLAKE=y/' ./.config - elif [ "$_subarch" == "28" ]; then - sed -i -e 's/# CONFIG_MICELAKE is not set/CONFIG_MICELAKE=y/' ./.config - elif [ "$_subarch" == "29" ]; then - sed -i -e 's/# CONFIG_MCASCADELAKE is not set/CONFIG_MCASCADELAKE=y/' ./.config - elif [ "$_subarch" == "30" ]; then - sed -i -e 's/# CONFIG_MCOOPERLAKE is not set/CONFIG_MCOOPERLAKE=y/' ./.config - elif [ "$_subarch" == "31" ]; then - sed -i -e 's/# CONFIG_MTIGERLAKE is not set/CONFIG_MTIGERLAKE=y/' ./.config +build() { + #cd "${srcdir}/${_srcpath}" + cd "${srcdir}/bcachefs" + + # Use custom compiler paths if defined + if [ "$_compiler_name" = "-llvm" ] && [ -n "${CUSTOM_LLVM_PATH}" ]; then + PATH=${CUSTOM_LLVM_PATH}/bin:${CUSTOM_LLVM_PATH}/lib:${CUSTOM_LLVM_PATH}/include:${PATH} + elif [ -n "${CUSTOM_GCC_PATH}" ]; then + PATH=${CUSTOM_GCC_PATH}/bin:${CUSTOM_GCC_PATH}/lib:${CUSTOM_GCC_PATH}/include:${PATH} fi - # smt nice - if [ "$_smt_nice" == "true" ]; then - echo "CONFIG_SMT_NICE=y" >> ./.config - elif [ "$_smt_nice" == "false" ]; then - echo "# CONFIG_SMT_NICE is not set" >> ./.config - fi - - # rq sharing - if [ "$_runqueue_sharing" == "none" ]; then - echo -e "CONFIG_RQ_NONE=y\n# CONFIG_RQ_SMT is not set\n# CONFIG_RQ_MC is not set\n# CONFIG_RQ_MC_LLC is not set\n# CONFIG_RQ_SMP is not set\n# CONFIG_RQ_ALL is not set" >> ./.config - elif [ -z "$_runqueue_sharing" ] || [ "$_runqueue_sharing" == "smt" ]; then - echo -e "# CONFIG_RQ_NONE is not set\nCONFIG_RQ_SMT=y\n# CONFIG_RQ_MC is not set\n# CONFIG_RQ_MC_LLC is not set\n# CONFIG_RQ_SMP is not set\n# CONFIG_RQ_ALL is not set" >> ./.config - elif [ "$_runqueue_sharing" == "mc" ]; then - echo -e "# CONFIG_RQ_NONE is not set\n# CONFIG_RQ_SMT is not set\nCONFIG_RQ_MC=y\n# CONFIG_RQ_MC_LLC is not set\n# CONFIG_RQ_SMP is not set\n# CONFIG_RQ_ALL is not set" >> ./.config - elif [ "$_runqueue_sharing" == "smp" ]; then - echo -e "# CONFIG_RQ_NONE is not set\n# CONFIG_RQ_SMT is not set\n# CONFIG_RQ_MC is not set\n# CONFIG_RQ_MC_LLC is not set\nCONFIG_RQ_SMP=y\n# CONFIG_RQ_ALL is not set" >> ./.config - elif [ "$_runqueue_sharing" == "all" ]; then - echo -e "# CONFIG_RQ_NONE is not set\n# CONFIG_RQ_SMT is not set\n# CONFIG_RQ_MC is not set\n# CONFIG_RQ_MC_LLC is not set\n# CONFIG_RQ_SMP is not set\nCONFIG_RQ_ALL=y" >> ./.config - elif [ "$_runqueue_sharing" == "mc-llc" ]; then - echo -e "# CONFIG_RQ_NONE is not set\n# CONFIG_RQ_SMT is not set\n# CONFIG_RQ_MC is not set\nCONFIG_RQ_MC_LLC=y\n# CONFIG_RQ_SMP is not set\n# CONFIG_RQ_ALL is not set" >> ./.config - fi - - # timer freq - if [ -n "$_timer_freq" ] && [ "$_timer_freq" != "300" ]; then - sed -i -e 's/CONFIG_HZ_300=y/# CONFIG_HZ_300 is not set/' ./.config - sed -i -e 's/CONFIG_HZ_300_NODEF=y/# CONFIG_HZ_300_NODEF is not set/' ./.config - if [ "$_timer_freq" == "1000" ]; then - sed -i -e 's/# CONFIG_HZ_1000 is not set/CONFIG_HZ_1000=y/' ./.config - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=1000/' ./.config - echo "# CONFIG_HZ_500 is not set" >> ./.config - echo "# CONFIG_HZ_500_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_750 is not set" >> ./.config - echo "# CONFIG_HZ_750_NODEF is not set" >> ./.config - echo "CONFIG_HZ_1000_NODEF=y" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config - elif [ "$_timer_freq" == "750" ]; then - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=750/' ./.config - echo "# CONFIG_HZ_500 is not set" >> ./.config - echo "# CONFIG_HZ_500_NODEF is not set" >> ./.config - echo "CONFIG_HZ_750=y" >> ./.config - echo "CONFIG_HZ_750_NODEF=y" >> ./.config - echo "# CONFIG_HZ_1000_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config - elif [ "$_timer_freq" == "500" ]; then - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=500/' ./.config - echo "CONFIG_HZ_500=y" >> ./.config - echo "CONFIG_HZ_500_NODEF=y" >> ./.config - echo "# CONFIG_HZ_750 is not set" >> ./.config - echo "# CONFIG_HZ_750_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_1000_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config - elif [ "$_timer_freq" == "100" ]; then - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=100/' ./.config - echo "# CONFIG_HZ_500 is not set" >> ./.config - echo "# CONFIG_HZ_750 is not set" >> ./.config - echo "# CONFIG_HZ_1000_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_750_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_500_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config - echo "CONFIG_HZ_100=y" >> ./.config - echo "CONFIG_HZ_100_NODEF=y" >> ./.config - fi - elif [ "${_cpusched}" == "MuQSS" ] && [ -z "$_timer_freq" ]; then - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=100/' ./.config - echo "# CONFIG_HZ_500 is not set" >> ./.config - echo "# CONFIG_HZ_750 is not set" >> ./.config - echo "# CONFIG_HZ_1000_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_750_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_500_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config - echo "CONFIG_HZ_100=y" >> ./.config - echo "CONFIG_HZ_100_NODEF=y" >> ./.config + if [ "$_force_all_threads" = "true" ]; then + _force_all_threads="-j$((`nproc`+1))" else - sed -i -e 's/CONFIG_HZ_300=y/# CONFIG_HZ_300 is not set/' ./.config - sed -i -e 's/CONFIG_HZ_300_NODEF=y/# CONFIG_HZ_300_NODEF is not set/' ./.config - sed -i -e 's/CONFIG_HZ=300/CONFIG_HZ=500/' ./.config - echo "CONFIG_HZ_500=y" >> ./.config - echo "CONFIG_HZ_500_NODEF=y" >> ./.config - echo "# CONFIG_HZ_250_NODEF is not set" >> ./.config - echo "# CONFIG_HZ_300_NODEF is not set" >> ./.config + _force_all_threads="${MAKEFLAGS}" fi - # default cpu gov - if [ "$_default_cpu_gov" == "performance" ]; then - sed -i -e 's/CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y/# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set/' ./.config - sed -i -e 's/# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set/CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y/' ./.config - elif [ "$_default_cpu_gov" == "ondemand" ]; then - sed -i -e 's/CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y/# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set/' ./.config - sed -i -e 's/# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set/CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y/' ./.config + # 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 - - # disable numa - sed -i -e 's/CONFIG_NUMA=y/# CONFIG_NUMA is not set/' \ - -i -e '/CONFIG_AMD_NUMA=y/d' \ - -i -e '/CONFIG_X86_64_ACPI_NUMA=y/d' \ - -i -e '/CONFIG_NODES_SPAN_OTHER_NODES=y/d' \ - -i -e '/# CONFIG_NUMA_EMU is not set/d' \ - -i -e '/CONFIG_NODES_SHIFT=6/d' \ - -i -e '/CONFIG_NEED_MULTIPLE_NODES=y/d' \ - -i -e '/CONFIG_USE_PERCPU_NUMA_NODE_ID=y/d' \ - -i -e '/CONFIG_ACPI_NUMA=y/d' ./.config - - # acs override - patch -Np1 -i ../0006-add-acs-overrides_iommu.patch - - # fsync support - patch -Np1 -i ../0007-v5.9-fsync.patch - # bcachefs - patch -Np1 -i ../0008-5.9-bcachefs.patch - - # https://bbs.archlinux.org/viewtopic.php?pid=1824594#p1824594 - sed -i -e 's/# CONFIG_PSI_DEFAULT_DISABLED is not set/CONFIG_PSI_DEFAULT_DISABLED=y/' ./.config + # document the TkG variables, excluding "_", "_EXT_CONFIG_PATH", "_where", and "_path". + declare -p | cut -d ' ' -f 3 | grep -P '^_(?!=|EXT_CONFIG_PATH|where|path)' > "${srcdir}/customization-full.cfg" - # https://bbs.archlinux.org/viewtopic.php?pid=1863567#p1863567 - sed -i -e '/CONFIG_LATENCYTOP=/ s,y,n,' \ - -i -e '/CONFIG_SCHED_DEBUG=/ s,y,n,' ./.config + # remove -O2 flag and place user optimization flag + CFLAGS=${CFLAGS/-O2/} + CFLAGS+=" ${_compileropt}" - make prepare - - ### 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 LSMOD=$HOME/.config/modprobed.db localmodconfig - else - echo "No modprobed.db data found" - exit - fi - fi - - make -s kernelrelease > version - echo "Prepared $pkgbase version $(<version)" - - [[ -z "$_makenconfig" ]] || make nconfig - - # save configuration for later reuse - cat .config > "${startdir}/config.last" -} - -build() { - echo "Remember to set _subarch and _localmodcfg, as well as _smt_nice and _runqueue_sharing" - - cd linux-${pkgver} - make all + # build! + _runtime=$( time ( schedtool -B -n 1 -e ionice -n 1 make ${_force_all_threads} ${llvm_opt} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 ) || _runtime=$( time ( make ${_force_all_threads} ${llvm_opt} LOCALVERSION= bzImage modules 2>&1 ) 3>&1 1>&2 2>&3 ) } -_package() { - pkgdesc="The ${pkgbase/linux/Linux} kernel and modules with the ck1 patchset featuring MuQSS CPU scheduler" - depends=(coreutils kmod initramfs) - optdepends=('crda: to set the correct wireless channels of your country' - 'linux-firmware: firmware images needed for some devices') - provides=("linux-mainline-bcachefs=${pkgver}") - #groups=('ck-generic') - - cd linux-${pkgver} - - local kernver="$(<version)" - local modulesdir="$pkgdir/usr/lib/modules/$kernver" - - echo "Installing boot image..." +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}" + cd "${srcdir}/bcachefs" + + # 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" - # - # hard-coded path in case user defined CC=xxx for build which causes errors - # see this FS https://bugs.archlinux.org/task/64315 - install -Dm644 arch/x86/boot/bzImage "$modulesdir/vmlinuz" + install -Dm644 "$(make ${llvm_opt} -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" modules_install + 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" } -_package-headers() { - pkgdesc="Headers and scripts for building modules for ${pkgbase/linux/Linux} kernel" - depends=('linux-mainline-bcachefs') # added to keep kernel and headers packages matched - provides=("linux-mainline-bcachefs-headers=${pkgver}") - #groups=('ck-generic') +hackheaders() { + pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel" + provides=("linux-headers=${pkgver}" "${pkgbase}-headers=${pkgver}") - cd linux-${pkgver} - local builddir="$pkgdir/usr/lib/modules/$(<version)/build" + #cd "${srcdir}/${_srcpath}" + cd "${srcdir}/bcachefs" + + local builddir="${pkgdir}/usr/lib/modules/$(<version)/build" - echo "Installing build files..." + msg2 "Installing build files..." install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \ localversion.* version vmlinux install -Dt "$builddir/kernel" -m644 kernel/Makefile @@ -486,7 +243,7 @@ _package-headers() { # add xfs and shmem for aufs building mkdir -p "$builddir"/{fs/xfs,mm} - echo "Installing headers..." + 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 @@ -502,10 +259,10 @@ _package-headers() { install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h - echo "Installing KConfig files..." + msg2 "Installing KConfig files..." find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; - echo "Removing unneeded architectures..." + msg2 "Removing unneeded architectures..." local arch for arch in "$builddir"/arch/*/; do [[ $arch = */x86/ ]] && continue @@ -513,16 +270,16 @@ _package-headers() { rm -r "$arch" done - echo "Removing documentation..." + msg2 "Removing documentation..." rm -r "$builddir/Documentation" - echo "Removing broken symlinks..." + msg2 "Removing broken symlinks..." find -L "$builddir" -type l -printf 'Removing %P\n' -delete - echo "Removing loose objects..." + msg2 "Removing loose objects..." find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete - echo "Stripping build tools..." + msg2 "Stripping build tools..." local file while read -rd '' file; do case "$(file -bi "$file")" in @@ -537,18 +294,24 @@ _package-headers() { esac done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0) - echo "Adding symlink..." + 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 } -pkgname=("$pkgbase" "$pkgbase-headers") -for _p in "${pkgname[@]}"; do - eval "package_$_p() { - $(declare -f "_package${_p#$pkgbase}") - _package${_p#$pkgbase} - }" -done +source /dev/stdin <<EOF +package_${pkgbase}() { +hackbase +} -# vim:set ts=8 sts=2 sw=2 et: +package_${pkgbase}-headers() { +hackheaders +} +EOF |