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