File Index
Files and directories
Sign in
FILE

PKGBUILD

File preview with syntax highlighting.

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