aboutsummarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD228
1 files changed, 171 insertions, 57 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 743e2e3ac4cd..7e14160b1f58 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,49 +1,146 @@
-# Maintainer: Mark Weiman (markzz) <mark.weiman@markzz.com>
-# Maintainer: Katelyn Schiesser (slowbro) <katelyn.schiesser@gmail.com>
+# Maintainer:
+# Contributor: éclairevoyant
+# Contributor: Mark Weiman (markzz) <mark.weiman@markzz.com>
+# Contributor: Katelyn Schiesser (slowbro) <katelyn.schiesser@gmail.com>
# Contributor: Dan Ziemba <zman0900@gmail.com>
-# Upstream: Jan Alexander Steffens (heftig) <heftig@archlinux.org>
-pkgbase=linux-vfio
-pkgver=5.15.13.arch1
+## options
+: ${_build_arch_patch:=true}
+
+: ${_build_clang:=false}
+: ${_build_tracer:=true}
+: ${_build_numa:=true}
+
+: ${_build_vfio:=true}
+: ${_build_lts:=false}
+: ${_build_v3:=false}
+
+unset _pkgtype
+[[ "${_build_vfio::1}" == "t" ]] && _pkgtype+="-vfio"
+[[ "${_build_lts::1}" == "t" ]] && _pkgtype+="-lts"
+[[ "${_build_v3::1}" == "t" ]] && _pkgtype+="-v3"
+
+## basic info
+_gitname="linux"
+_pkgname="$_gitname${_pkgtype:-}"
+pkgbase="$_pkgname"
+pkgver=6.8.9
pkgrel=1
pkgdesc='Linux'
-_srctag=v${pkgver%.*}-${pkgver##*.}
-url="https://github.com/archlinux/linux/commits/$_srctag"
-arch=(x86_64)
-license=(GPL2)
+url='https://www.kernel.org'
+license=('GPL-2.0-or-later')
+arch=('x86_64')
+
makedepends=(
- bc kmod libelf pahole cpio perl tar xz
- xmlto python-sphinx python-sphinx_rtd_theme graphviz imagemagick
- git
+ bc
+ cpio
+ gettext
+ libelf
+ pahole
+ perl
+ python
+ tar
+ xz
+
+ # htmldocs
+ graphviz
+ imagemagick
+ python-sphinx
+ python-yaml
+ texlive-latexextra
)
options=('!strip')
-_srcname=archlinux-linux
-source=(
- "$_srcname::git+https://github.com/archlinux/linux?signed#tag=$_srctag"
- config # the main kernel config file
- add-acs-overrides.patch
- i915-vga-arbiter.patch
+_srcname=linux-$pkgver
+source+=(
+ https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/${_srcname}.tar.{xz,sign}
+ "config-$pkgver"::https://gitlab.archlinux.org/archlinux/packaging/packages/linux/-/raw/main/config
+)
+sha256sums+=(
+ 'f905f1238ea7a8e85314bacf283302e8097006010d25fcea726d0de0ea5bc9b6'
+ 'SKIP'
+ 'SKIP'
)
validpgpkeys=(
- 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
- '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
- 'A2FF3A36AAA56654109064AB19802F8B0D70FC30' # Jan Alexander Steffens (heftig)
- 'C7E7849466FE2358343588377258734B41C31549' # David Runge <dvzrv@archlinux.org>
+ ABAF11C65A2970B130ABE3C479BE3E4300411886 # Linus Torvalds
+ 647F28654894E3BD457199BE38DBBDC86092693E # Greg Kroah-Hartman
+ 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig)
)
-sha256sums=('SKIP'
- '6000b247aac5620ba08ec862353063f5f8806a33c4c8f55263843c8f47027e63'
- 'b90be7b79652be61f7d50691000f6a8c75a240dc2eee2667b68d984f67583f77'
- '856230cfbdc2bb53a4920dfbcb6fb2d58427b7b184e5f94e21f08011d0a2fcc6')
+
+if [[ ${_build_vfio::1} == "t" ]]; then
+ source+=(
+ 1001-6.8.0-add-acs-overrides.patch # updated from https://lkml.org/lkml/2013/5/30/513
+ 1002-6.8.0-i915-vga-arbiter.patch # updated from https://lkml.org/lkml/2014/5/9/517
+ )
+ sha256sums+=(
+ 'b35c26d5dc31fb9cfac68292de7b1ee8ca93b4647e4958efc77e2c77f586f1f2'
+ '966c15da4044a9a3b5f9d362c2cf08303f1265ad4489c9835c95973b71255d07'
+ )
+fi
+
+if [[ ${_build_arch_patch::1} == "t" ]]; then
+ _srctag=v${pkgver}-arch1
+ _dl_url_arch='https://github.com/archlinux/linux'
+
+ # if no new patch, use previous one
+ if grep 404 <(curl -sI $_dl_url_arch/releases/download/$_srctag/linux-$_srctag.patch.zst | head -1) > /dev/null; then
+ _srctag=v${pkgver::4}$((${pkgver##*.} - 1))-arch1
+ fi
+
+ source+=(
+ $_dl_url_arch/releases/download/$_srctag/linux-$_srctag.patch.zst{,.sig}
+ )
+ sha256sums+=(
+ 'SKIP'
+ 'SKIP'
+ )
+fi
+
+if [[ ${_build_clang::1} == "t" ]]; then
+ makedepends+=(clang llvm lld)
+
+ export LLVM=1
+ export LLVM_IAS=1
+fi
+
+if [[ "${_build_v3::1}" == "t" ]]; then
+ export KCFLAGS="-march=x86-64-v3 -mtune=generic -O3"
+ export HOSTCFLAGS="-march=x86-64-v3 -mtune=generic -O3"
+ export HOSTCXXFLAGS="-march=x86-64-v3 -mtune=generic -O3"
+fi
export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=$pkgbase
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
+_prepare_extra() {
+ # remove extra version suffix
+ sed -E 's&^(EXTRAVERSION =).*$&\1&' -i Makefile
+
+ if [[ "${_build_clang::1}" == "t" ]]; then
+ scripts/config --disable LTO_CLANG_FULL
+ scripts/config --enable LTO_CLANG_THIN
+ fi
+
+ if [[ "${_build_clang::1}" == "t" ]] || [[ "${_build_tracer::1}" != "t" ]]; then
+ echo "Disabling Tracers..."
+ scripts/config \
+ --disable CONFIG_FTRACE \
+ --disable CONFIG_FUNCTION_TRACER \
+ --disable CONFIG_STACK_TRACER
+ fi
+
+ if [[ "${_build_numa::1}" != "t" ]]; then
+ echo "Disabling NUMA..."
+ scripts/config --disable CONFIG_NUMA
+ fi
+}
+
prepare() {
+ cp "config-$pkgver" "config"
+
cd $_srcname
echo "Setting version..."
- scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
@@ -51,36 +148,50 @@ prepare() {
for src in "${source[@]}"; do
src="${src%%::*}"
src="${src##*/}"
+ src="${src%.zst}"
[[ $src = *.patch ]] || continue
+ echo
echo "Applying patch $src..."
- patch -Np1 < "../$src"
+ patch -Np1 -F100 -i "../$src"
done
echo "Setting config..."
cp ../config .config
make olddefconfig
+ diff -u ../config .config || :
+
+ _prepare_extra
make -s kernelrelease > version
- echo "Prepared $pkgbase version $(<version)"
+ echo "Prepared $pkgbase version $(< version)"
}
build() {
cd $_srcname
make all
- make htmldocs
+ make -C tools/bpf/bpftool vmlinux.h feature-clang-bpf-co-re=1
+ #make htmldocs
}
_package() {
- pkgdesc="The $pkgdesc kernel and modules"
- depends=(coreutils kmod initramfs)
- optdepends=('crda: to set the correct wireless channels of your country'
- 'linux-firmware: firmware images needed for some devices')
- provides=(VIRTUALBOX-GUEST-MODULES WIREGUARD-MODULE)
- replaces=(virtualbox-guest-modules-arch wireguard-arch)
+ pkgdesc="The $pkgdesc kernel and modules (ACS override and i915 VGA arbiter patches)"
+ depends=(
+ coreutils
+ initramfs
+ kmod
+ )
+ optdepends=(
+ 'wireless-regdb: to set the correct wireless channels of your country'
+ 'linux-firmware: firmware images needed for some devices'
+ )
+ provides=(
+ KSMBD-MODULE
+ VIRTUALBOX-GUEST-MODULES
+ WIREGUARD-MODULE
+ )
cd $_srcname
- local kernver="$(<version)"
- local modulesdir="$pkgdir/usr/lib/modules/$kernver"
+ local modulesdir="$pkgdir/usr/lib/modules/$(< version)"
echo "Installing boot image..."
# systemd expects to find the kernel here to allow hibernation
@@ -91,18 +202,19 @@ _package() {
echo "$pkgbase" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
echo "Installing modules..."
- make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
+ ZSTD_CLEVEL=19 make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 \
+ DEPMOD=/doesnt/exist modules_install # Suppress depmod
- # remove build and source links
- rm "$modulesdir"/{source,build}
+ # remove build link
+ rm "$modulesdir"/build
}
_package-headers() {
- pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
+ pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel (ACS override and i915 VGA arbiter patches)"
depends=(pahole)
cd $_srcname
- local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
+ local builddir="$pkgdir/usr/lib/modules/$(< version)/build"
echo "Installing build files..."
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
@@ -111,11 +223,11 @@ _package-headers() {
install -Dt "$builddir/arch/x86" -m644 arch/x86/Makefile
cp -t "$builddir" -a scripts
- # add objtool for external module building and enabled VALIDATION_STACK option
+ # required when STACK_VALIDATION is enabled
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
- # add xfs and shmem for aufs building
- mkdir -p "$builddir"/{fs/xfs,mm}
+ # required when DEBUG_INFO_BTF_MODULES is enabled
+ install -Dt "$builddir/tools/bpf/resolve_btfids" tools/bpf/resolve_btfids/resolve_btfids
echo "Installing headers..."
cp -t "$builddir" -a include
@@ -125,10 +237,10 @@ _package-headers() {
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
- # http://bugs.archlinux.org/task/13146
+ # https://bugs.archlinux.org/task/13146
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
- # http://bugs.archlinux.org/task/20402
+ # https://bugs.archlinux.org/task/20402
install -Dt "$builddir/drivers/media/usb/dvb-usb" -m644 drivers/media/usb/dvb-usb/*.h
install -Dt "$builddir/drivers/media/dvb-frontends" -m644 drivers/media/dvb-frontends/*.h
install -Dt "$builddir/drivers/media/tuners" -m644 drivers/media/tuners/*.h
@@ -159,12 +271,12 @@ _package-headers() {
echo "Stripping build tools..."
local file
while read -rd '' file; do
- case "$(file -bi "$file")" in
- application/x-sharedlib\;*) # Libraries (.so)
+ case "$(file -Sib "$file")" in
+ application/x-sharedlib\;*) # Libraries (.so)
strip -v $STRIP_SHARED "$file" ;;
- application/x-archive\;*) # Libraries (.a)
+ application/x-archive\;*) # Libraries (.a)
strip -v $STRIP_STATIC "$file" ;;
- application/x-executable\;*) # Binaries
+ application/x-executable\;*) # Binaries
strip -v $STRIP_BINARIES "$file" ;;
application/x-pie-executable\;*) # Relocatable binaries
strip -v $STRIP_SHARED "$file" ;;
@@ -180,10 +292,10 @@ _package-headers() {
}
_package-docs() {
- pkgdesc="Documentation for the $pkgdesc kernel"
+ pkgdesc="Documentation for the $pkgdesc kernel (ACS override and i915 VGA arbiter patches)"
cd $_srcname
- local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
+ local builddir="$pkgdir/usr/lib/modules/$(< version)/build"
echo "Installing documentation..."
local src dst
@@ -198,12 +310,14 @@ _package-docs() {
ln -sr "$builddir/Documentation" "$pkgdir/usr/share/doc/$pkgbase"
}
-pkgname=("$pkgbase" "$pkgbase-headers" "$pkgbase-docs")
+pkgname=(
+ "$pkgbase"
+ "$pkgbase-headers"
+ #"$pkgbase-docs"
+)
for _p in "${pkgname[@]}"; do
eval "package_$_p() {
$(declare -f "_package${_p#$pkgbase}")
_package${_p#$pkgbase}
}"
done
-
-# vim:set ts=8 sts=2 sw=2 et: