# SPDX-License-Identifier: GPL-2.0-only # Maintainer: Thomas Weißschuh # Contributor: Jan Alexander Steffens (heftig) pkgbase=${PACMAN_PKGBASE:-linux-upstream} pkgname=("${pkgbase}" "${pkgbase}-api-headers") if grep -q CONFIG_MODULES=y include/config/auto.conf; then pkgname+=("${pkgbase}-headers") fi pkgver="${KERNELRELEASE//-/_}" # The PKGBUILD is evaluated multiple times. # Running scripts/build-version from here would introduce inconsistencies. pkgrel="${KBUILD_REVISION}" pkgdesc='Upstream Linux' url='https://www.kernel.org/' # Enable flexible cross-compilation arch=(${CARCH}) license=(GPL-2.0-only) makedepends=( bc bison cpio flex gettext kmod libelf openssl pahole perl python rsync tar ) options=(!debug !strip !buildflags !makeflags) build() { # MAKEFLAGS from makepkg.conf override the ones inherited from kbuild. # Bypass this override with a custom variable. export MAKEFLAGS="${KBUILD_MAKEFLAGS}" cd "${objtree}" ${MAKE} KERNELRELEASE="${KERNELRELEASE}" KBUILD_BUILD_VERSION="${pkgrel}" } _package() { pkgdesc="The ${pkgdesc} kernel and modules" export MAKEFLAGS="${KBUILD_MAKEFLAGS}" cd "${objtree}" local modulesdir="${pkgdir}/usr/${MODLIB}" echo "Installing boot image..." # systemd expects to find the kernel here to allow hibernation # https://github.com/systemd/systemd/commit/edda44605f06a41fb86b7ab8128dcf99161d2344 install -Dm644 "$(${MAKE} -s image_name)" "${modulesdir}/vmlinuz" # Used by mkinitcpio to name the kernel echo "${pkgbase}" > "${modulesdir}/pkgbase" echo "Installing modules..." ${MAKE} INSTALL_MOD_PATH="${pkgdir}/usr" INSTALL_MOD_STRIP=1 \ DEPMOD=true modules_install if [ -d "${srctree}/arch/${SRCARCH}/boot/dts" ]; then echo "Installing dtbs..." ${MAKE} INSTALL_DTBS_PATH="${modulesdir}/dtb" dtbs_install fi # remove build link, will be part of -headers package rm -f "${modulesdir}/build" } _package-headers() { pkgdesc="Headers and scripts for building modules for the ${pkgdesc} kernel" export MAKEFLAGS="${KBUILD_MAKEFLAGS}" cd "${objtree}" local builddir="${pkgdir}/usr/${MODLIB}/build" echo "Installing build files..." "${srctree}/scripts/package/install-extmod-build" "${builddir}" echo "Installing System.map and config..." cp System.map "${builddir}/System.map" cp .config "${builddir}/.config" echo "Adding symlink..." mkdir -p "${pkgdir}/usr/src" ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}" } _package-api-headers() { pkgdesc="Kernel headers sanitized for use in userspace" provides=(linux-api-headers) conflicts=(linux-api-headers) export MAKEFLAGS="${KBUILD_MAKEFLAGS}" cd "${objtree}" ${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr" } for _p in "${pkgname[@]}"; do eval "package_$_p() { $(declare -f "_package${_p#$pkgbase}") _package${_p#$pkgbase} }" done