| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- # SPDX-License-Identifier: GPL-2.0-only
- # Maintainer: Thomas Weißschuh <linux@weissschuh.net>
- # Contributor: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
- pkgbase=${PACMAN_PKGBASE:-linux-upstream}
- pkgname=("${pkgbase}")
- _extrapackages=${PACMAN_EXTRAPACKAGES-headers api-headers debug}
- for pkg in $_extrapackages; do
- pkgname+=("${pkgbase}-${pkg}")
- done
- 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
- flex
- gettext
- kmod
- libelf
- openssl
- pahole
- perl
- python
- rsync
- tar
- )
- options=(!debug !strip !buildflags !makeflags)
- _prologue() {
- # MAKEFLAGS from makepkg.conf override the ones inherited from kbuild.
- # Bypass this override with a custom variable.
- export MAKEFLAGS="${KBUILD_MAKEFLAGS}"
- # Kbuild works in the output directory, where this PKGBUILD is located.
- cd "$(dirname "${BASH_SOURCE[0]}")"
- }
- build() {
- _prologue
- ${MAKE} KERNELRELEASE="${KERNELRELEASE}" KBUILD_BUILD_VERSION="${pkgrel}"
- }
- _package() {
- pkgdesc="The ${pkgdesc} kernel and modules"
- local modulesdir="${pkgdir}/usr/lib/modules/${KERNELRELEASE}"
- _prologue
- 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"
- local builddir="${pkgdir}/usr/lib/modules/${KERNELRELEASE}/build"
- _prologue
- if grep -q CONFIG_MODULES=y include/config/auto.conf; then
- echo "Installing build files..."
- "${srctree}/scripts/package/install-extmod-build" "${builddir}"
- fi
- echo "Installing System.map and config..."
- mkdir -p "${builddir}"
- 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="${pkgver}")
- conflicts=(linux-api-headers)
- _prologue
- ${MAKE} headers_install INSTALL_HDR_PATH="${pkgdir}/usr"
- }
- _package-debug(){
- pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel"
- local debugdir="${pkgdir}/usr/src/debug/${pkgbase}"
- local builddir="${pkgdir}/usr/lib/modules/${KERNELRELEASE}/build"
- _prologue
- install -Dt "${debugdir}" -m644 vmlinux
- mkdir -p "${builddir}"
- ln -sr "${debugdir}/vmlinux" "${builddir}/vmlinux"
- }
- for _p in "${pkgname[@]}"; do
- eval "package_$_p() {
- $(declare -f "_package${_p#$pkgbase}")
- _package${_p#$pkgbase}
- }"
- done
|