template 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. # Template file for 'linux5.4'
  2. pkgname=linux5.4
  3. version=5.4.173
  4. revision=1
  5. wrksrc="linux-${version}"
  6. short_desc="Linux kernel and modules (${version%.*} series)"
  7. maintainer="Helmut Pozimski <helmut@pozimski.eu>"
  8. license="GPL-2.0-only"
  9. homepage="https://www.kernel.org"
  10. distfiles="https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-${version}.tar.xz"
  11. checksum=99e8e275b239c708bdb6a41990c4d12098a61752245dbef921a514d9f996c239
  12. python_version=3
  13. patch_args="-Np1"
  14. nodebug=yes # -dbg package is generated below manually
  15. nostrip=yes
  16. noverifyrdeps=yes
  17. noshlibprovides=yes
  18. preserve=yes
  19. archs="i686* x86_64* armv5tel* armv6l* armv7l* aarch64* ppc* mips*"
  20. hostmakedepends="tar xz bc elfutils-devel flex gmp-devel kmod libmpc-devel
  21. openssl-devel perl uboot-mkimage cpio"
  22. _kernver="${version}_${revision}"
  23. triggers="kernel-hooks"
  24. kernel_hooks_version="${_kernver}"
  25. # These files could be modified when an external module is built.
  26. mutable_files="
  27. /usr/lib/modules/${_kernver}/modules.builtin.bin
  28. /usr/lib/modules/${_kernver}/modules.builtin.alias.bin
  29. /usr/lib/modules/${_kernver}/modules.softdep
  30. /usr/lib/modules/${_kernver}/modules.dep
  31. /usr/lib/modules/${_kernver}/modules.dep.bin
  32. /usr/lib/modules/${_kernver}/modules.symbols
  33. /usr/lib/modules/${_kernver}/modules.symbols.bin
  34. /usr/lib/modules/${_kernver}/modules.alias
  35. /usr/lib/modules/${_kernver}/modules.alias.bin
  36. /usr/lib/modules/${_kernver}/modules.devname"
  37. # reproducible build
  38. export KBUILD_BUILD_TIMESTAMP=${SOURCE_DATE_EPOCH:-0}
  39. export KBUILD_BUILD_USER=voidlinux
  40. export KBUILD_BUILD_HOST=voidlinux
  41. do_configure() {
  42. # 5.4 misses Documentation/DocBook. We ship the directory from 4.12 here.
  43. cp -a $FILESDIR/DocBook -t Documentation
  44. # If there's a file called <arch>-dotconfig, use it to
  45. # configure the kernel; otherwise use arch defaults and all stuff
  46. # as modules (allmodconfig).
  47. local arch subarch _args
  48. case "$XBPS_TARGET_MACHINE" in
  49. i686*) arch=i386;;
  50. x86_64*) arch=x86_64;;
  51. arm*) arch=arm;;
  52. aarch64*) arch=arm64;;
  53. ppc64le*) arch=powerpc; subarch=ppc64le;;
  54. ppc64*) arch=powerpc; subarch=ppc64;;
  55. ppc*) arch=powerpc;;
  56. mips*) arch=mips;;
  57. esac
  58. if [ "$CROSS_BUILD" ]; then
  59. _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
  60. fi
  61. if [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom ]; then
  62. msg_normal "Detected a custom .config file for your arch, using it.\n"
  63. cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig-custom .config
  64. make ${makejobs} ARCH=$arch ${_args} oldconfig
  65. elif [ -f ${FILESDIR}/${subarch:-$arch}-dotconfig ]; then
  66. msg_normal "Detected a .config file for your arch, using it.\n"
  67. cp -f ${FILESDIR}/${subarch:-$arch}-dotconfig .config
  68. make ${makejobs} ARCH=$arch ${_args} oldconfig
  69. elif [ -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig ]; then
  70. msg_normal "Detected a .config file for your cpu family, using it.\n"
  71. cp -f ${FILESDIR}/${XBPS_TARGET_MACHINE%%-musl}-dotconfig .config
  72. make ${makejobs} ARCH=$arch ${_args} oldconfig
  73. else
  74. msg_normal "Defaulting to 'allmodconfig'.\n"
  75. make ${makejobs} ARCH=$arch ${_args} allmodconfig
  76. fi
  77. # Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
  78. sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
  79. }
  80. do_build() {
  81. local arch _cross _args
  82. case "$XBPS_TARGET_MACHINE" in
  83. i686*) _args="bzImage modules"; arch=i386;;
  84. x86_64*) _args="bzImage modules"; arch=x86_64;;
  85. arm*) _args="zImage modules dtbs"; arch=arm;;
  86. aarch64*) _args="Image modules dtbs"; arch=arm64;;
  87. ppc*) _args="zImage modules"; arch=powerpc;;
  88. mips*) _args="uImage modules dtbs"; arch=mips;;
  89. esac
  90. if [ "$CROSS_BUILD" ]; then
  91. _cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
  92. fi
  93. if [ "${_patchver}" ]; then
  94. _version="EXTRAVERSION=${_patchver}"
  95. fi
  96. export LDFLAGS=
  97. make ARCH=$arch ${_version} ${_cross} ${makejobs} prepare
  98. make ARCH=$arch ${_version} ${_cross} ${makejobs} ${_args}
  99. }
  100. do_install() {
  101. local arch subarch _args hdrdest
  102. case "$XBPS_TARGET_MACHINE" in
  103. i686*) arch=x86; subarch=i386;;
  104. x86_64*) arch=x86; subarch=x86_64;;
  105. arm*) arch=arm;;
  106. aarch64*) arch=arm64;;
  107. ppc*) arch=powerpc;;
  108. mips*) arch=mips;;
  109. esac
  110. # Run depmod after compressing modules.
  111. sed -i '2iexit 0' scripts/depmod.sh
  112. # Install kernel, firmware and modules
  113. make ${makejobs} ARCH=${subarch:-$arch} INSTALL_MOD_PATH=${DESTDIR} modules_install
  114. hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver}
  115. vinstall .config 644 boot config-${_kernver}
  116. vinstall System.map 644 boot System.map-${_kernver}
  117. case "$arch" in
  118. x86)
  119. vinstall arch/x86/boot/bzImage 644 boot vmlinuz-${_kernver}
  120. ;;
  121. arm)
  122. vinstall arch/arm/boot/zImage 644 boot
  123. make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install
  124. ;;
  125. arm64)
  126. vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver}
  127. make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install
  128. ;;
  129. powerpc)
  130. # zImage on powerpc is useless as it won't load initramfs
  131. # raw vmlinux is huge, and this is nostrip, so do it manually
  132. vinstall vmlinux 644 boot vmlinux-${_kernver}
  133. /usr/bin/$STRIP ${DESTDIR}/boot/vmlinux-${_kernver}
  134. ;;
  135. mips)
  136. vinstall arch/mips/boot/uImage.bin 644 boot uImage-${_kernver}
  137. make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install
  138. ;;
  139. esac
  140. # Switch to /usr.
  141. vmkdir usr
  142. mv ${DESTDIR}/lib ${DESTDIR}/usr
  143. cd ${DESTDIR}/usr/lib/modules/${_kernver}
  144. rm -f source build
  145. ln -sf ../../../src/kernel-headers-${_kernver} build
  146. cd ${wrksrc}
  147. # Install required headers to build external modules
  148. install -Dm644 Makefile ${hdrdest}/Makefile
  149. install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
  150. install -Dm644 .config ${hdrdest}/.config
  151. for file in $(find . -name Kconfig\*); do
  152. mkdir -p ${hdrdest}/$(dirname $file)
  153. install -Dm644 $file ${hdrdest}/${file}
  154. done
  155. for file in $(find arch/${subarch:-$arch} -name module.lds -o -name Kbuild.platforms -o -name Platform); do
  156. mkdir -p ${hdrdest}/$(dirname $file)
  157. install -Dm644 $file ${hdrdest}/${file}
  158. done
  159. mkdir -p ${hdrdest}/include
  160. # Remove firmware stuff provided by the "linux-firmware" pkg.
  161. rm -rf ${DESTDIR}/usr/lib/firmware
  162. for i in acpi asm-generic clocksource config crypto drm generated linux \
  163. math-emu media net pcmcia scsi sound trace uapi video xen dt-bindings; do
  164. if [ -d include/$i ]; then
  165. cp -a include/$i ${hdrdest}/include
  166. fi
  167. done
  168. cd ${wrksrc}
  169. mkdir -p ${hdrdest}/arch/${arch}
  170. cp -a arch/${arch}/include ${hdrdest}/arch/${arch}
  171. # Remove helper binaries built for host,
  172. # if generated files from the scripts/ directory need to be included,
  173. # they need to be copied to ${hdrdest} before this step
  174. if [ "$CROSS_BUILD" ]; then
  175. make ${makejobs} ARCH=${subarch:-$arch} _mrproper_scripts
  176. # remove host specific objects as well
  177. find scripts -name '*.o' -delete
  178. fi
  179. # Copy files necessary for later builds, like nvidia and vmware
  180. cp Module.symvers ${hdrdest}
  181. cp -a scripts ${hdrdest}
  182. mkdir -p ${hdrdest}/security/selinux
  183. cp -a security/selinux/include ${hdrdest}/security/selinux
  184. mkdir -p ${hdrdest}/tools/include
  185. cp -a tools/include/tools ${hdrdest}/tools/include
  186. mkdir -p ${hdrdest}/arch/${arch}/kernel
  187. cp arch/${arch}/Makefile ${hdrdest}/arch/${arch}
  188. if [ "$subarch" = "i386" ]; then
  189. mkdir -p ${hdrdest}/arch/x86
  190. cp arch/x86/Makefile_32.cpu ${hdrdest}/arch/x86
  191. fi
  192. if [ "$arch" = "x86" ]; then
  193. mkdir -p ${hdrdest}/arch/x86/kernel
  194. cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel
  195. elif [ "$arch" = "arm64" ]; then
  196. mkdir -p ${hdrdest}/arch/arm64/kernel
  197. cp -a arch/arm64/kernel/vdso ${hdrdest}/arch/arm64/kernel/
  198. fi
  199. # add headers for lirc package
  200. # pci
  201. for i in bt8xx cx88 saa7134; do
  202. mkdir -p ${hdrdest}/drivers/media/pci/${i}
  203. cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i}
  204. done
  205. # usb
  206. for i in cpia2 em28xx pwc; do
  207. mkdir -p ${hdrdest}/drivers/media/usb/${i}
  208. cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i}
  209. done
  210. # i2c
  211. mkdir -p ${hdrdest}/drivers/media/i2c
  212. cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
  213. for i in cx25840; do
  214. mkdir -p ${hdrdest}/drivers/media/i2c/${i}
  215. cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
  216. done
  217. # Add docbook makefile
  218. install -Dm644 Documentation/DocBook/Makefile \
  219. ${hdrdest}/Documentation/DocBook/Makefile
  220. # Add md headers
  221. mkdir -p ${hdrdest}/drivers/md
  222. cp drivers/md/*.h ${hdrdest}/drivers/md
  223. # Add inotify.h
  224. mkdir -p ${hdrdest}/include/linux
  225. cp include/linux/inotify.h ${hdrdest}/include/linux
  226. # Add wireless headers
  227. mkdir -p ${hdrdest}/net/mac80211/
  228. cp net/mac80211/*.h ${hdrdest}/net/mac80211
  229. # add dvb headers for external modules
  230. mkdir -p ${hdrdest}/include/config/dvb/
  231. cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/
  232. # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
  233. mkdir -p ${hdrdest}/drivers/media/dvb-frontends
  234. cp drivers/media/dvb-frontends/lgdt330x.h \
  235. ${hdrdest}/drivers/media/dvb-frontends/
  236. cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/
  237. # add dvb headers
  238. mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb
  239. cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/
  240. mkdir -p ${hdrdest}/drivers/media/dvb-frontends
  241. cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/
  242. mkdir -p ${hdrdest}/drivers/media/tuners
  243. cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/
  244. # Add xfs and shmem for aufs building
  245. mkdir -p ${hdrdest}/fs/xfs/libxfs
  246. mkdir -p ${hdrdest}/mm
  247. cp fs/xfs/libxfs/xfs_sb.h ${hdrdest}/fs/xfs/libxfs/xfs_sb.h
  248. # Add objtool binary, needed to build external modules with dkms
  249. case "$XBPS_TARGET_MACHINE" in
  250. x86_64*)
  251. mkdir -p ${hdrdest}/tools/objtool
  252. cp tools/objtool/objtool ${hdrdest}/tools/objtool
  253. ;;
  254. esac
  255. # Remove unneeded architectures
  256. case "$arch" in
  257. i386|x86_64) _args="arm* p*";;
  258. arm|arm64) _args="x86* p*";;
  259. powerpc) _args="arm* x86* parisc";;
  260. esac
  261. for arch in alpha avr32 blackfin cris frv h8300 \
  262. ia64 m* s* um v850 xtensa ${_args}; do
  263. rm -rf ${hdrdest}/arch/${arch}
  264. done
  265. # Keep arch/x86/ras/Kconfig as it is needed by drivers/ras/Kconfig
  266. mkdir -p ${hdrdest}/arch/x86/ras
  267. cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig
  268. }