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 5pkgbase=${PACMAN_PKGBASE:-linux-upstream} 6pkgname=("${pkgbase}" "${pkgbase}-api-headers") 7if grep -q CONFIG_MODULES=y include/config/auto.conf; then 8 pkgname+=("${pkgbase}-headers") 9fi 10pkgver="${KERNELRELEASE//-/_}" 11# The PKGBUILD is evaluated multiple times. 12# Running scripts/build-version from here would introduce inconsistencies. 13pkgrel="${KBUILD_REVISION}" 14pkgdesc='Upstream Linux' 15url='https://www.kernel.org/' 16# Enable flexible cross-compilation 17arch=(${CARCH}) 18license=(GPL-2.0-only) 19makedepends=( 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) 34options=(!debug !strip !buildflags !makeflags) 35 36build() { 37 # MAKEFLAGS from makepkg.conf override the ones inherited from kbuild. 38 # Bypass this override with a custom variable. 39 export MAKEFLAGS="${KBUILD_MAKEFLAGS}" 40 cd "${objtree}" 41 42 ${MAKE} KERNELRELEASE="${KERNELRELEASE}" KBUILD_BUILD_VERSION="${pkgrel}" 43} 44 45_package() { 46 pkgdesc="The ${pkgdesc} kernel and modules" 47 48 export MAKEFLAGS="${KBUILD_MAKEFLAGS}" 49 cd "${objtree}" 50 local modulesdir="${pkgdir}/usr/${MODLIB}" 51 52 echo "Installing boot image..." 53 # systemd expects to find the kernel here to allow hibernation 54 # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 55 install -Dm644 "$(${MAKE} -s image_name)" "${modulesdir}/vmlinuz" 56 57 # Used by mkinitcpio to name the kernel 58 echo "${pkgbase}" > "${modulesdir}/pkgbase" 59 60 echo "Installing modules..." 61 ${MAKE} INSTALL_MOD_PATH="${pkgdir}/usr" INSTALL_MOD_STRIP=1 \ 62 DEPMOD=true modules_install 63 64 if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then 65 echo "Installing dtbs..." 66 ${MAKE} INSTALL_DTBS_PATH="${modulesdir}/dtb" dtbs_install 67 fi 68 69 # remove build link, will be part of -headers package 70 rm -f "${modulesdir}/build" 71} 72 73_package-headers() { 74 pkgdesc="Headers and scripts for building modules for the ${pkgdesc} kernel" 75 76 export MAKEFLAGS="${KBUILD_MAKEFLAGS}" 77 cd "${objtree}" 78 local builddir="${pkgdir}/usr/${MODLIB}/build" 79 80 echo "Installing build files..." 81 "${srctree}/scripts/package/install-extmod-build" "${builddir}" 82 83 echo "Installing System.map and config..." 84 cp System.map "${builddir}/System.map" 85 cp .config "${builddir}/.config" 86 87 echo "Adding symlink..." 88 mkdir -p "${pkgdir}/usr/src" 89 ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}" 90} 91 92_package-api-headers() { 93 pkgdesc="Kernel headers sanitized for use in userspace" 94 provides=(linux-api-headers) 95 conflicts=(linux-api-headers) 96 97 export MAKEFLAGS="${KBUILD_MAKEFLAGS}" 98 cd "${objtree}" 99 100 ${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr" 101} 102 103for _p in "${pkgname[@]}"; do 104 eval "package_$_p() { 105 $(declare -f "_package${_p#$pkgbase}") 106 _package${_p#$pkgbase} 107 }" 108done 109