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