# Maintainer: Gabor Pali pkgname=linux-edge pkgver=6.8.1 case $pkgver in *.*.*) _kernver=${pkgver%.*};; *.*) _kernver=$pkgver;; esac pkgrel=0 pkgdesc="Linux stable kernel" url="https://www.kernel.org" depends= _depends_dev="perl gmp-dev elfutils-dev flex bison" makedepends="$_depends_dev sed installkernel bc linux-headers linux-firmware-any openssl-dev>3 diffutils findutils" provides="linux" options="!strip" install= source="https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kernver.tar.xz config-edge.x86_64 " subpackages="$pkgname-dev:_dev:$CBUILD_ARCH" builddir="$srcdir"/linux-"$_kernver" if [ "${pkgver%.0}" = "$pkgver" ]; then source="$source https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz" fi arch="x86_64" license="GPL-2.0-only" prepare() { if [ "$_kernver" != "$pkgver" ]; then msg "Applying patch-$pkgver.xz" unxz -c < "$srcdir"/patch-$pkgver.xz | patch -p1 -N fi default_prepare # remove localversion from patch if any rm -f localversion* } _prepareconfig() { local _config="config-edge.x86_64" local _builddir="$srcdir"/build-edge.x86_64 mkdir -p "$_builddir" echo "-$pkgrel-edge" > "$_builddir"/localversion-alpine cp "$srcdir"/"$_config" "$_builddir"/.config msg "Configuring the kernel" make -C "$srcdir"/linux-"$_kernver" \ O="$_builddir" \ ARCH=x86_64 \ olddefconfig } build() { unset LDFLAGS # for some reason these sometimes leak into the kernel build, # -Werror=format-security breaks some stuff unset CFLAGS CPPFLAGS CXXFLAGS export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" _prepareconfig msg "Building the kernel" cd "$srcdir"/build-edge.x86_64 make ARCH="x86_64" \ DTC_FLAGS="-@" \ CC="${CC:-gcc}" \ KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-Alpine" } package() { local _outdir="$pkgdir" export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" cd "$srcdir"/build-edge.x86_64 local _abi_release="$(make -s kernelrelease)" # modules_install seems to regenerate a defect Modules.symvers on s390x. Work # around it by backing it up and restore it after modules_install cp Module.symvers Module.symvers.backup mkdir -p "$_outdir"/boot "$_outdir"/lib/modules make modules_install install \ ARCH="x86_64" \ INSTALL_MOD_PATH="$_outdir" \ INSTALL_MOD_STRIP=1 \ INSTALL_PATH="$_outdir"/boot \ INSTALL_DTBS_PATH="$_outdir/boot/dtbs-edge" cp Module.symvers.backup Module.symvers rm -f "$_outdir"/lib/modules/"$_abi_release"/build \ "$_outdir"/lib/modules/"$_abi_release"/source \ "$_outdir"/boot/System.map-edge \ "$_outdir"/boot/config-edge rm -rf "$_outdir"/lib/firmware } _dev() { local _builddir="$srcdir"/build-edge.x86_64 local _abi_release="$(make -C "$_builddir" -s kernelrelease)" # copy the only the parts that we really need for build 3rd party # kernel modules and install those as /usr/src/linux-headers, # simlar to what ubuntu does # # this way you dont need to install the 300-400 kernel sources to # build a tiny kernel module # pkgdesc="Headers and script for third party modules for the kernel" depends="$_depends_dev" local dir="$subpkgdir"/usr/src/linux-headers-"$_abi_release" export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" # first we import config, run prepare to set up for building # external modules, and create the scripts mkdir -p "$dir" cp -a "$_builddir"/.config "$_builddir"/localversion-alpine \ "$dir"/ make -C "$srcdir"/linux-"$_kernver" \ O="$dir" \ ARCH="x86_64" \ prepare modules_prepare scripts # remove the stuff that points to real sources. we want 3rd party # modules to believe this is the soruces rm "$dir"/Makefile "$dir"/source # copy the needed stuff from real sources # # this is taken from ubuntu kernel build script # http://kernel.ubuntu.com/git/ubuntu/ubuntu-zesty.git/tree/debian/rules.d/3-binary-indep.mk cd "$srcdir"/linux-"$_kernver" find . -path './include/*' -prune \ -o -path './scripts/*' -prune -o -type f \ \( -name 'Makefile*' -o -name 'Kconfig*' -o -name 'Kbuild*' -o \ -name '*.sh' -o -name '*.pl' -o -name '*.lds' -o -name 'Platform' \) \ -print | cpio -pdm "$dir" cp -a scripts include "$dir" find arch/x86 -name include -type d -print | while IFS='' read -r folder; do find "$folder" -type f done | sort -u | cpio -pdm "$dir" install -Dm644 "$srcdir"/build-edge.$CARCH/Module.symvers \ "$dir"/Module.symvers # remove unneeded things msg "Removing documentation..." rm -rf "$dir"/Documentation find "$dir" -type f -name '*.o' -printf 'Removing %P\n' -delete mkdir -p "$subpkgdir"/lib/modules/"$_abi_release" ln -sf /usr/src/linux-headers-"$_abi_release" \ "$subpkgdir"/lib/modules/"$_abi_release"/build } sha512sums=" 5c4eb4aa1d3f7d1ea01c0f7ddeadacdece6e144fd4bdfc16b2b925d3e10dc04de3a6db69320b79a96c3560052616f001d2c09e7a1bb4f7b731e2380a7ecce068 linux-6.8.tar.xz cf75485c89e50674bbadfc83089deead0ccb25ea1358cdb2d025f445e0986d8549bb2c6b5ecf1fcfad420dae0a9208c725064377b10d7de96c896fb17d92a247 config-edge.x86_64 33ddb70a2df5ce51e23a82616e02197e4b812e0c094d0c88dd6ea6e2f00d843c2ff124fc15548e0ae3853fc1a6ea605e6b94eff7aa49a34961d7b20b7d27ff6c patch-6.8.1.xz "