diff options
-rw-r--r-- | .SRCINFO | 52 | ||||
-rw-r--r-- | 60-linux.hook | 12 | ||||
-rw-r--r-- | 90-linux.hook | 11 | ||||
-rw-r--r-- | 99-linux.hook | 9 | ||||
-rw-r--r-- | PKGBUILD | 352 | ||||
-rw-r--r-- | linux.install | 5 | ||||
-rw-r--r-- | linux.preset | 14 |
7 files changed, 455 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..8914531b5ad6 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = linux-clear-lts2018 + pkgver = 4.19.35 + pkgrel = 1 + url = https://github.com/clearlinux-pkgs/linux-clear-lts2018 + arch = x86_64 + license = GPL2 + makedepends = bc + makedepends = git + makedepends = inetutils + makedepends = kmod + makedepends = libelf + makedepends = linux-firmware + makedepends = xmlto + options = !strip + source = https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.tar.xz + source = https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.tar.sign + source = https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-4.19.35.xz + source = linux-clear-lts2018::git+https://github.com/clearlinux-pkgs/linux-lts2018.git#tag=4.19.35-22 + source = intel-ucode-20190312.tar.gz::https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-20190312.tar.gz + source = enable_additional_cpu_optimizations-20180509.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/20180509.tar.gz + source = 60-linux.hook + source = 90-linux.hook + source = 99-linux.hook + source = linux.preset + validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 + validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E + sha256sums = 0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1 + sha256sums = SKIP + sha256sums = 5124dcab41a075ffc2e9c9197e8caca04aeaaf4ad572d77a84308ac9aee8ba84 + sha256sums = SKIP + sha256sums = 2a4438a66ed1a9b82be943d6d19366c006787ba5af302f425674ca6d8c928099 + sha256sums = 226e30068ea0fecdb22f337391385701996bfbdba37cdcf0f1dbf55f1080542d + sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21 + sha256sums = c043f3033bb781e2688794a59f6d1f7ed49ef9b13eb77ff9a425df33a244a636 + sha256sums = ed9d35cb7d7bd829ff6253353efa5e2d119820fe4f4310aea536671f5e4caa37 + sha256sums = ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65 + +pkgname = linux-clear-lts2018 + pkgdesc = Clearlinux lts2018 kernel and modules + install = linux.install + depends = coreutils + depends = linux-firmware + depends = kmod + depends = mkinitcpio>=0.7 + optdepends = crda: to set the correct wireless channels of your country + optdepends = modprobed-db: Keeps track of EVERY kernel module that has ever been probed - useful for those of us who make localmodconfig + provides = WIREGUARD-MODULE + backup = etc/mkinitcpio.d/linux-clear-lts2018.preset + +pkgname = linux-clear-lts2018-headers + pkgdesc = Header files and scripts for building modules for linux-clear-lts2018 + diff --git a/60-linux.hook b/60-linux.hook new file mode 100644 index 000000000000..b33873c854fb --- /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 new file mode 100644 index 000000000000..fca45abe1a62 --- /dev/null +++ b/90-linux.hook @@ -0,0 +1,11 @@ +[Trigger] +Type = File +Operation = Install +Operation = Upgrade +Target = usr/lib/modules/%KERNVER%/vmlinuz +Target = usr/lib/initcpio/* + +[Action] +Description = Updating %PKGBASE% initcpios... +When = PostTransaction +Exec = /usr/bin/mkinitcpio -p %PKGBASE% diff --git a/99-linux.hook b/99-linux.hook new file mode 100644 index 000000000000..416cb9424d0d --- /dev/null +++ b/99-linux.hook @@ -0,0 +1,9 @@ +[Trigger] +Type = File +Operation = Remove +Target = boot/vmlinuz-%PKGBASE% + +[Action] +Description = Remove %PKGBASE% initramfs files... +When = PreTransaction +Exec = /usr/bin/rm -f /boot/initramfs-%PKGBASE%.img /boot/initramfs-%PKGBASE%-fallback.img diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..c11fc30f4b58 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,352 @@ +# Maintainer: Josip Ponjavic <josipponjavic at gmail dot com> +# Contributor: + +### BUILD OPTIONS +# Set these variables to ANYTHING that is not null to enable them + +# Tweak kernel options prior to a build via nconfig +_makenconfig= + +_enable_gcc_more_v="y" +# Optionally select a sub architecture by number if building in a clean chroot +# Leaving this entry blank will require user interaction during the build +# which will cause a failure to build if using makechrootpkg. Note that the +# generic (default) option is 26. +# +# Note - the march=native option is unavailable by this method, use the nconfig +# and manually select it. +# +# 1. AMD Opteron/Athlon64/Hammer/K8 (MK8) +# 2. AMD Opteron/Athlon64/Hammer/K8 with SSE3 (MK8SSE3) +# 3. AMD 61xx/7x50/PhenomX3/X4/II/K10 (MK10) +# 4. AMD Barcelona (MBARCELONA) +# 5. AMD Bobcat (MBOBCAT) +# 6. AMD Jaguar (MJAGUAR) +# 7. AMD Bulldozer (MBULLDOZER) +# 8. AMD Piledriver (MPILEDRIVER) +# 9. AMD Steamroller (MSTEAMROLLER) +# 10. AMD Excavator (MEXCAVATOR) +# 11. AMD Zen (MZEN) +# 12. Intel P4 / older Netburst based Xeon (MPSC) +# 13. Intel Atom (MATOM) +# 14. Intel Core 2 (MCORE2) +# 15. Intel Nehalem (MNEHALEM) +# 16. Intel Westmere (MWESTMERE) +# 17. Intel Silvermont (MSILVERMONT) +# 18. Intel Sandy Bridge (MSANDYBRIDGE) +# 19. Intel Ivy Bridge (MIVYBRIDGE) +# 20. Intel Haswell (MHASWELL) +# 21. Intel Broadwell (MBROADWELL) +# 22. Intel Skylake (MSKYLAKE) +# 23. Intel Skylake X (MSKYLAKEX) +# 24. Intel Cannon Lake (MCANNONLAKE) +# 25. Intel Ice Lake (MICELAKE) +# 26. Generic-x86-64 (GENERIC_CPU) +_subarch= + +# Compile ONLY probed modules +# Build in only the modules that you currently have probed in your system VASTLY +# reducing the number of modules built and the build time. +# +# WARNING - ALL modules must be probed BEFORE you begin making the pkg! +# +# To keep track of which modules are needed for your specific system/hardware, +# give module_db script a try: https://aur.archlinux.org/packages/modprobed-db +# This PKGBUILD will call it directly to probe all the modules you have logged! +# +# More at this wiki page ---> https://wiki.archlinux.org/index.php/Modprobed-db +_localmodcfg= + +# If you have laptop with optimus and it hangs on boot one solution might be +# to set acpi_rev_override. Yet for this to happen kernel should be compiled +# with `CONFIG_ACPI_REV_OVERRIDE_POSSIBLE`. Set next variable to `y` to enable. +_rev_override="n" + +### IMPORTANT: Do no edit below this line unless you know what you're doing + +_major=4.19 +_minor=35 +_srcname=linux-${_major} +_clr=${_major}.35-22 +pkgbase=linux-clear-lts2018 +pkgver=${_major}.${_minor} +pkgrel=1 +arch=('x86_64') +url="https://github.com/clearlinux-pkgs/linux-clear-lts2018" +license=('GPL2') +makedepends=('bc' 'git' 'inetutils' 'kmod' 'libelf' 'linux-firmware' 'xmlto') +options=('!strip') +_ucode='20190312' +_gcc_more_v='20180509' +source=( + "https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-${_major}.tar".{xz,sign} + "https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-${pkgver}.xz" + "${pkgbase}::git+https://github.com/clearlinux-pkgs/linux-lts2018.git#tag=${_clr}" + "intel-ucode-${_ucode}.tar.gz::https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${_ucode}.tar.gz" + "enable_additional_cpu_optimizations-$_gcc_more_v.tar.gz::https://github.com/graysky2/kernel_gcc_patch/archive/$_gcc_more_v.tar.gz" + '60-linux.hook' # pacman hook for depmod + '90-linux.hook' # pacman hook for initramfs regeneration + '99-linux.hook' # pacman hook for remove initramfs + 'linux.preset' # standard config files for mkinitcpio ramdisk +) + +_kernelname=${pkgbase#linux} +: ${_kernelname:=-clear-lts2018} + +prepare() { + cd ${_srcname} + + ### Add upstream patches + msg2 "Add upstream patches" + patch -Np1 -i ../patch-${pkgver} + + ### Setting version + msg2 "Setting version..." + scripts/setlocalversion --save-scmversion + echo "-$pkgrel" > localversion.10-pkgrel + echo "$_kernelname" > localversion.20-pkgname + + ### Add Clearlinux patches + for i in $(grep '^Patch' ${srcdir}/${pkgbase}/linux-lts2018.spec | grep -Ev '^Patch0126' | sed -n 's/.*: //p'); do + msg2 "Applying patch ${i}..." + patch -Np1 -i "$srcdir/${pkgbase}/${i}" + done + + ### Setting config + msg2 "Setting config..." + cp -Tf $srcdir/${pkgbase}/config ./.config + + ### Compress modules + msg2 "Enabling XZ compressed modules..." + sed -i 's|^# CONFIG_MODULE_COMPRESS|\ +CONFIG_MODULE_COMPRESS=y\ +# CONFIG_MODULE_COMPRESS_GZIP is not set\ +CONFIG_MODULE_COMPRESS_XZ=y|' ./.config + + ### Set ACPI_REV_OVERRIDE_POSSIBLE to prevent optimus lockup + if [ "${_rev_override}" = "y" ]; then + msg2 "Enabling ACPI Rev Override Possible..." + sed -i "s|# CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set|CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y|g" ./.config + fi + + make olddefconfig + + ### Copying i915 firmware and intel-ucode + msg2 "Copying i915 firmware and intel-ucode-${_ucode}..." + cp -a /usr/lib/firmware/i915 firmware/ + cp -a ${srcdir}/Intel-Linux-Processor-Microcode-Data-Files-microcode-${_ucode}/intel-ucode firmware/ + cp ${srcdir}/Intel-Linux-Processor-Microcode-Data-Files-microcode-${_ucode}/intel-ucode-with-caveats/06* firmware/intel-ucode/ + rm -f firmware/intel-ucode/0f* + + ### Patch source to unlock additional gcc CPU optimizations + # https://github.com/graysky2/kernel_gcc_patch + if [ "${_enable_gcc_more_v}" = "y" ]; then + msg2 "Enabling additional gcc CPU optimizations..." + patch -Np1 -i "$srcdir/kernel_gcc_patch-$_gcc_more_v/enable_additional_cpu_optimizations_for_gcc_v8.1+_kernel_v4.13+.patch" + fi + + ### Get kernel version + if [ "${_enable_gcc_more_v}" = "y" ] || [ -n "${_subarch}" ]; then + yes "$_subarch" | make oldconfig + else + make prepare + fi + + ### Prepared version + make -s kernelrelease > ../version + msg2 "Prepared %s version %s" "$pkgbase" "$(<../version)" + + ### Optionally load needed modules for the make localmodconfig + # See https://aur.archlinux.org/packages/modprobed-db + if [ -n "$_localmodcfg" ]; then + msg2 "If you have modprobed-db installed, running it in recall mode now" + if [ -e /usr/bin/modprobed-db ]; then + [[ -x /usr/bin/sudo ]] || { + echo "Cannot call modprobe with sudo. Install sudo and configure it to work with this user." + exit 1; } + sudo /usr/bin/modprobed-db recall + make localmodconfig + fi + fi + + ### do not run `make olddefconfig` as it sets default options + yes "" | make config >/dev/null + + ### Running make nconfig + + [[ -z "$_makenconfig" ]] || make nconfig + + ### Save configuration for later reuse + + cp -Tf ./.config "${startdir}/config-${pkgver}-${pkgrel}${_kernelname}" +} + +build() { + cd ${_srcname} + + make bzImage modules +} + +_package() { + pkgdesc="Clearlinux lts2018 kernel and modules" + depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7') + optdepends=('crda: to set the correct wireless channels of your country' 'modprobed-db: Keeps track of EVERY kernel module that has ever been probed - useful for those of us who make localmodconfig') + provides=('WIREGUARD-MODULE') + backup=("etc/mkinitcpio.d/${pkgbase}.preset") + install=linux.install + + local kernver="$(<version)" + local modulesdir="$pkgdir/usr/lib/modules/$kernver" + + cd ${_srcname} + + msg2 "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" + install -Dm644 "$modulesdir/vmlinuz" "$pkgdir/boot/vmlinuz-$pkgbase" + + msg2 "Installing modules..." + make INSTALL_MOD_PATH="$pkgdir/usr" modules_install + + # a place for external modules, + # with version file for building modules and running depmod from hook + local extramodules="extramodules$_kernelname" + local extradir="$pkgdir/usr/lib/modules/$extramodules" + install -Dt "$extradir" -m644 ../version + ln -sr "$extradir" "$modulesdir/extramodules" + + # remove build and source links + rm "$modulesdir"/{source,build} + + msg2 "Installing hooks..." + + # 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 + + # 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" + sed "$subst" ../99-linux.hook | install -Dm644 /dev/stdin \ + "$pkgdir/usr/share/libalpm/hooks/99-${pkgbase}.hook" + + msg2 "Fixing permissions..." + chmod -Rc u=rwX,go=rX "$pkgdir" +} + +_package-headers() { + pkgdesc="Header files and scripts for building modules for linux-clear-lts2018" + + local builddir="$pkgdir/usr/lib/modules/$(<version)/build" + + cd ${_srcname} + + msg2 "Installing build files..." + install -Dt "$builddir" -m644 Makefile .config Module.symvers System.map 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} + + # ??? + mkdir "$builddir/.tmp_versions" + + msg2 "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 + + msg2 "Installing KConfig files..." + find . -name 'Kconfig*' -exec install -Dm644 {} "$builddir/{}" \; + + msg2 "Removing unneeded architectures..." + local arch + for arch in "$builddir"/arch/*/; do + [[ $arch = */x86/ ]] && continue + echo "Removing $(basename "$arch")" + rm -r "$arch" + done + + msg2 "Removing documentation..." + rm -r "$builddir/Documentation" + + msg2 "Removing broken symlinks..." + find -L "$builddir" -type l -printf 'Removing %P\n' -delete + + msg2 "Removing loose objects..." + find "$builddir" -type f -name '*.o' -printf 'Removing %P\n' -delete + + msg2 "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) + + msg2 "Adding symlink..." + mkdir -p "$pkgdir/usr/src" + ln -sr "$builddir" "$pkgdir/usr/src/$pkgbase-$pkgver" + + msg2 "Fixing permissions..." + chmod -Rc u=rwX,go=rX "$pkgdir" +} + +pkgname=("$pkgbase" "$pkgbase-headers") +for _p in "${pkgname[@]}"; do + eval "package_$_p() { + $(declare -f "_package${_p#$pkgbase}") + _package${_p#$pkgbase} + }" +done + +sha256sums=('0c68f5655528aed4f99dae71a5b259edc93239fa899e2df79c055275c21749a1' + 'SKIP' + '5124dcab41a075ffc2e9c9197e8caca04aeaaf4ad572d77a84308ac9aee8ba84' + 'SKIP' + '2a4438a66ed1a9b82be943d6d19366c006787ba5af302f425674ca6d8c928099' + '226e30068ea0fecdb22f337391385701996bfbdba37cdcf0f1dbf55f1080542d' + 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' + 'c043f3033bb781e2688794a59f6d1f7ed49ef9b13eb77ff9a425df33a244a636' + 'ed9d35cb7d7bd829ff6253353efa5e2d119820fe4f4310aea536671f5e4caa37' + 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65') + +validpgpkeys=( + 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds + '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman +) diff --git a/linux.install b/linux.install new file mode 100644 index 000000000000..bb2f675cbb05 --- /dev/null +++ b/linux.install @@ -0,0 +1,5 @@ +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 +} diff --git a/linux.preset b/linux.preset new file mode 100644 index 000000000000..66709a8c1537 --- /dev/null +++ b/linux.preset @@ -0,0 +1,14 @@ +# mkinitcpio preset file for the '%PKGBASE%' package + +ALL_config="/etc/mkinitcpio.conf" +ALL_kver="/boot/vmlinuz-%PKGBASE%" + +PRESETS=('default' 'fallback') + +#default_config="/etc/mkinitcpio.conf" +default_image="/boot/initramfs-%PKGBASE%.img" +#default_options="" + +#fallback_config="/etc/mkinitcpio.conf" +fallback_image="/boot/initramfs-%PKGBASE%-fallback.img" +fallback_options="-S autodetect" |