Advertisement
Guest User

linux-mainline pkgbuild

a guest
Mar 3rd, 2018
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.53 KB | None | 0 0
  1. #
  2. # Maintainer: Mikael Eriksson <mikael_eriksson@miffe.org>
  3. #
  4. # Based on the linux package by:
  5. # Maintainer: Tobias Powalowski <tpowa@archlinux.org>
  6. # Maintainer: Thomas Baechler <thomas@archlinux.org>
  7.  
  8. pkgbase=linux-mainline # Build stock -ARCH kernel
  9. #pkgbase=linux-custom # Build kernel with a different name
  10. _tag=v4.15
  11. pkgver=4.15
  12. pkgrel=1
  13. arch=('x86_64')
  14. url="https://www.kernel.org/"
  15. license=('GPL2')
  16. makedepends=('xmlto' 'kmod' 'inetutils' 'bc' 'libelf' 'git')
  17. options=('!strip')
  18. source=(
  19. "git+https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git#tag=$_tag"
  20. 'linux-mainline.patch' # a patch for chromebook functionality
  21. 'config' # the main kernel config file
  22. '60-linux.hook' # pacman hook for depmod
  23. '90-linux.hook' # pacman hook for initramfs regeneration
  24. 'linux.preset' # standard config files for mkinitcpio ramdisk
  25. )
  26. validpgpkeys=(
  27. 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
  28. '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
  29. )
  30.  
  31. _kernelname=${pkgbase#linux}
  32.  
  33. md5sums=('SKIP'
  34. '808961f98db1d5d9efc9d4e0899d77b9'
  35. 'e5ba7cacef24391d44d207c091bcbcfd'
  36. 'ce6c81ad1ad1f8b333fd6077d47abdaf'
  37. '90cd68710e3064d9b65f5549570f7821'
  38. 'a329f9581060d555dc7358483de9760a')
  39.  
  40. prepare() {
  41. cd "${srcdir}/linux"
  42.  
  43. patch -p1 -i linux-mainline.patch
  44.  
  45. cp -Tf ../config .config
  46.  
  47. if [ "${_kernelname}" != "" ]; then
  48. sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
  49. sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
  50. fi
  51.  
  52. # set extraversion to pkgrel
  53. #sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
  54.  
  55. # don't run depmod on 'make install'. We'll do this ourselves in packaging
  56. sed -i '2iexit 0' scripts/depmod.sh
  57.  
  58. # load configuration
  59. # Configure the kernel. Replace the line below with one of your choice.
  60. #make menuconfig # CLI menu for configuration
  61. #make nconfig # new CLI menu for configuration
  62. #make xconfig # X-based configuration
  63. #make oldconfig # using old config from previous kernel version
  64. make olddefconfig
  65. # ... or manually edit .config
  66.  
  67. # get kernel version
  68. make prepare
  69.  
  70. # rewrite configuration
  71. yes "" | make config >/dev/null
  72. }
  73.  
  74. build() {
  75. cd "${srcdir}/linux"
  76.  
  77. make ${MAKEFLAGS} LOCALVERSION= bzImage modules
  78. }
  79.  
  80. _package() {
  81. pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
  82. [ "${pkgbase}" = "linux" ] && groups=('base')
  83. depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
  84. optdepends=('crda: to set the correct wireless channels of your country')
  85. backup=("etc/mkinitcpio.d/${pkgbase}.preset")
  86. install=linux.install
  87.  
  88. cd "${srcdir}/linux"
  89.  
  90. # get kernel version
  91. _kernver="$(make LOCALVERSION= kernelrelease)"
  92. _basekernel=${_kernver%%-*}
  93. _basekernel=${_basekernel%.*}
  94.  
  95. mkdir -p "${pkgdir}"/{boot,usr/lib/modules}
  96. make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}/usr" modules_install
  97. cp arch/x86/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
  98.  
  99. # make room for external modules
  100. local _extramodules="extramodules-${_basekernel}${_kernelname:--ARCH}"
  101. ln -s "../${_extramodules}" "${pkgdir}/usr/lib/modules/${_kernver}/extramodules"
  102.  
  103. # add real version for building modules and running depmod from hook
  104. echo "${_kernver}" |
  105. install -Dm644 /dev/stdin "${pkgdir}/usr/lib/modules/${_extramodules}/version"
  106.  
  107. # remove build and source links
  108. rm "${pkgdir}"/usr/lib/modules/${_kernver}/{source,build}
  109.  
  110. # now we call depmod...
  111. depmod -b "${pkgdir}/usr" -F System.map "${_kernver}"
  112.  
  113. # add vmlinux
  114. install -Dt "${pkgdir}/usr/lib/modules/${_kernver}/build" -m644 vmlinux
  115.  
  116. # sed expression for following substitutions
  117. local _subst="
  118. s|%PKGBASE%|${pkgbase}|g
  119. s|%KERNVER%|${_kernver}|g
  120. s|%EXTRAMODULES%|${_extramodules}|g
  121. "
  122.  
  123. # hack to allow specifying an initially nonexisting install file
  124. sed "${_subst}" "${startdir}/${install}" > "${startdir}/${install}.pkg"
  125. true && install=${install}.pkg
  126.  
  127. # install mkinitcpio preset file
  128. sed "${_subst}" ../linux.preset |
  129. install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
  130.  
  131. # install pacman hooks
  132. sed "${_subst}" ../60-linux.hook |
  133. install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook"
  134. sed "${_subst}" ../90-linux.hook |
  135. install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook"
  136. }
  137.  
  138. _package-headers() {
  139. pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
  140.  
  141. cd "${srcdir}/linux"
  142. local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
  143.  
  144. install -Dt "${_builddir}" -m644 Makefile .config Module.symvers
  145. install -Dt "${_builddir}/kernel" -m644 kernel/Makefile
  146.  
  147. mkdir "${_builddir}/.tmp_versions"
  148.  
  149. cp -t "${_builddir}" -a include scripts
  150.  
  151. install -Dt "${_builddir}/arch/x86" -m644 arch/x86/Makefile
  152. install -Dt "${_builddir}/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
  153.  
  154. cp -t "${_builddir}/arch/x86" -a arch/x86/include
  155.  
  156. install -Dt "${_builddir}/drivers/md" -m644 drivers/md/*.h
  157. install -Dt "${_builddir}/net/mac80211" -m644 net/mac80211/*.h
  158.  
  159. # http://bugs.archlinux.org/task/9912
  160. install -Dt "${_builddir}/drivers/media/dvb-core" -m644 drivers/media/dvb-core/*.h
  161.  
  162. # http://bugs.archlinux.org/task/13146
  163. install -Dt "${_builddir}/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
  164.  
  165. # http://bugs.archlinux.org/task/20402
  166. install -Dt "${_builddir}/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
  167. install -Dt "${_builddir}/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
  168. install -Dt "${_builddir}/drivers/media/tuners" -m644 drivers/media/tuners/*.h
  169.  
  170. # add xfs and shmem for aufs building
  171. mkdir -p "${_builddir}"/{fs/xfs,mm}
  172.  
  173. # copy in Kconfig files
  174. find . -name Kconfig\* -exec install -Dm644 {} "${_builddir}/{}" \;
  175.  
  176. # add objtool for external module building and enabled VALIDATION_STACK option
  177. install -Dt "${_builddir}/tools/objtool" tools/objtool/objtool
  178.  
  179. # remove unneeded architectures
  180. local _arch
  181. for _arch in "${_builddir}"/arch/*/; do
  182. [[ ${_arch} == */x86/ ]] && continue
  183. rm -r "${_arch}"
  184. done
  185.  
  186. # remove files already in linux-docs package
  187. rm -r "${_builddir}/Documentation"
  188.  
  189. # Fix permissions
  190. chmod -R u=rwX,go=rX "${_builddir}"
  191.  
  192. # strip scripts directory
  193. local _binary _strip
  194. while read -rd '' _binary; do
  195. case "$(file -bi "${_binary}")" in
  196. *application/x-sharedlib*) _strip="${STRIP_SHARED}" ;; # Libraries (.so)
  197. *application/x-archive*) _strip="${STRIP_STATIC}" ;; # Libraries (.a)
  198. *application/x-executable*) _strip="${STRIP_BINARIES}" ;; # Binaries
  199. *) continue ;;
  200. esac
  201. /usr/bin/strip ${_strip} "${_binary}"
  202. done < <(find "${_builddir}/scripts" -type f -perm -u+w -print0 2>/dev/null)
  203. }
  204.  
  205. _package-docs() {
  206. pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
  207.  
  208. cd "${srcdir}/linux"
  209. local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build"
  210.  
  211. mkdir -p "${_builddir}"
  212. cp -t "${_builddir}" -a Documentation
  213.  
  214. # Fix permissions
  215. chmod -R u=rwX,go=rX "${_builddir}"
  216. }
  217.  
  218. pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
  219. for _p in ${pkgname[@]}; do
  220. eval "package_${_p}() {
  221. $(declare -f "_package${_p#${pkgbase}}")
  222. _package${_p#${pkgbase}}
  223. }"
  224. done
  225.  
  226. # vim:set ts=8 sts=2 sw=2 et:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement