diff --git a/60-linux.hook b/60-linux.hook new file mode 100644 index 0000000..b33873c --- /dev/null +++ b/60-linux.hook @@ -0,0 +1,12 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Operation = Remove +Target = usr/lib/modules/%KERNVER%/* +Target = usr/lib/modules/%EXTRAMODULES%/* + +[Action] +Description = Updating %PKGBASE% module dependencies... +When = PostTransaction +Exec = /usr/bin/depmod %KERNVER% diff --git a/90-linux.hook b/90-linux.hook index 9851151..be0d886 100644 --- a/90-linux.hook +++ b/90-linux.hook @@ -6,6 +6,6 @@ Target = boot/vmlinuz-%PKGBASE% Target = usr/lib/initcpio/* [Action] -Description = Updating %PKGBASE% initcpios +Description = Updating %PKGBASE% initcpios... When = PostTransaction Exec = /usr/bin/mkinitcpio -p %PKGBASE% diff --git a/PKGBUILD b/PKGBUILD index e117a64..cd185e0 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -5,7 +5,7 @@ pkgbase=linux # Build stock -ARCH kernel #pkgbase=linux-custom # Build kernel with a different name _srcname=linux-4.14 pkgver=4.14 -pkgrel=1 +pkgrel=2 arch=('x86_64') url="https://www.kernel.org/" license=('GPL2') @@ -17,6 +17,7 @@ source=( #"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz" #"https://www.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.sign" 'config' # the main kernel config file + '60-linux.hook' # pacman hook for depmod '90-linux.hook' # pacman hook for initramfs regeneration 'linux.preset' # standard config files for mkinitcpio ramdisk '0001-platform-x86-hp-wmi-Fix-tablet-mode-detection-for-co.patch' @@ -28,7 +29,8 @@ validpgpkeys=( sha256sums=('f81d59477e90a130857ce18dc02f4fbe5725854911db1e7ba770c7cd350f96a7' 'SKIP' 'a68e94064f040d60e8e4c3380efeee085b54d252d527e960dd17ac688505d5b6' - '834bd254b56ab71d73f59b3221f056c72f559553c04718e350ab2a3e2991afe0' + 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' + '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' '6f1d9b6a119bfab150a0bc1f550609dd9290328df709b67c984f0a6b0abe8afd') @@ -97,22 +99,17 @@ _package() { _basekernel=${_kernver%%-*} _basekernel=${_basekernel%.*} - mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot} + mkdir -p "${pkgdir}"/{boot,lib/{modules,firmware},usr} make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install cp arch/x86/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}" - # set correct depmod command for install - sed -e "s|%PKGBASE%|${pkgbase}|g;s|%KERNVER%|${_kernver}|g" \ - "${startdir}/${install}" > "${startdir}/${install}.pkg" - true && install=${install}.pkg + # make room for external modules + local _extramodules="extramodules-${_basekernel}${_kernelname:--ARCH}" + ln -s "../${_extramodules}" "${pkgdir}/lib/modules/${_kernver}/extramodules" - # install mkinitcpio preset file for kernel - sed "s|%PKGBASE%|${pkgbase}|g" ../linux.preset | - install -Dm644 /dev/stdin "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset" - - # install pacman hook for initramfs regeneration - sed "s|%PKGBASE%|${pkgbase}|g" ../90-linux.hook | - install -Dm644 /dev/stdin "${pkgdir}/usr/share/libalpm/hooks/90-${pkgbase}.hook" + # add real version for building modules and running depmod from hook + echo "${_kernver}" | + install -Dm644 /dev/stdin "${pkgdir}/lib/modules/${_extramodules}/version" # remove build and source links rm "${pkgdir}"/lib/modules/${_kernver}/{source,build} @@ -120,21 +117,35 @@ _package() { # remove the firmware rm -r "${pkgdir}/lib/firmware" - # make room for external modules - ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules" - - # add real version for building modules and running depmod from post_install/upgrade - echo "${_kernver}" | - install -Dm644 /dev/stdin "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version" - - # Now we call depmod... + # now we call depmod... depmod -b "${pkgdir}" -F System.map "${_kernver}" + # add vmlinux + install -Dt "${pkgdir}/lib/modules/${_kernver}/build" -m644 vmlinux + # move module tree /lib -> /usr/lib mv -t "${pkgdir}/usr" "${pkgdir}/lib" - # add vmlinux - install -Dm644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux" + # sed expression for following substitutions + local _subst=" + s|%PKGBASE%|${pkgbase}|g + s|%KERNVER%|${_kernver}|g + s|%EXTRAMODULES%|${_extramodules}|g + " + + # hack to allow specifying an initially nonexisting install file + 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" + + # 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" } _package-headers() { diff --git a/linux.install b/linux.install index 0462775..37ba374 100644 --- a/linux.install +++ b/linux.install @@ -1,27 +1,10 @@ -post_install () { - # updating module dependencies - echo ">>> Updating module dependencies. Please wait ..." - depmod %KERNVER% -} - post_upgrade() { if findmnt --fstab -uno SOURCE /boot &>/dev/null && ! mountpoint -q /boot; then echo "WARNING: /boot appears to be a separate partition but is not mounted." fi - - # updating module dependencies - echo ">>> Updating module dependencies. Please wait ..." - depmod %KERNVER% - - if [ $(vercmp $2 3.13) -lt 0 ]; then - echo ">>> WARNING: AT keyboard support is no longer built into the kernel." - echo ">>> In order to use your keyboard during early init, you MUST" - echo ">>> include the 'keyboard' hook in your mkinitcpio.conf." - fi } post_remove() { - # also remove the compat symlinks rm -f boot/initramfs-%PKGBASE%.img rm -f boot/initramfs-%PKGBASE%-fallback.img }