%define coreplversion 6.0.9 %define tarballplversion 6.0.9 %define __spec_install_post /usr/lib/rpm/brp-compress || : %define debug_package %{nil} %undefine _disable_source_fetch %ifarch i686 %define pkgarch i686 %endif %ifarch x86_64 %define pkgarch x86_64 %endif %define releasever 1000%{?dist} Name: kernel-svscoyote Summary: Skylake and Zen3 optimized kernel for Sonoran Video Systems playback servers. Version: %{coreplversion} Release: %{releasever} License: GPL Group: System Environment/Kernel Vendor: The Linux Community URL: http://www.kernel.org Source0: http://cdn.kernel.org/pub/linux/kernel/v6.x/linux-%{tarballplversion}.tar.xz Source1: https://universe2.us/collector/svscoyote.kconfig Patch1: https://universe2.us/collector/uarches.patch Provides: kernel = %{version} Provides: kernel-core = %{version} Provides: kernel-modules = %{version} Provides: kernel-modules-extra = %{version} # Obsoletes: kernel-core kernel-modules kernel-modules-extra kernel ExclusiveArch: i686 x86_64 Requires(pre): coreutils, systemd >= 203-2, /usr/bin/kernel-install, dracut >= 027 Requires(pre): /usr/bin/echo BuildRequires: kmod, patch, bash, tar, git, sed, clang, lld BuildRequires: bzip2, xz, findutils, gzip, m4, perl-interpreter, perl-Carp, perl-devel, perl-generators, make, diffutils, gawk BuildRequires: binutils, redhat-rpm-config, hmaccalc, bison, flex BuildRequires: net-tools, hostname, bc, elfutils-devel, wget, sparse, rpm-build, elfutils, openssl, openssl-devel, rsync %description The Linux Kernel, the operating system core itself %package headers Summary: Header files for the Linux kernel for use by glibc Group: Development/System # Obsoletes: kernel-headers Provides: kernel-headers = %{version} Requires: kernel-svscoyote = %{version} %description headers Kernel-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the glibc package. %package cross-headers Summary: Header files for the Linux kernel for use by cross-glibc Group: Development/System # Obsoletes: kernel-cross-headers Provides: kernel-cross-headers = %{version} Requires: kernel-svscoyote = %{version} %description cross-headers Kernel-cross-headers includes the C header files that specify the interface between the Linux kernel and userspace libraries and programs. The header files define structures and constants that are needed for building most standard programs and are also needed for rebuilding the cross-glibc package. %package devel Summary: Development package for building kernel modules to match the %{version} kernel Group: System Environment/Kernel AutoReqProv: no Requires: kernel-svscoyote = %{version} Provides: kernel-devel = %{version} # Obsoletes: kernel-devel %description devel This package provides kernel headers and makefiles sufficient to build modules against the %{version} kernel package. %prep %setup -q -n linux-%{tarballplversion} %patch1 -p1 cp %{SOURCE1} .config sed -e "s/_svscoyote/-%{releasever}.%{pkgarch}/" -i .config %build make %{!?nkjobs:%{?_smp_mflags}} %{?nkjobs} LLVM=1 LLVM_IAS=1 EXTRA_CFLAGS="-Wno-error -O3 -mtune=znver3" KCFLAGS+="-Wno-error -O3 -mtune=znver3" %install KBUILD_IMAGE=$(make image_name) mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib/modules INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{?_smp_mflags} KBUILD_SRC= mod-fw= modules_install install -m 0755 $KBUILD_IMAGE $RPM_BUILD_ROOT/boot/vmlinuz-%{version}-%{releasever}.%{pkgarch} #Machine specific headers make %{?_smp_mflags} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr KBUILD_SRC= headers_install find $RPM_BUILD_ROOT/usr/include \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f #Cross headers, for each non-x86_64 architecture for arch in arm arm64 powerpc s390; do make %{?_smp_mflags} ARCH=$arch INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr/${arch}-linux-gnu/ KBUILD_HEADERS=install headers_install find $RPM_BUILD_ROOT/usr/${arch}-linux-gnu/include \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f done cp System.map $RPM_BUILD_ROOT/boot/System.map-%{version}-%{releasever}.%{pkgarch} cp .config $RPM_BUILD_ROOT/boot/config-%{version}-%{releasever}.%{pkgarch} rm -f $RPM_BUILD_ROOT/lib/modules/%{version}-%{releasever}.%{pkgarch}/build rm -f $RPM_BUILD_ROOT/lib/modules/%{version}-%{releasever}.%{pkgarch}/source mkdir -p $RPM_BUILD_ROOT/usr/src/kernels/%{version}-%{releasever}.%{pkgarch} EXCLUDES=" --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d" tar $EXCLUDES -cf- . | (cd $RPM_BUILD_ROOT/usr/src/kernels/%{version}-%{releasever}.%{pkgarch};tar xvf -) cd $RPM_BUILD_ROOT/lib/modules/%{version}-%{releasever}.%{pkgarch} ln -sf /usr/src/kernels/%{version}-%{releasever}.%{pkgarch} build ln -sf /usr/src/kernels/%{version}-%{releasever}.%{pkgarch} source %clean rm -rf $RPM_BUILD_ROOT %pre if [ -d /lib/modules/%{version}-%{releasever}.%{pkgarch} ]; then umount -l /lib/modules/%{version}-%{releasever}.%{pkgarch} || true fi %posttrans if [ -x /usr/bin/kernel-install ]; then #new-kernel-pkg --install %{version}-%{releasever}.%{pkgarch} --mkinitrd --dracut --depmod --initrdfile=/boot/initramfs-%{version}-%{releasever}.%{pkgarch}.img kernel-install add %{version}-%{releasever}.%{pkgarch} /boot/vmlinuz-%{version}-%{releasever}.%{pkgarch} fi if ! test -f /boot/initramfs-%{version}-%{releasever}.%{pkgarch}.img; then #Bug in Fedora 30 with kernel initramfs generation dracut --kver %{version}-%{releasever}.%{pkgarch} fi if [ -f /etc/svscoyote.mksymlinks ]; then ln -sf /boot/vmlinuz-%{version}-%{releasever}.%{pkgarch} /boot/vmlinuz-pl.%{pkgarch} ln -sf /boot/initramfs-%{version}-%{releasever}.%{pkgarch}.img /boot/initramfs-pl.%{pkgarch}.img fi if [ -f /etc/svscoyote.easyefi ]; then /bin/cp /boot/vmlinuz-%{version}-%{releasever}.%{pkgarch} /boot/efi/vmlinuz /bin/cp /boot/initramfs-%{version}-%{releasever}.%{pkgarch}.img /boot/efi/initramfs.img fi %preun # Backup modules so we don't need to keep an outdated kernel installed and can remove the previous version. if [ `uname -r` = %{version}-%{releasever}.%{pkgarch} ]; then mkdir -p /tmp/modules-%{version}-%{releasever}.%{pkgarch} cp -a /lib/modules/%{version}-%{releasever}.%{pkgarch}/* /tmp/modules-%{version}-%{releasever}.%{pkgarch} fi if [ -x /usr/bin/kernel-install ]; then #new-kernel-pkg --remove %{version}-%{releasever}.%{pkgarch} --rminitrd --initrdfile=/boot/initramfs-%{version}-%{releasever}.%{pkgarch}.img kernel-install remove %{version}-%{releasever}.%{pkgarch} /boot/vmlinuz-%{version}-%{releasever}.%{pkgarch} fi %postun if [ -x /sbin/update-bootloader ]; then /sbin/update-bootloader --remove %{version}-%{releasever}.%{pkgarch} fi # Restore the modules into a tmpfs after we remove the package, until reboot. if [ `uname -r` = %{version}-%{releasever}.%{pkgarch} ]; then mkdir -p /lib/modules/%{version}-%{releasever}.%{pkgarch} mount -t tmpfs tmpfs /lib/modules/%{version}-%{releasever}.%{pkgarch} -o mode=0755 mv /tmp/modules-%{version}-%{releasever}.%{pkgarch}/* /lib/modules/%{version}-%{releasever}.%{pkgarch}/ rmdir /tmp/modules-%{version}-%{releasever}.%{pkgarch} restorecon -R /lib/modules/%{version}-%{releasever}.%{pkgarch} fi %files %defattr (-, root, root) /lib/modules/%{version}-%{releasever}.%{pkgarch} %exclude /lib/modules/%{version}-%{releasever}.%{pkgarch}/build %exclude /lib/modules/%{version}-%{releasever}.%{pkgarch}/source /boot/* %files headers %defattr (-, root, root) %{_includedir} %files cross-headers %defattr (-, root, root) /usr/*-linux-gnu/include/* %files devel %defattr (-, root, root) /usr/src/kernels/%{version}-%{releasever}.%{pkgarch} /lib/modules/%{version}-%{releasever}.%{pkgarch}/build /lib/modules/%{version}-%{releasever}.%{pkgarch}/source