PKGBUILD 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # SPDX-License-Identifier: GPL-2.0-only
  2. # Maintainer: Thomas Weißschuh <linux@weissschuh.net>
  3. # Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
  4. pkgbase=${PACMAN_PKGBASE:-linux-upstream}
  5. pkgname=("${pkgbase}")
  6. _extrapackages=${PACMAN_EXTRAPACKAGES-headers api-headers debug}
  7. for pkg in $_extrapackages; do
  8. pkgname+=("${pkgbase}-${pkg}")
  9. done
  10. pkgver="${KERNELRELEASE//-/_}"
  11. # The PKGBUILD is evaluated multiple times.
  12. # Running scripts/build-version from here would introduce inconsistencies.
  13. pkgrel="${KBUILD_REVISION}"
  14. pkgdesc='Upstream Linux'
  15. url='https://www.kernel.org/'
  16. # Enable flexible cross-compilation
  17. arch=(${CARCH})
  18. license=(GPL-2.0-only)
  19. makedepends=(
  20. bc
  21. bison
  22. cpio
  23. flex
  24. gettext
  25. kmod
  26. libelf
  27. openssl
  28. pahole
  29. perl
  30. python
  31. rsync
  32. tar
  33. )
  34. options=(!debug !strip !buildflags !makeflags)
  35. _prologue() {
  36. # MAKEFLAGS from makepkg.conf override the ones inherited from kbuild.
  37. # Bypass this override with a custom variable.
  38. export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
  39. # Kbuild works in the output directory, where this PKGBUILD is located.
  40. cd "$(dirname "${BASH_SOURCE[0]}")"
  41. }
  42. build() {
  43. _prologue
  44. ${MAKE} KERNELRELEASE="${KERNELRELEASE}" KBUILD_BUILD_VERSION="${pkgrel}"
  45. }
  46. _package() {
  47. pkgdesc="The ${pkgdesc} kernel and modules"
  48. local modulesdir="${pkgdir}/usr/${MODLIB}"
  49. _prologue
  50. echo "Installing boot image..."
  51. # systemd expects to find the kernel here to allow hibernation
  52. # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344
  53. install -Dm644 "$(${MAKE} -s image_name)" "${modulesdir}/vmlinuz"
  54. # Used by mkinitcpio to name the kernel
  55. echo "${pkgbase}" > "${modulesdir}/pkgbase"
  56. echo "Installing modules..."
  57. ${MAKE} INSTALL_MOD_PATH="${pkgdir}/usr" INSTALL_MOD_STRIP=1 \
  58. DEPMOD=true modules_install
  59. if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then
  60. echo "Installing dtbs..."
  61. ${MAKE} INSTALL_DTBS_PATH="${modulesdir}/dtb" dtbs_install
  62. fi
  63. # remove build link, will be part of -headers package
  64. rm -f "${modulesdir}/build"
  65. }
  66. _package-headers() {
  67. pkgdesc="Headers and scripts for building modules for the ${pkgdesc} kernel"
  68. local builddir="${pkgdir}/usr/${MODLIB}/build"
  69. _prologue
  70. if grep -q CONFIG_MODULES=y include/config/auto.conf; then
  71. echo "Installing build files..."
  72. "${srctree}/scripts/package/install-extmod-build" "${builddir}"
  73. fi
  74. echo "Installing System.map and config..."
  75. mkdir -p "${builddir}"
  76. cp System.map "${builddir}/System.map"
  77. cp .config "${builddir}/.config"
  78. echo "Adding symlink..."
  79. mkdir -p "${pkgdir}/usr/src"
  80. ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}"
  81. }
  82. _package-api-headers() {
  83. pkgdesc="Kernel headers sanitized for use in userspace"
  84. provides=(linux-api-headers="${pkgver}")
  85. conflicts=(linux-api-headers)
  86. _prologue
  87. ${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr"
  88. }
  89. _package-debug(){
  90. pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel"
  91. local debugdir="${pkgdir}/usr/src/debug/${pkgbase}"
  92. local builddir="${pkgdir}/usr/${MODLIB}/build"
  93. _prologue
  94. install -Dt "${debugdir}" -m644 vmlinux
  95. mkdir -p "${builddir}"
  96. ln -sr "${debugdir}/vmlinux" "${builddir}/vmlinux"
  97. }
  98. for _p in "${pkgname[@]}"; do
  99. eval "package_$_p() {
  100. $(declare -f "_package${_p#$pkgbase}")
  101. _package${_p#$pkgbase}
  102. }"
  103. done