diff --git a/60-linux.hook b/60-linux.hook index b33873c..8d0cee3 100644 --- a/60-linux.hook +++ b/60-linux.hook @@ -9,4 +9,4 @@ Target = usr/lib/modules/%EXTRAMODULES%/* [Action] Description = Updating %PKGBASE% module dependencies... When = PostTransaction -Exec = /usr/bin/depmod %KERNVER% +Exec = /usr/bin/depmod --quick %KERNVER% diff --git a/PKGBUILD b/PKGBUILD index 681aa27..b54ce9c 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,16 +4,17 @@ pkgbase=linux # Build stock -arch kernel #pkgbase=linux-custom # Build kernel with a different name -pkgver=4.17.11 +_srcver=4.17.11-arch1 +pkgver=${_srcver//-/.} pkgrel=1 -arch=('x86_64') -url="https://www.kernel.org/" -license=('GPL2') -makedepends=('xmlto' 'kmod' 'inetutils' 'bc' 'libelf' 'git') +arch=(x86_64) +url="https://github.com/archlinux/linux/commits/v$_srcver" +license=(GPL2) +makedepends=(xmlto kmod inetutils bc libelf git) options=('!strip') _srcname=archlinux-linux source=( - "$_srcname::git+https://github.com/archlinux/linux?signed#tag=v$pkgver-arch${pkgrel%%.*}" + "$_srcname::git+https://github.com/archlinux/linux?signed#tag=v$_srcver" config # the main kernel config file 60-linux.hook # pacman hook for depmod 90-linux.hook # pacman hook for initramfs regeneration @@ -26,168 +27,188 @@ validpgpkeys=( ) sha256sums=('SKIP' 'aa7b6756f193f3b3a3fc4947e7a77b09e249df2e345e6495292055d757ba8be6' - 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' + '36e326d8a88b4087a3a0ee0d47643fc03baeda487659980d0e9d08791e4c729c' '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65') -_kernelname=${pkgbase#linux} -: ${_kernelname:=-arch} - prepare() { - cd ${_srcname} + cd $_srcname + + # Insert patches or cherry-picks here + + msg2 "Setting version..." scripts/setlocalversion --save-scmversion + echo "${pkgbase#linux}" > localversion.10-pkgname + echo "-$pkgrel" > localversion.20-pkgrel + + msg2 "Setting config..." cp ../config .config make olddefconfig + + make -s kernelrelease > ../version + msg2 "Prepared %s version %s" "$pkgbase" "$(<../version)" } build() { - cd ${_srcname} + cd $_srcname make bzImage modules } _package() { pkgdesc="The ${pkgbase/linux/Linux} kernel and modules" - [ "${pkgbase}" = "linux" ] && groups=('base') - depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7') + [[ $pkgbase = linux ]] && groups=(base) + depends=(coreutils linux-firmware kmod mkinitcpio) optdepends=('crda: to set the correct wireless channels of your country') - backup=("etc/mkinitcpio.d/${pkgbase}.preset") + backup=("etc/mkinitcpio.d/$pkgbase.preset") install=linux.install - cd ${_srcname} + local kernver="$( "${startdir}/${install}.pkg" - true && install=${install}.pkg + sed "$subst" "$startdir/$install" > "$startdir/$install.pkg" + true && install=$install.pkg - # install mkinitcpio preset file - sed "${_subst}" ../linux.preset | - install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" + # fill in mkinitcpio preset and pacman hooks + sed "$subst" ../linux.preset | install -Dm644 /dev/stdin \ + "$pkgdir/etc/mkinitcpio.d/$pkgbase.preset" + sed "$subst" ../60-linux.hook | install -Dm644 /dev/stdin \ + "$pkgdir/usr/share/libalpm/hooks/60-$pkgbase.hook" + sed "$subst" ../90-linux.hook | install -Dm644 /dev/stdin \ + "$pkgdir/usr/share/libalpm/hooks/90-$pkgbase.hook" - # install pacman hooks - sed "${_subst}" ../60-linux.hook | - install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/60-${pkgbase}.hook" - sed "${_subst}" ../90-linux.hook | - install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook" + msg2 "Fixing permissions..." + chmod -Rc u=rwX,go=rX "$pkgdir" } _package-headers() { pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel" - cd ${_srcname} - local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" + local builddir="$pkgdir/usr/lib/modules/$(/dev/null) + done < <(find "$builddir" -type f -perm -u+x ! -name vmlinux -print0) + + msg2 "Fixing permissions..." + chmod -Rc u=rwX,go=rX "$pkgdir" } _package-docs() { pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel" - cd ${_srcname} - local _builddir="${pkgdir}/usr/lib/modules/${_kernver}/build" + local builddir="$pkgdir/usr/lib/modules/$(