# Maintainer: Alexey Rychkov # Contributor: Jan Alexander Steffens (heftig) # Arch Linux kernel source _ver=5.15.arch1 _srcname=archlinux-linux _srcurl="https://github.com/archlinux/linux.git" # Bcachefs kernel source _bcachefstag=v5.15 _bcachefsname=bcachefs-linux _bcachefsurl="https://evilpiepirate.org/git/bcachefs.git" pkgbase=linux-simple-bcachefs-git pkgver=5.15.arch1.r976 pkgrel=1 pkgdesc='Linux' _srctag=v${_ver%.*}-${_ver##*.} url="https://github.com/archlinux/linux/commits/$_srctag" arch=(x86_64) license=(GPL2) makedepends=( bc kmod libelf pahole cpio perl tar xz git ) options=('!strip') source=(config # the main kernel config file ) sha256sums=('8a0bdb434ac26c16e3a96f127d68c5585f3c33ee9ed01e12a33e3a36889c9aeb' ) export KBUILD_BUILD_HOST=archlinux export KBUILD_BUILD_USER=$pkgbase export KBUILD_BUILD_TIMESTAMP="$(date -Ru${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH})" prepare() { local bcachefspatch="${srcdir}/bcachefs.patch" echo "Extracting ${_bcachefsname} tree..." ( cd "${srcdir}/$_bcachefsname" && git fetch --depth 1 "$_bcachefsurl" "$_bcachefstag" && git checkout FETCH_HEAD ) || ( cd "$srcdir" && rm -rf "$_bcachefsname" && git clone --depth 1 --branch "$_bcachefstag" "$_bcachefsurl" "$_bcachefsname" ) cd "${srcdir}/$_bcachefsname" local version1="$(grep -m 1 -E "^VERSION\s*=\s*[0-9]+\s*$" Makefile | sed -e "s/[^0-9]//g")" local patchlevel1="$(grep -m 1 -E "^PATCHLEVEL\s*=\s*[0-9]+\s*$" Makefile | sed -e "s/[^0-9]//g")" echo "Extracting bcachefs patch..." git fetch --shallow-exclude="$_bcachefstag" "$_bcachefsurl" local gitMakefile="$(git show FETCH_HEAD:Makefile)" local version2="$(echo "$gitMakefile" | grep -m 1 -E "^VERSION\s*=\s*[0-9]+\s*$" | sed -e "s/[^0-9]//g")" local patchlevel2="$(echo "$gitMakefile" | grep -m 1 -E "^PATCHLEVEL\s*=\s*[0-9]+\s*$" | sed -e "s/[^0-9]//g")" if test "$version1" != "$version2" || test "$patchlevel1" != "$patchlevel2"; then echo "Expected version is ${version1}.${patchlevel1}, but bcachefs git version is ${version2}.${patchlevel2}. Stopping." exit 1; fi git diff HEAD FETCH_HEAD > "$bcachefspatch" echo "Extracting ${_srcname} tree..." ( cd "${srcdir}/$_srcname" && git fetch --depth 1 "$_srcurl" "$_srctag" && git checkout -f FETCH_HEAD && git clean -fdq ) || ( cd "$srcdir" && rm -rf "$_srcname" && git clone --depth 1 --branch "$_srctag" "$_srcurl" "$_srcname" ) cd "${srcdir}/$_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 "Applying patch bcachefs.patch..." patch -Np1 < "$bcachefspatch" cd "${srcdir}/$_srcname" echo "Setting config..." cp ../config .config printf '%s\n%s\n%s\n%s\n%s\n' \ "CONFIG_BCACHEFS_FS=y" \ "CONFIG_BCACHEFS_QUOTA=y" \ "CONFIG_BCACHEFS_POSIX_ACL=y" \ "# CONFIG_BCACHEFS_DEBUG is not set" \ "# CONFIG_BCACHEFS_TESTS is not set" >> .config make olddefconfig diff -u ../config .config || : make -s kernelrelease > version echo "Prepared $pkgbase version $(