Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.63 KB | None | 0 0
  1. # Maintainer: André Silva <emulatorman@parabola.nu>
  2. # Contributor: Nicolás Reynolds <fauno@kiwwwi.com.ar>
  3. # Contributor: Sorin-Mihai Vârgolici <smv@yobicore.org>
  4. # Contributor: Michał Masłowski <mtjm@mtjm.eu>
  5. # Contributor: Márcio Silva <coadde@parabola.nu>
  6. # Contributor: Luke Shumaker <lukeshu@sbcglobal.net>
  7. # Contributor: Luke R. <g4jc@openmailbox.org>
  8.  
  9. # Based on linux-grsec package
  10.  
  11. pkgbase=linux-libre-grsec-knock-custom
  12. _pkgbasever=4.9-gnu
  13. _pkgver=4.9.17-gnu
  14. _grsecver=3.1
  15. _timestamp=201703221829
  16. _knockpatchver=4.9_1
  17.  
  18. _replacesarchkernel=('linux%') # '%' gets replaced with _kernelname
  19. _replacesoldkernels=() # '%' gets replaced with _kernelname
  20. _replacesoldmodules=() # '%' gets replaced with _kernelname
  21.  
  22. _srcname=linux-${_pkgbasever%-*}
  23. _archpkgver=${_pkgver%-*}.${_timestamp}
  24. epoch=1
  25. pkgver=${_pkgver//-/_}.r${_timestamp}
  26. pkgrel=1
  27. rcnrel=armv7-x4
  28. arch=('i686' 'x86_64' 'armv7h')
  29. url="https://wiki.parabola.nu/Grsecurity%2BKnock"
  30. license=('GPL2')
  31. makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc' 'libelf')
  32. makedepends_armv7h=('git')
  33. options=('!strip')
  34. source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz"
  35. "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/linux-libre-${_pkgbasever}.tar.xz.sign"
  36. "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz"
  37. "https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgver}/patch-${_pkgbasever}-${_pkgver}.xz.sign"
  38. "https://repo.parabola.nu/other/grsecurity-libre/test/grsecurity-libre-${_grsecver}-${_pkgver%-*}-${_timestamp}.patch"
  39. "https://repo.parabola.nu/other/grsecurity-libre/test/grsecurity-libre-${_grsecver}-${_pkgver%-*}-${_timestamp}.patch.sig"
  40. #"http://gnunet.org/sites/default/files/tcp_stealth_${_knockpatchver}.diff"
  41. #"tcp_stealth_${_knockpatchver}.diff.sig::http://gnunet.org/sites/default/files/tcp_stealth_${_knockpatchver%_1}.diff_1.sig"
  42. "https://repo.parabola.nu/other/knock/patches/linux-libre/tcp_stealth_${_knockpatchver}.diff"
  43. "https://repo.parabola.nu/other/knock/patches/linux-libre/tcp_stealth_${_knockpatchver}.diff.sig"
  44. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm"
  45. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_clut224.ppm.sig"
  46. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm"
  47. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_mono.pbm.sig"
  48. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_vga16.ppm"
  49. "https://repo.parabola.nu/other/linux-libre/logos/logo_linux_vga16.ppm.sig"
  50. # the main kernel config files
  51. 'config.i686' 'config.x86_64' 'config.armv7h'
  52. # pacman hook for initramfs regeneration
  53. '99-linux.hook'
  54. # standard config files for mkinitcpio ramdisk
  55. 'linux.preset'
  56. 'change-default-console-loglevel.patch'
  57. '0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
  58. '0002-fix-Atmel-maXTouch-touchscreen-support.patch'
  59. # armv7h patches
  60. "https://repo.parabola.nu/other/rcn-libre-grsec/patches/${_pkgver%-*}/rcn-libre-grsec-${_pkgver%-*}-${rcnrel}.patch"
  61. "https://repo.parabola.nu/other/rcn-libre-grsec/patches/${_pkgver%-*}/rcn-libre-grsec-${_pkgver%-*}-${rcnrel}.patch.sig"
  62. '0001-ARM-disable-implicit-function-declaration-error.patch'
  63. '0002-ARM-fix-redefinition-error-of-atomic64_xchg_unchecked_relaxed.patch'
  64. '0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch'
  65. '0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch'
  66. '0003-SMILE-Plug-device-tree-file.patch'
  67. '0004-fix-mvsdio-eMMC-timing.patch'
  68. '0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch'
  69. '0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch'
  70. '0007-set-default-cubietruck-led-triggers.patch'
  71. '0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch')
  72. sha512sums=('885eb0a7fab45dc749acb4329b4330a43b704df2d5f2f5aac1811503c132ca53ca49452f9b1cc80b0826c7a4962dbe4937aecb697aa823b2543ba2cabc704816'
  73. 'SKIP'
  74. '5983ea3a3465e9aea9d9d9279dd5cfc0ff614c0104467204592764c242fa2948486878dff6175f73abe85531ace4e4ee4df65eed3778bf8067960cc07ca2782e'
  75. 'SKIP'
  76. '5b6fa7f90fc5c8adc688a8b001b8a981625dace7764ab7fedb1d52557ec1ad448e344c5b9b9bdde659c58c04f12dec19e8a197d3b0b4c0684827be952d1bba29'
  77. 'SKIP'
  78. 'a00e9fc0b930021242b231dfdd15160eaefbfad4aaa0ba0426bb9a25dd14acc1825cbb1bc9c680a6d43baca797591dc219e232862f566457752ff378e03600a3'
  79. 'SKIP'
  80. '13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'
  81. 'SKIP'
  82. '267295aa0cea65684968420c68b32f1a66a22d018b9d2b2c1ef14267bcf4cb68aaf7099d073cbfefe6c25c8608bdcbbd45f7ac8893fdcecbf1e621abdfe9ecc1'
  83. 'SKIP'
  84. '7a3716bfe3b9f546da309c7492f3e08f8f506813afeb1c737a474c83313d5c313cf4582b65215c2cfce3b74d9d1021c96e8badafe8f6e5b01fe28d2b5c61ae78'
  85. 'SKIP'
  86. '27d6259955482a3fcb82a8978c2d7e6a935b35ad84b4c3e6b9d6d4bf8ea7c9b9e9bc3c610a1c2cfea4694b274b6b9b94479a9db51f339f1e31ba98530d410b84'
  87. 'b6629b14d8c1062f74ed66dfaced89a19b36d876310f179cc761669ec70698d676863bfdc55eab86530a96b38e9a0f7cb364a1696c3f80b44b384dc1f508978d'
  88. '08b0b3717b2f886d63da4d04934bd4548fe75fff51ef047d19fa2be32eecb6023ec5ec4e116b4578e9344858b2134feccdcaf8a02eaf8e6a778f0e98790ba780'
  89. 'd6faa67f3ef40052152254ae43fee031365d0b1524aa0718b659eb75afc21a3f79ea8d62d66ea311a800109bed545bc8f79e8752319cd378eef2cbd3a09aba22'
  90. '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf'
  91. 'd9d28e02e964704ea96645a5107f8b65cae5f4fb4f537e224e5e3d087fd296cb770c29ac76e0ce95d173bc420ea87fb8f187d616672a60a0cae618b0ef15b8c8'
  92. '02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'
  93. 'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'
  94. '8321518de61f5918c1dd79c6f087fa478d4a02cd61b167d8b7bdadce4a03232d4af898de0252accdf14839032cd69bb41b964f8ac17f32fb48afc12463614040'
  95. 'SKIP'
  96. 'e04da62f138b24a489daf6ea12759ecb545b77be4dd585983d3abb764f4ac3aa4a9bf4179adddc73032b81e4fa54cbf5dbf173b25dfb1723e7379583b57aa426'
  97. '5d3a5440b3612fb85759b34d9b455118da342928e585b11545a0dcc9d11f16f0924e1b6018e08ed0507e53d1aabab7000c9b4405bc8881a7bda775456d81df2a'
  98. 'ccf18eb2c3d33a57871cbadd5ad825d2f2f489e69c54c7293b160abdc3e9e5c6a664ba7926a617d31affcf20b7ecb4e8de54fa78438c574aa1b257f686faade9'
  99. '69f13bb2e353727acbe39034978729272511c6578aa2faf8c829e1bb89c22e769262289b76d93254314304ebd7547c45cdc8ba6afc278444a8fd09f71dff9757'
  100. '47038a476ff90d7106e1ce2cf5dd3f2c356c75ab8cefc6901f8eddcbf7cd0f23c44f6ce96b2b3d57a6e3f30bdd5192cf3e75759277ab0ac6fbb179423f2431a0'
  101. '75513d1d6dfeb6425763dc8fe8d7f607ddd11d2a8397230333a4e556b303ceb7e68bfdb26d0a10f4b557ef13adbf54c3aab00f5b493772a94b5cd87d143663c4'
  102. '37df06631772200edc7e5a4450719155156a781e9a475383283627f6f1b8cbe94db6ba2e2fbc59107ea288846b56881b892e9b21d3d899b974fad4226c4def10'
  103. '73916b59fd8f269ce2831d9a0710f503b9cd1004d94caf9e061ebff870a115cc8455409040574a609473e48c60b2f0b833c907327dacb085509e615c27dd463f'
  104. 'eef5d8161edcc9817832de2000ad30320507a1e16fc321fb2b97dd2d159825b8f924cd29e5a4ffa29c339c8727f106730e6b6858c50d8afe7a5000629507badd'
  105. 'b3aad9fd9292122fd3227f05d54742731bf4d6d57aaac680b34eca19597dfb56a7f54c7ad54f37cfc2ec7f622fbd90abe7f288f11f8eb98278ab07df32cf890a')
  106. validpgpkeys=(
  107. '474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
  108. 'C92BAA713B8D53D3CAE63FC9E6974752F9704456' # André Silva
  109. '684D54A189305A9CC95446D36B888913DDB59515' # Márcio Silva
  110. #'F949CFBD140A6DD071E90B8CDC24396B6D451038' # Julian Kirsch
  111. )
  112.  
  113. _kernelname=${pkgbase#linux-libre}
  114. _replacesarchkernel=("${_replacesarchkernel[@]/\%/${_kernelname}}")
  115. _replacesoldkernels=("${_replacesoldkernels[@]/\%/${_kernelname}}")
  116. _replacesoldmodules=("${_replacesoldmodules[@]/\%/${_kernelname}}")
  117.  
  118. case "${CARCH}" in
  119. i686|x86_64) KARCH=x86;;
  120. armv7h) KARCH=arm;;
  121. esac
  122.  
  123. prepare() {
  124. cd "${srcdir}/${_srcname}"
  125.  
  126. # add upstream patch
  127. if [ "${_pkgbasever}" != "${_pkgver}" ]; then
  128. patch -p1 -i "${srcdir}/patch-${_pkgbasever}-${_pkgver}"
  129. fi
  130.  
  131. # add grsecurity patches (bnx2 firmware deblobbed)
  132. patch -Np1 -i "${srcdir}/grsecurity-libre-${_grsecver}-${_pkgver%-*}-${_timestamp}.patch"
  133. rm localversion-grsec
  134.  
  135. # add Knock patch
  136. patch -p1 -i "${srcdir}/tcp_stealth_${_knockpatchver}.diff"
  137.  
  138. if [ "${CARCH}" = "armv7h" ]; then
  139. # RCN patch (CM3 firmware deblobbed, AUFS and RT removed)
  140. # Note: For stability reasons, AUFS and RT have been removed in the RCN patch.
  141. # We are supporting AUFS in linux-libre-pck through PCK patch and RT through its official
  142. # patch in linux-libre-rt. See https://wiki.parabola.nu/PCK for further details about PCK.
  143. git apply -v "${srcdir}/rcn-libre-grsec-${_pkgver%-*}-${rcnrel}.patch"
  144.  
  145. # disable implicit function declaration error since grsecurity patches conflicts against some RCN modules
  146. patch -p1 -i "${srcdir}/0001-ARM-disable-implicit-function-declaration-error.patch"
  147.  
  148. # fix redefinition error of atomic64_xchg_unchecked_relaxed
  149. patch -p1 -i "${srcdir}/0002-ARM-fix-redefinition-error-of-atomic64_xchg_unchecked_relaxed.patch"
  150.  
  151. # ALARM patches
  152. patch -p1 -i "${srcdir}/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch"
  153. patch -p1 -i "${srcdir}/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch"
  154. patch -p1 -i "${srcdir}/0003-SMILE-Plug-device-tree-file.patch"
  155. patch -p1 -i "${srcdir}/0004-fix-mvsdio-eMMC-timing.patch"
  156. patch -p1 -i "${srcdir}/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch"
  157. patch -p1 -i "${srcdir}/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch"
  158. patch -p1 -i "${srcdir}/0007-set-default-cubietruck-led-triggers.patch"
  159. patch -p1 -i "${srcdir}/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch"
  160. fi
  161.  
  162. # add freedo as boot logo
  163. install -m644 -t drivers/video/logo \
  164. "${srcdir}/logo_linux_"{clut224.ppm,vga16.ppm,mono.pbm}
  165.  
  166. # add latest fixes from stable queue, if needed
  167. # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
  168.  
  169. # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
  170. # remove this when a Kconfig knob is made available by upstream
  171. # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
  172. patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
  173.  
  174. # maintain the TTY over USB disconnects
  175. # http://www.coreboot.org/EHCI_Gadget_Debug
  176. patch -p1 -i "${srcdir}/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch"
  177.  
  178. # fix Atmel maXTouch touchscreen support
  179. # https://labs.parabola.nu/issues/877
  180. # http://www.fsfla.org/pipermail/linux-libre/2015-November/003202.html
  181. patch -p1 -i "${srcdir}/0002-fix-Atmel-maXTouch-touchscreen-support.patch"
  182.  
  183. cat "${srcdir}/config.${CARCH}" > ./.config
  184.  
  185. # append pkgrel to extraversion
  186. sed -ri "s|^(EXTRAVERSION =.*\S).*|\1-r${_timestamp}-${pkgrel}|" Makefile
  187.  
  188. # don't run depmod on 'make install'. We'll do this ourselves in packaging
  189. sed -i '2iexit 0' scripts/depmod.sh
  190.  
  191. # get kernel version
  192. # make prepare
  193.  
  194. # load configuration
  195. # Configure the kernel. Replace the line below with one of your choice.
  196. make menuconfig KCONFIG_CONFIG=config.x86_64 # CLI menu for configuration
  197. #make nconfig # new CLI menu for configuration
  198. #make xconfig # X-based configuration
  199. #make oldconfig # using old config from previous kernel version
  200. # ... or manually edit .config
  201.  
  202. # rewrite configuration
  203. yes "" | make config >/dev/null
  204. }
  205.  
  206. build() {
  207. cd "${srcdir}/${_srcname}"
  208.  
  209. if [ "${CARCH}" = "armv7h" ]; then
  210. make ${MAKEFLAGS} LOCALVERSION= zImage modules dtbs
  211. elif [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
  212. make ${MAKEFLAGS} LOCALVERSION= bzImage modules
  213. fi
  214. }
  215.  
  216. _package() {
  217. pkgdesc="The ${pkgbase^} kernel and modules with grsecurity/PaX patches and support for stealth TCP sockets"
  218. [ "${pkgbase}" = "linux-libre" ] && groups=('base' 'base-openrc')
  219. depends=('coreutils' 'linux-libre-firmware' 'kmod' 'mkinitcpio>=0.7' 'grsec-common')
  220. optdepends=('crda: to set the correct wireless channels of your country'
  221. 'gradm: to configure and enable Role Based Access Control (RBAC)'
  222. 'paxd-libre: to enable PaX exploit mitigations and apply exceptions automatically'
  223. 'systemd-knock: to use system and service manager with TCP Stealth support'
  224. 'openssh-knock: to use SSH with TCP Stealth support')
  225. provides=("${_replacesarchkernel[@]/%/=${_archpkgver}}" "LINUX-ABI_VERSION=${_archpkgver}")
  226. conflicts=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
  227. replaces=("${_replacesarchkernel[@]}" "${_replacesoldkernels[@]}" "${_replacesoldmodules[@]}")
  228. backup=("etc/mkinitcpio.d/${pkgbase}.preset")
  229. install=linux.install
  230.  
  231. cd "${srcdir}/${_srcname}"
  232.  
  233. # get kernel version
  234. _kernver="$(make LOCALVERSION= kernelrelease)"
  235. _basekernel=${_kernver%%-*}
  236. _basekernel=${_basekernel%.*}
  237.  
  238. mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
  239. make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
  240. if [ "${CARCH}" = "armv7h" ]; then
  241. make LOCALVERSION= INSTALL_DTBS_PATH="${pkgdir}/boot/dtbs/${pkgbase}" dtbs_install
  242. cp arch/$KARCH/boot/zImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
  243. elif [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
  244. cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
  245. fi
  246.  
  247. # set correct depmod command for install
  248. sed -e "s|%PKGBASE%|${pkgbase}|g;s|%KERNVER%|${_kernver}|g" \
  249. "${startdir}/${install}" > "${startdir}/${install}.pkg"
  250. true && install=${install}.pkg
  251.  
  252. # install mkinitcpio preset file for kernel
  253. if [ "${CARCH}" = "armv7h" ]; then
  254. sed "s|/boot/vmlinuz-%PKGBASE%|${_kernver}|g
  255. s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux.preset" |
  256. install -D -m644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
  257. elif [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
  258. sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/linux.preset" |
  259. install -D -m644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
  260. fi
  261.  
  262. # install pacman hook for initramfs regeneration
  263. sed "s|%PKGBASE%|${pkgbase}|g" "${srcdir}/99-linux.hook" |
  264. install -D -m644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/99-${pkgbase}.hook"
  265.  
  266. # remove build and source links
  267. rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
  268. # remove the firmware
  269. rm -rf "${pkgdir}/lib/firmware"
  270. # make room for external modules
  271. ln -s "../extramodules-${_basekernel}${_kernelname}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
  272. # add real version for building modules and running depmod from post_install/upgrade
  273. mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname}"
  274. echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname}/version"
  275.  
  276. # Now we call depmod...
  277. depmod -b "${pkgdir}" -F System.map "${_kernver}"
  278.  
  279. # move module tree /lib -> /usr/lib
  280. mkdir -p "${pkgdir}/usr"
  281. mv "${pkgdir}/lib" "${pkgdir}/usr/"
  282.  
  283. if [ "${CARCH}" = "x86_64" ] || [ "${CARCH}" = "i686" ]; then
  284. # add vmlinux
  285. install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
  286. fi
  287. }
  288.  
  289. _package-headers() {
  290. pkgdesc="Header files and scripts for building modules for ${pkgbase^} kernel"
  291. provides=("${_replacesarchkernel[@]/%/-headers=${_archpkgver}}")
  292. conflicts=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
  293. replaces=("${_replacesarchkernel[@]/%/-headers}" "${_replacesoldkernels[@]/%/-headers}")
  294.  
  295. install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
  296.  
  297. cd "${srcdir}/${_srcname}"
  298. install -D -m644 Makefile \
  299. "${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
  300. install -D -m644 kernel/Makefile \
  301. "${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
  302. install -D -m644 .config \
  303. "${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
  304.  
  305. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
  306.  
  307. for i in acpi asm-generic config crypto drm generated keys linux math-emu \
  308. media net pcmcia scsi soc sound trace uapi video xen; do
  309. cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
  310. done
  311.  
  312. # copy arch includes for external modules
  313. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}"
  314. cp -a arch/${KARCH}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
  315. if [ "${CARCH}" = "armv7h" ]; then
  316. for i in dove exynos omap2; do
  317. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}"
  318. cp -a arch/${KARCH}/mach-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/mach-${i}/"
  319. done
  320. for i in omap orion samsung versatile; do
  321. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}"
  322. cp -a arch/${KARCH}/plat-${i}/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/plat-${i}/"
  323. done
  324. fi
  325.  
  326. # copy files necessary for later builds
  327. cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
  328. cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
  329.  
  330. # fix permissions on scripts dir
  331. chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
  332. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
  333.  
  334. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
  335.  
  336. cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
  337.  
  338. if [ "${CARCH}" = "i686" ]; then
  339. cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
  340. fi
  341.  
  342. cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
  343.  
  344. # add docbook makefile
  345. install -D -m644 Documentation/DocBook/Makefile \
  346. "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
  347.  
  348. # add dm headers
  349. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
  350. cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
  351.  
  352. # add inotify.h
  353. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
  354. cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
  355.  
  356. # add wireless headers
  357. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
  358. cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
  359.  
  360. # add dvb headers for external modules
  361. # in reference to:
  362. # http://bugs.archlinux.org/task/9912
  363. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
  364. cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
  365. # and...
  366. # http://bugs.archlinux.org/task/11194
  367. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
  368. cp include/config/dvb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
  369.  
  370. # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
  371. # in reference to:
  372. # http://bugs.archlinux.org/task/13146
  373. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  374. cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  375. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
  376. cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
  377.  
  378. # add dvb headers
  379. # in reference to:
  380. # http://bugs.archlinux.org/task/20402
  381. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
  382. cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
  383. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
  384. cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
  385. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
  386. cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
  387.  
  388. # add xfs and shmem for aufs building
  389. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
  390. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
  391. # removed in 3.17-gnu series
  392. # cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
  393.  
  394. # copy in Kconfig files
  395. for i in $(find . -name "Kconfig*"); do
  396. mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
  397. cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
  398. done
  399.  
  400. # add objtool for external module building and enabled VALIDATION_STACK option
  401. if [ -f tools/objtool/objtool ]; then
  402. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool"
  403. cp -a tools/objtool/objtool ${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool/
  404. fi
  405.  
  406. chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
  407. find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
  408.  
  409. # strip scripts directory
  410. find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
  411. case "$(file -bi "${binary}")" in
  412. *application/x-sharedlib*) # Libraries (.so)
  413. /usr/bin/strip ${STRIP_SHARED} "${binary}";;
  414. *application/x-archive*) # Libraries (.a)
  415. /usr/bin/strip ${STRIP_STATIC} "${binary}";;
  416. *application/x-executable*) # Binaries
  417. /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
  418. esac
  419. done
  420.  
  421. # remove unneeded architectures
  422. find "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch -mindepth 1 -maxdepth 1 -type d -not -name "$KARCH" -exec rm -rf {} +
  423.  
  424. # remove files already in docs package
  425. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-01"
  426. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.recursion-issue-02"
  427. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild/Kconfig.select-break"
  428. }
  429.  
  430. _package-docs() {
  431. pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase^} kernel"
  432. provides=("${_replacesarchkernel[@]/%/-docs=${_archpkgver}}")
  433. conflicts=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
  434. replaces=("${_replacesarchkernel[@]/%/-docs}" "${_replacesoldkernels[@]/%/-docs}")
  435.  
  436. cd "${srcdir}/${_srcname}"
  437.  
  438. mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build"
  439. cp -al Documentation "${pkgdir}/usr/lib/modules/${_kernver}/build"
  440. find "${pkgdir}" -type f -exec chmod 444 {} \;
  441. find "${pkgdir}" -type d -exec chmod 755 {} \;
  442.  
  443. # remove a file already in kernel package
  444. rm -f "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
  445. }
  446.  
  447. pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
  448. for _p in ${pkgname[@]}; do
  449. eval "package_${_p}() {
  450. $(declare -f "_package${_p#${pkgbase}}")
  451. _package${_p#${pkgbase}}
  452. }"
  453. done
  454.  
  455. # vim:set ts=8 sts=2 sw=2 et:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement