Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.81 KB | None | 0 0
  1. # $Id: PKGBUILD 258839 2016-02-03 14:33:04Z foutrelis $
  2. # Maintainer: Tobias Powalowski <tpowa@archlinux.org>
  3. # Maintainer: Thomas Baechler <thomas@archlinux.org>
  4.  
  5. pkgbase=linux # Build stock -ARCH kernel
  6. #pkgbase=linux-custom # Build kernel with a different name
  7. _srcname=linux-4.4
  8. pkgver=4.4.1
  9. pkgrel=2
  10. arch=('i686' 'x86_64')
  11. url="http://www.kernel.org/"
  12. license=('GPL2')
  13. makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
  14. options=('!strip')
  15. source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz"
  16. "https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.sign"
  17. "https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz"
  18. "https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.sign"
  19. "https://gist.githubusercontent.com/graysky2/0653c468bf32365c80e9/raw/9c1de3289034f05d394aea6818bcf63d32a99a4f/revert_2baa891e42d84159b693eadd44f6fe1486285bdc.patch"
  20. # the main kernel config files
  21. 'config' 'config.x86_64'
  22. # standard config files for mkinitcpio ramdisk
  23. 'linux.preset'
  24. 'change-default-console-loglevel.patch'
  25. '0001-sdhci-revert.patch'
  26. 'tpmdd-devel-v3-base-platform-fix-binding-for-drivers-without-probe-callback.patch'
  27. '0001-4.4-revert-btrfs.patch'
  28. '0001-4.4-revert-xfs.patch')
  29.  
  30. sha256sums=('401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2'
  31. 'SKIP'
  32. 'c0218043e61da3921cd14579ae4a8774a6fdad91667a9fdb851d0a35f62edb48'
  33. 'SKIP'
  34. '5f68a47b5c2023a79a904880ea5672350abc527bc0e0ce5f40f4a0e01e617de0'
  35. 'fbbae1d873900e84d1b7ef00593fbb94fc79f078a34b22ee824bab8b0a92be64'
  36. '756a168bbc3bb582f0df45b977c32af53658f21d62fe15171c9ac85f52d8852a'
  37. 'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
  38. '1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
  39. '5313df7cb5b4d005422bd4cd0dae956b2dadba8f3db904275aaf99ac53894375'
  40. 'ab57037ecee0a425c612babdff47c831378bca0bff063a1308599989a350226d'
  41. '51586b733e9f178bebe577258b6057b035eded516ffe8bf8bbb26cb0b26c4958'
  42. 'ffbfaa192d17bfc7c6293aa9a07efe57f65177051ae3d8033d5e45a7bca2e0ad')
  43. validpgpkeys=(
  44. 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
  45. '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
  46. )
  47.  
  48. _kernelname=${pkgbase#linux}
  49.  
  50. prepare() {
  51. cd "${srcdir}/${_srcname}"
  52.  
  53. # add upstream patch
  54. patch -p1 -i "${srcdir}/revert_2baa891e42d84159b693eadd44f6fe1486285bdc.patch"
  55.  
  56. # Custom patch to allow linux nvidia drivers to work
  57. patch -p1 -i "${srcdir}/patch-${pkgver}"
  58.  
  59. # add latest fixes from stable queue, if needed
  60. # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
  61.  
  62. # revert http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9faac7b95ea4f9e83b7a914084cc81ef1632fd91
  63. # fixes #47778 sdhci broken on some boards
  64. # https://bugzilla.kernel.org/show_bug.cgi?id=106541
  65. patch -Rp1 -i "${srcdir}/0001-sdhci-revert.patch"
  66.  
  67. # fixes #47805 kernel panics on platform modules
  68. # https://bugzilla.kernel.org/show_bug.cgi?id=110751
  69. patch -Np1 -i "${srcdir}/tpmdd-devel-v3-base-platform-fix-binding-for-drivers-without-probe-callback.patch"
  70.  
  71. # #47757 fix broken suspend from btrfs and xfs
  72. patch -Np1 -i "${srcdir}/0001-4.4-revert-xfs.patch"
  73. patch -Np1 -i "${srcdir}/0001-4.4-revert-btrfs.patch"
  74.  
  75. # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
  76. # remove this when a Kconfig knob is made available by upstream
  77. # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
  78. patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
  79.  
  80. if [ "${CARCH}" = "x86_64" ]; then
  81. cat "${srcdir}/config.x86_64" > ./.config
  82. else
  83. cat "${srcdir}/config" > ./.config
  84. fi
  85.  
  86. if [ "${_kernelname}" != "" ]; then
  87. sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
  88. sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
  89. fi
  90.  
  91. # set extraversion to pkgrel
  92. sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
  93.  
  94. # don't run depmod on 'make install'. We'll do this ourselves in packaging
  95. sed -i '2iexit 0' scripts/depmod.sh
  96.  
  97. # get kernel version
  98. make prepare
  99.  
  100. # load configuration
  101. # Configure the kernel. Replace the line below with one of your choice.
  102. #make menuconfig # CLI menu for configuration
  103. #make nconfig # new CLI menu for configuration
  104. #make xconfig # X-based configuration
  105. #make oldconfig # using old config from previous kernel version
  106. # ... or manually edit .config
  107.  
  108. # rewrite configuration
  109. yes "" | make config >/dev/null
  110. }
  111.  
  112. build() {
  113. cd "${srcdir}/${_srcname}"
  114.  
  115. make ${MAKEFLAGS} LOCALVERSION= bzImage modules
  116. }
  117.  
  118. _package() {
  119. pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
  120. [ "${pkgbase}" = "linux" ] && groups=('base')
  121. depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
  122. optdepends=('crda: to set the correct wireless channels of your country')
  123. backup=("etc/mkinitcpio.d/${pkgbase}.preset")
  124. install=linux.install
  125.  
  126. cd "${srcdir}/${_srcname}"
  127.  
  128. KARCH=x86
  129.  
  130. # get kernel version
  131. _kernver="$(make LOCALVERSION= kernelrelease)"
  132. _basekernel=${_kernver%%-*}
  133. _basekernel=${_basekernel%.*}
  134.  
  135. mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
  136. make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
  137. cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
  138.  
  139. # set correct depmod command for install
  140. cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
  141. true && install=${install}.pkg
  142. sed \
  143. -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
  144. -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
  145. -i "${startdir}/${install}"
  146.  
  147. # install mkinitcpio preset file for kernel
  148. install -D -m644 "${srcdir}/linux.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
  149. sed \
  150. -e "1s|'linux.*'|'${pkgbase}'|" \
  151. -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
  152. -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
  153. -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
  154. -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
  155.  
  156. # remove build and source links
  157. rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
  158. # remove the firmware
  159. rm -rf "${pkgdir}/lib/firmware"
  160. # make room for external modules
  161. ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
  162. # add real version for building modules and running depmod from post_install/upgrade
  163. mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
  164. echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
  165.  
  166. # Now we call depmod...
  167. depmod -b "${pkgdir}" -F System.map "${_kernver}"
  168.  
  169. # move module tree /lib -> /usr/lib
  170. mkdir -p "${pkgdir}/usr"
  171. mv "${pkgdir}/lib" "${pkgdir}/usr/"
  172.  
  173. # add vmlinux
  174. install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
  175. }
  176.  
  177. _package-headers() {
  178. pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
  179.  
  180. install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
  181.  
  182. cd "${srcdir}/${_srcname}"
  183. install -D -m644 Makefile \
  184. "${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
  185. install -D -m644 kernel/Makefile \
  186. "${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
  187. install -D -m644 .config \
  188. "${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
  189.  
  190. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
  191.  
  192. for i in acpi asm-generic config crypto drm generated keys linux math-emu \
  193. media net pcmcia scsi sound trace uapi video xen; do
  194. cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
  195. done
  196.  
  197. # copy arch includes for external modules
  198. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86"
  199. cp -a arch/x86/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86/"
  200.  
  201. # copy files necessary for later builds, like nvidia and vmware
  202. cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
  203. cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
  204.  
  205. # fix permissions on scripts dir
  206. chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
  207. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
  208.  
  209. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
  210.  
  211. cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
  212.  
  213. if [ "${CARCH}" = "i686" ]; then
  214. cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
  215. fi
  216.  
  217. cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
  218.  
  219. # add docbook makefile
  220. install -D -m644 Documentation/DocBook/Makefile \
  221. "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
  222.  
  223. # add dm headers
  224. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
  225. cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
  226.  
  227. # add inotify.h
  228. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
  229. cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
  230.  
  231. # add wireless headers
  232. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
  233. cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
  234.  
  235. # add dvb headers for external modules
  236. # in reference to:
  237. # http://bugs.archlinux.org/task/9912
  238. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
  239. cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
  240. # and...
  241. # http://bugs.archlinux.org/task/11194
  242. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
  243. cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
  244.  
  245. # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
  246. # in reference to:
  247. # http://bugs.archlinux.org/task/13146
  248. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  249. cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  250. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
  251. cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
  252.  
  253. # add dvb headers
  254. # in reference to:
  255. # http://bugs.archlinux.org/task/20402
  256. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
  257. cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
  258. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
  259. cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  260. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
  261. cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
  262.  
  263. # add xfs and shmem for aufs building
  264. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
  265. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
  266. # removed in 3.17 series
  267. # cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
  268.  
  269. # copy in Kconfig files
  270. for i in $(find . -name "Kconfig*"); do
  271. mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
  272. cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
  273. done
  274.  
  275. chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
  276. find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
  277.  
  278. # strip scripts directory
  279. find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
  280. case "$(file -bi "${binary}")" in
  281. *application/x-sharedlib*) # Libraries (.so)
  282. /usr/bin/strip ${STRIP_SHARED} "${binary}";;
  283. *application/x-archive*) # Libraries (.a)
  284. /usr/bin/strip ${STRIP_STATIC} "${binary}";;
  285. *application/x-executable*) # Binaries
  286. /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
  287. esac
  288. done
  289.  
  290. # remove unneeded architectures
  291. rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
  292.  
  293. # remove a files already in linux-docs package
  294. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-01"
  295. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-02"
  296. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.select-break"
  297. }
  298.  
  299. _package-docs() {
  300. pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
  301.  
  302. cd "${srcdir}/${_srcname}"
  303.  
  304. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build"
  305. cp -al Documentation "${pkgdir}/usr/lib/modules/${_kernver}/build"
  306. find "${pkgdir}" -type f -exec chmod 444 {} \;
  307. find "${pkgdir}" -type d -exec chmod 755 {} \;
  308.  
  309. # remove a file already in linux package
  310. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
  311. }
  312.  
  313. pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
  314. for _p in ${pkgname[@]}; do
  315. eval "package_${_p}() {
  316. $(declare -f "_package${_p#${pkgbase}}")
  317. _package${_p#${pkgbase}}
  318. }"
  319. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement