Guest User

PKGBUILD

a guest
Jun 3rd, 2020
90
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Maintainer: Leonidas Spyropoulos <artafinde AT gmail DOT com>
  2. # Credit to graysky for shamelessly copying PKGBUILD from linux-ck
  3.  
  4. ### BUILD OPTIONS
  5. # Set these variables to ANYTHING that is not null to enable them
  6.  
  7. # Tweak kernel options prior to a build via nconfig
  8. _makenconfig=
  9.  
  10. # Compile ONLY used modules to VASTLYreduce the number of modules built
  11. # and the build time.
  12. #
  13. # To keep track of which modules are needed for your specific system/hardware,
  14. # give module_db script a try: https://aur.archlinux.org/packages/modprobed-db
  15. # This PKGBUILD read the database kept if it exists
  16. #
  17. # More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db
  18. _localmodcfg=
  19.  
  20. ### IMPORTANT: Do no edit below this line unless you know what you're doing
  21.  
  22. pkgbase=linux-gc
  23. pkgver=5.7
  24. pkgrel=1
  25. pkgdesc='Linux'
  26. url="https://cchalpha.blogspot.co.uk/"
  27. arch=(x86_64)
  28. license=(GPL2)
  29. makedepends=(
  30. bc kmod libelf
  31. xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick
  32. git
  33. )
  34. options=('!strip')
  35. _srcname=linux-${pkgver}
  36. _bmqversion=5.7-r0
  37. _bmq_patch="bmq_v${_bmqversion}.patch"
  38. _gcc_more_v='20200527'
  39. source=(
  40. "https://www.kernel.org/pub/linux/kernel/v5.x/linux-$pkgver.tar".{xz,sign}
  41. config # the main kernel config file
  42. "0000-sphinx-workaround.patch"
  43. "0001-futex-wait-multiple-5.2.1.patch"
  44. "${_bmq_patch}::https://gitlab.com/alfredchen/bmq/raw/master/${_bmqversion%-*}/${_bmq_patch}"
  45. "enable_additional_cpu_optimizations-${_gcc_more_v}.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/${_gcc_more_v}.tar.gz"
  46. "0002-ZEN-Add-sysctl-and-CONFIG-to-disallow-unprivileged-C.patch::https://github.com/archlinux/linux/commit/16945cf3f9e403f531985ba425118584d27414f1.patch"
  47. "fix_compile_error_in_psi_c.patch::https://gitlab.com/alfredchen/linux-bmq/-/commit/53c690361e12a1097383c7940471216a2f1b0d03.patch"
  48. "resync_thermal_cpu_cooling_sched_core.patch::https://gitlab.com/alfredchen/linux-bmq/-/commit/ad9eb862e06f395e846a2f2e084e5b0e7eb9ca4b.patch"
  49. )
  50. validpgpkeys=(
  51. 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
  52. '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
  53. 'A2FF3A36AAA56654109064AB19802F8B0D70FC30' # Jan Alexander Steffens (heftig)
  54. )
  55. sha256sums=('de8163bb62f822d84f7a3983574ec460060bf013a78ff79cd7c979ff1ec1d7e0'
  56. 'SKIP'
  57. '9c846fa9498b9e443ddf4e9286f671e3be9fa3a2fc63c8ffd60fd6a69dc4d8a6'
  58. '345e2e567a1eb681b9ca620cfa905ce4b0edf5b8868b5ebe1015cc6b7a9497a5'
  59. 'cbb164c3bc0550018924f75713a76abdc51aa2c3d1b37c12414b80ccb4b96662'
  60. 'd31a3e698eb8da8ea76ac05bf93a2c70f4ace014662e87c62d9fc3c75b7f55fc'
  61. '8255e6b6e0bdcd66a73d917b56cf2cccdd1c3f4b3621891cfffc203404a5b6dc'
  62. '10bfc7bbe7f98582e171cb4c0abd800ba6428b3e2cdca4ff4dfbd2070cff69bb'
  63. 'c954598b9f527b7546abc2b609808042b51ff802f495e30139e4840b61a628fc'
  64. '0407cd1211d590c90f791fb3544ef391bb102a6a41d91a2608254cb34fd22367')
  65.  
  66. _kernelname=${pkgbase#linux}
  67. : ${_kernelname:=-gc}
  68. export KBUILD_BUILD_HOST=archlinux
  69. export KBUILD_BUILD_USER=$pkgbase
  70. export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
  71.  
  72. prepare() {
  73. cd $_srcname
  74.  
  75. echo "Setting version..."
  76. scripts/setlocalversion --save-scmversion
  77. echo "-$pkgrel" > localversion.10-pkgrel
  78. echo "$_kernelname" > localversion.20-pkgname
  79.  
  80. local src
  81. for src in "${source[@]}"; do
  82. src="${src%%::*}"
  83. src="${src##*/}"
  84. [[ $src = 0*.patch ]] || continue
  85. echo "Applying patch $src..."
  86. patch -Np1 < "../$src"
  87. done
  88.  
  89. echo "Setting config..."
  90. cp ../config .config
  91.  
  92. echo "Applying patch ${_bmq_patch}..."
  93. patch -Np1 -i "$srcdir/${_bmq_patch}"
  94. # Fix compile error in psi.c
  95. patch -Np1 -i "$srcdir/fix_compile_error_in_psi_c.patch"
  96. patch -Np1 -i "$srcdir/resync_thermal_cpu_cooling_sched_core.patch"
  97.  
  98. # non-interactively apply ck1 default options
  99. # this isn't redundant if we want a clean selection of subarch below
  100. make olddefconfig
  101.  
  102. # https://github.com/graysky2/kernel_gcc_patch
  103. echo "Applying enable_additional_cpu_optimizations-${_gcc_more_v}..."
  104. patch -Np1 -i "$srcdir/kernel_gcc_patch-$_gcc_more_v/enable_additional_cpu_optimizations_for_gcc_v9.1+_kernel_v5.7+.patch"
  105.  
  106. make oldconfig
  107.  
  108. ### Optionally load needed modules for the make localmodconfig
  109. # See https://aur.archlinux.org/packages/modprobed-db
  110. if [ -n "$_localmodcfg" ]; then
  111. if [ -f $HOME/.config/modprobed.db ]; then
  112. echo "Running Steven Rostedt's make localmodconfig now"
  113. make LSMOD=$HOME/.config/modprobed.db localmodconfig
  114. else
  115. echo "No modprobed.db data found"
  116. exit
  117. fi
  118. fi
  119.  
  120. make -s kernelrelease > version
  121. echo "Prepared ${pkgbase} version $(<version)"
  122.  
  123. [[ -z "$_makenconfig" ]] || make nconfig
  124.  
  125. # save configuration for later reuse
  126. cat .config > "${startdir}/config.last"
  127. }
  128.  
  129. build() {
  130. cd $_srcname
  131. make all
  132. }
  133.  
  134. _package() {
  135. pkgdesc="The $pkgdesc kernel and modules with the BMQ CPU scheduler"
  136. depends=(coreutils kmod initramfs)
  137. optdepends=('crda: to set the correct wireless channels of your country'
  138. 'linux-firmware: firmware images needed for some devices')
  139. provides=("linux-gc=${pkgver}")
  140.  
  141. cd $_srcname
  142. local kernver="$(<version)"
  143. local modulesdir="$pkgdir/usr/lib/modules/$kernver"
  144.  
  145. echo "Installing boot image..."
  146. # systemd expects to find the kernel here to allow hibernation
  147. # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
  148. install -Dm644 "$(make -s image_name)" "$modulesdir/vmlinuz"
  149.  
  150. # Used by mkinitcpio to name the kernel
  151. echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
  152.  
  153. echo "Installing modules..."
  154. make INSTALL_MOD_PATH="$pkgdir/usr" modules_install
  155.  
  156. # remove build and source links
  157. rm "$modulesdir"/{source,build}
  158.  
  159. echo "Fixing permissions..."
  160. chmod -Rc u=rwX,go=rX "$pkgdir"
  161. }
  162.  
  163. _package-headers() {
  164. pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
  165. depends=('linux-gc')
  166. provides=("linux-gc-headers=${pkgver}" "linux-headers=${pkgver}")
  167.  
  168. cd $_srcname
  169. local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
  170.  
  171. echo "Installing build files..."
  172. install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
  173. localversion.* version vmlinux
  174. install -Dt "$builddir/kernel" -m644 kernel/Makefile
  175. install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
  176. cp -t "$builddir" -a scripts
  177.  
  178. # add objtool for external module building and enabled VALIDATION_STACK option
  179. install -Dt "$builddir/tools/objtool" tools/objtool/objtool
  180.  
  181. # add xfs and shmem for aufs building
  182. mkdir -p "$builddir"/{fs/xfs,mm}
  183.  
  184. echo "Installing headers..."
  185. cp -t "$builddir" -a include
  186. cp -t "$builddir/arch/x86" -a arch/x86/include
  187. install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
  188.  
  189. install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
  190. install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
  191.  
  192. # http://bugs.archlinux.org/task/13146
  193. install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
  194.  
  195. # http://bugs.archlinux.org/task/20402
  196. install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
  197. install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
  198. install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
  199.  
  200. echo "Installing KConfig files..."
  201. find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
  202.  
  203. echo "Removing unneeded architectures..."
  204. local arch
  205. for arch in "$builddir"/arch/*/; do
  206. [[ $arch = */x86/ ]] && continue
  207. echo "Removing $(basename "$arch")"
  208. rm -r "$arch"
  209. done
  210.  
  211. echo "Removing documentation..."
  212. rm -r "$builddir/Documentation"
  213.  
  214. echo "Removing broken symlinks..."
  215. find -L "$builddir" -type l -printf 'Removing %P\n' -delete
  216.  
  217. echo "Removing loose objects..."
  218. find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
  219.  
  220. echo "Stripping build tools..."
  221. local file
  222. while read -rd '' file; do
  223. case "$(file -bi "$file")" in
  224. application/x-sharedlib\;*) # Libraries (.so)
  225. strip -v $STRIP_SHARED "$file" ;;
  226. application/x-archive\;*) # Libraries (.a)
  227. strip -v $STRIP_STATIC "$file" ;;
  228. application/x-executable\;*) # Binaries
  229. strip -v $STRIP_BINARIES "$file" ;;
  230. application/x-pie-executable\;*) # Relocatable binaries
  231. strip -v $STRIP_SHARED "$file" ;;
  232. esac
  233. done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
  234.  
  235. echo "Adding symlink..."
  236. mkdir -p "$pkgdir/usr/src"
  237. ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
  238.  
  239. echo "Fixing permissions..."
  240. chmod -Rc u=rwX,go=rX "$pkgdir"
  241. }
  242.  
  243. pkgname=("$pkgbase" "$pkgbase-headers")
  244. for _p in "${pkgname[@]}"; do
  245. eval "package_$_p() {
  246. $(declare -f "_package${_p#$pkgbase}")
  247. _package${_p#$pkgbase}
  248. }"
  249. done
  250.  
  251. # vim:set ts=8 sts=2 sw=2 et:
RAW Paste Data