linux-surface/pkg/arch/kernel/PKGBUILD
Maximilian Luz 7c0e669f67
Update v5.8 patches
Changes:
 - SAM:
   - Update DTX driver state after resume.
   - Add DTX Documentation, misc. fixes, and cleanup.

 - IPTS:
   This implements a new and refined UAPI interface that should improve
   stability during suspend and move some responsibility into userspace,
   making the driver simpler.

   It also fixes some sleep issues due to improper shutdown of the device.

   Shortlog:
     0a4a44c Add missing include
     31ae03d Improve error handling of ipts_control_* functions
     287dea0 Prevent lockups if stop is called from the receiver thread
     b737a9c On remove, wait until CLEAR_MEM_WINDOW returned.
     c5b66a5 Add GET_DEVICE_READY ioctl
     af0f84a Seperate UAPI initialization and device probing
     4ae7674 Patch the MEI bus to allow sending commands on remove
     27772bc Just a few refactorings...

Links:
- SAM: af4bb01042
- IPTS: 0a4a44c2a9
- kernel: 6e8bb10ad8
2020-10-22 18:27:17 +02:00

215 lines
7.2 KiB
Bash

# Maintainer: Blaž Hrastnik <blaz@mxxn.io>
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgbase=linux-surface
pkgver=5.8.14.arch1
pkgrel=2
pkgdesc='Linux'
_fullver=${pkgver%.*}-${pkgver##*.}
_srctag=v${_fullver}
url="https://git.archlinux.org/linux.git/log/?h=$_srctag"
arch=(x86_64)
license=(GPL2)
makedepends=(
bc kmod libelf
# we don't need `pahole` as deps because we disable `CONFIG_DEBUG_INFO`
# ignoring deps for docs because we don't build docs package
git
)
optdepends=('iptsd: Touchscreen support')
options=('!strip')
_srcname=linux-${_fullver}
source=(
"https://git.archlinux.org/linux.git/snapshot/linux-$_fullver.tar.gz"
config # the main kernel config file
surface.config # surface specific options
arch.config # config changes for linux-surface kernel
0001-surface3-oemb.patch
0002-wifi.patch
0003-ipts.patch
0004-surface-gpe.patch
0005-surface-sam-over-hid.patch
0006-surface-sam.patch
0007-i2c-core-Restore-acpi_walk_dep_device_list-getting-c.patch
)
validpgpkeys=(
'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds
'647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman
'A2FF3A36AAA56654109064AB19802F8B0D70FC30' # Jan Alexander Steffens (heftig)
)
sha256sums=('1251a7e13c23ad35c38f8e58227fc0183e7087a81ee030766e2db8cbe2453392'
'181330a9cf4517abbbe29b93165bc859ad8ca14a43582f4e1d69aae2b5ecc2c9'
'7f52b09f0bf62d9b2ba162a424ce99caa50cb671f2b78fca1c1dc81e33e9b57f'
'8cd2b019aac6d3807a5cdcbbbe0aad81e63193ff3e8dffd7a79d4a1421b858f6'
'a17c433dfa32ab3c967b217b19ff80aca2cfc07b9179a915b2f5695f07b25b5e'
'055f026f07a61cb02071e3cd3f5a93f8b1daf4688c4eebf1d24d7a012e9a0932'
'23c107c34d4d71f10d1ee37c228a8492d737c563493f7b71a01cdbcf1a8a7244'
'63c90132ef46562733a672cf7fc538c2fa9605605f9ed0bc471d48936147bcaf'
'f179f9a2385efee788715ad8acddd68b8cfeee0d79433e22d14341f417dd56da'
'750cc0491366373ceb0f24ab7ede555e4691855cee3c6e89a357169f56bf5981'
'7126649ec8af8127c28507b70cbf3f2ec125e496e98e3ea2a47e65f7234a2134')
export KBUILD_BUILD_HOST=archlinux
export KBUILD_BUILD_USER=$pkgbase
export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})"
# optional certificate and key for secure boot signing
_mok_crt="$PWD/MOK.crt"
_mok_key="$PWD/MOK.key"
prepare() {
cd $_srcname
echo "Setting version..."
scripts/setlocalversion --save-scmversion
echo "-$pkgrel" > localversion.10-pkgrel
echo "${pkgbase#linux}" > localversion.20-pkgname
local src
for src in "${source[@]}"; do
src="${src%%::*}"
src="${src##*/}"
[[ $src = *.patch ]] || continue
echo "Applying patch $src..."
patch -Np1 < "../$src"
done
echo "Setting config..."
# cp ../config .config
# merge the two configs together
./scripts/kconfig/merge_config.sh -m ../config ../surface.config ../arch.config
make olddefconfig
make -s kernelrelease > version
echo "Prepared $pkgbase version $(<version)"
}
build() {
cd $_srcname
make all
}
_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)
cd $_srcname
local kernver="$(<version)"
local modulesdir="$pkgdir/usr/lib/modules/$kernver"
local image_name="$(make -s image_name)"
# sign boot image if the prequisites are available
if [[ -f "$_mok_crt" ]] && [[ -f "$_mok_key" ]] && [[ -x "$(command -v sbsign)" ]]; then
echo "Signing boot image..."
sbsign --key "$_mok_key" --cert "$_mok_crt" --output "$image_name" "$image_name"
fi
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" | install -Dm644 /dev/stdin "$modulesdir/pkgbase"
echo "Installing modules..."
make INSTALL_MOD_PATH="$pkgdir/usr" INSTALL_MOD_STRIP=1 modules_install
# remove build and source links
rm "$modulesdir"/{source,build}
}
_package-headers() {
pkgdesc="Headers and scripts for building modules for the $pkgdesc kernel"
cd $_srcname
local builddir="$pkgdir/usr/lib/modules/$(<version)/build"
echo "Installing build files..."
install -Dt "$builddir" -m644 .config Makefile Module.symvers System.map \
localversion.* version vmlinux
install -Dt "$builddir/kernel" -m644 kernel/Makefile
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
install -Dt "$builddir/tools/objtool" tools/objtool/objtool
# add xfs and shmem for aufs building
mkdir -p "$builddir"/{fs/xfs,mm}
echo "Installing headers..."
cp -t "$builddir" -a include
cp -t "$builddir/arch/x86" -a arch/x86/include
install -Dt "$builddir/arch/x86/kernel" -m644 arch/x86/kernel/asm-offsets.s
install -Dt "$builddir/drivers/md" -m644 drivers/md/*.h
install -Dt "$builddir/net/mac80211" -m644 net/mac80211/*.h
# http://bugs.archlinux.org/task/13146
install -Dt "$builddir/drivers/media/i2c" -m644 drivers/media/i2c/msp3400-driver.h
# http://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
echo "Installing KConfig files..."
find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \;
echo "Removing unneeded architectures..."
local arch
for arch in "$builddir"/arch/*/; do
[[ $arch = */x86/ ]] && continue
echo "Removing $(basename "$arch")"
rm -r "$arch"
done
echo "Removing documentation..."
rm -r "$builddir/Documentation"
echo "Removing broken symlinks..."
find -L "$builddir" -type l -printf 'Removing %P\n' -delete
echo "Removing loose objects..."
find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete
echo "Stripping build tools..."
local file
while read -rd '' file; do
case "$(file -bi "$file")" in
application/x-sharedlib\;*) # Libraries (.so)
strip -v $STRIP_SHARED "$file" ;;
application/x-archive\;*) # Libraries (.a)
strip -v $STRIP_STATIC "$file" ;;
application/x-executable\;*) # Binaries
strip -v $STRIP_BINARIES "$file" ;;
application/x-pie-executable\;*) # Relocatable binaries
strip -v $STRIP_SHARED "$file" ;;
esac
done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0)
echo "Stripping vmlinux..."
strip -v $STRIP_STATIC "$builddir/vmlinux"
echo "Adding symlink..."
mkdir -p "$pkgdir/usr/src"
ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase"
}
pkgname=("$pkgbase" "$pkgbase-headers")
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: