# Compiling Time: 46.76 SBU # Maintainer: James Buren # Contributor: Miklos Vajna ### NOTE: check btrfs-progs to match the kernel Finclude kernel ## DO NOT enable CONFIG_SP5100_TCO until ## https://bugzilla.kernel.org/show_bug.cgi?id=114201 is *really* resolved ## it kills lots AMD based systems off url="https://www.kernel.org" depends=('kmod' 'sed') [[ -z "$_F_kernel_name" ]] && makedepends+=('unifdef') groups=('base') archs=('i686' 'x86_64') options+=('nodocs' 'genscriptlet') _F_archive_grepv="rc" up2date="Flasttar $url" _F_kernel_patches=('fix-i915.patch' \ 'http://algo.ing.unimo.it/people/paolo/disk_sched/patches/4.7.0-v8r2/0001-block-cgroups-kconfig-build-bits-for-BFQ-v7r11-4.7.0.patch' \ 'http://algo.ing.unimo.it/people/paolo/disk_sched/patches/4.7.0-v8r2/0002-block-introduce-the-BFQ-v7r11-I-O-sched-for-4.7.0.patch' \ 'http://algo.ing.unimo.it/people/paolo/disk_sched/patches/4.7.0-v8r2/0003-block-bfq-add-Early-Queue-Merge-EQM-to-BFQ-v7r11-for.patch' \ 'http://algo.ing.unimo.it/people/paolo/disk_sched/patches/4.7.0-v8r2/0004-block-bfq-turn-BFQ-v7r11-for-4.7.0-into-BFQ-v8r2-for.patch' ) for ppatch in "${_F_kernel_patches[@]}" do source+=("$ppatch") signatures+=('') done source+=("https://www.kernel.org/pub/linux/kernel/v4.x/$_F_archive_name-$pkgver.tar.xz" 'config.i686' 'config.x86_64') signatures+=("https://www.kernel.org/pub/linux/kernel/v4.x/$_F_archive_name-$pkgver.tar.sign" '' '') subpkgs=('cpupower') subdescs=('Kernel cpu powersaving tool') subrodepends=("kernel=$_F_kernelver_ver") subdepends=('pciutils') subgroups=('apps-extra') subarchs=('i686 x86_64') subbackup=('etc/sysconfig/cpupower') subconflicts=('cpufrequtils') subprovides=('cpufrequtils') subreplaces=('cpufrequtils') suboptions=('') subinstall=('') source+=("cpupower" "cpupower.sh" "cpupower.service") signatures+=('' '' '') subpkgs+=('x86_energy_perf_policy') subdescs+=('Kernel tool for setting MSR energy policies') subrodepends+=("kernel=$_F_kernelver_ver") subdepends+=('pciutils') subgroups+=('apps-extra') subarchs+=('i686 x86_64') subbackup+=('') subconflicts+=('') subprovides+=('') subreplaces+=('') suboptions+=('') subinstall+=('') subpkgs+=('perf') subdescs+=('Kernel performance profiling tool') subrodepends+=("kernel=$_F_kernelver_ver") subdepends+=('elfutils slang binutils>=2.26 xz') subgroups+=('devel-extra') subarchs+=('i686 x86_64') subbackup+=('') subconflicts+=('') subprovides+=('') subreplaces+=('') suboptions+=('') subinstall+=('') subpkgs+=("kernel$_F_kernel_name-docs") subdescs+=("Linux kernel documentation") subrodepends+=("kernel=$_F_kernelver_ver") subdepends+=('') subgroups+=('devel-extra') subarchs+=('i686 x86_64') subbackup+=('') subconflicts+=('') subprovides+=('') subreplaces+=('') suboptions+=('') subinstall+=('') subpkgs+=("kernel$_F_kernel_name-source") subrodepends+=("make gcc>=5.4.0-2 kernel-headers") subdescs+=('Linux kernel source') subgroups+=('devel-extra') subdepends+=('') subreplaces+=('') subprovides+=('') subconflicts+=('') subarchs+=('i686 x86_64') subbackup+=('') subinstall+=('') suboptions+=('nodocs') if [ -z "$_F_kernel_name" ]; then subpkgs+=('kernel-headers') subrodepends+=('') subgroups+=('devel devel-core') subdescs+=('Linux kernel include files') subarchs+=('i686 x86_64') subbackup+=('') subinstall+=('') suboptions+=('') subreplaces+=('') subdepends+=('') subprovides+=('') subconflicts+=('') fi build() { Fcd make clean || Fdie if [ -e "$Fsrcdir/config.$CARCH" ]; then cp $Fsrcdir/config.$CARCH .config || Fdie else Fmessage "Cannot find a valid config.." exit 1 fi # not using Fpatchall here since not applying the patches from # _F_kernel_patches() having the wrong extension would be stange :) local i for i in "${_F_kernel_patches[@]}" do Fpatch `strip_url $i` done if [ -z "$_F_kernel_name" -a $_F_kernel_dontfakeversion -eq 0 ]; then # stock kernel, nobody interested in the buildsystem's detail export KBUILD_BUILD_USER="fst" export KBUILD_BUILD_HOST="`uname -m`.frugalware.org" fi # remove unneded localversions rm -fv localversion-* rm -fv ../*.{gz,bz2,sign} yes "" | make config if [ $_F_kernel_dontfakeversion -eq 0 ]; then if [ "${_F_kernel_ver#*.*.}" = "$_F_kernel_ver" ]; then # If patten match fails, sublevel version is missing Fsed "SUBLEVEL =.*" "SUBLEVEL =" Makefile else Fsed "SUBLEVEL =.*" "SUBLEVEL = ${_F_kernel_ver#*.*.}" Makefile fi Fsed "EXTRAVERSION =.*" "EXTRAVERSION = $_F_kernel_uname" Makefile else make include/config/kernel.release unset _F_kernel_ver _F_kernel_uname=$(cat include/config/kernel.release) fi # Force kernel firmware to be installed in kernel specific path. Fsed 'INSTALL_FW_PATH=.*' 'INSTALL_FW_PATH=$(INSTALL_MOD_PATH)/lib/firmware/$(KERNELRELEASE)' Makefile ## let we do kernel$_F_kernel_name-source before make Fmkdir /usr/src cp -Ra $Fsrcdir/linux-$_F_kernelver_ver $Fdestdir/usr/src/linux-$_F_kernel_ver$_F_kernel_uname || Fdie rm -rfv $Fdestdir/usr/src/linux-$_F_kernel_ver$_F_kernel_uname/{.git,.gitignore,.config.old,Documentation,COPYING,CREDITS,MAINTAINERS,README,REPORTING-BUGS} || Fdie Fln linux-$_F_kernel_ver$_F_kernel_uname /usr/src/linux make -C $Fdestdir/usr/src/linux-$_F_kernel_ver$_F_kernel_uname scripts || Fdie make -C $Fdestdir/usr/src/linux-$_F_kernel_ver$_F_kernel_uname prepare || Fdie Fsplit kernel$_F_kernel_name-source usr/src ## now the kernel$_F_kernel_name-docs Fmkdir /usr/src/linux-$_F_kernel_ver$_F_kernel_uname cp -Ra $Fsrcdir/linux-$_F_kernelver_ver/{Documentation,COPYING,CREDITS,MAINTAINERS,README,REPORTING-BUGS} \ $Fdestdir/usr/src/linux-$_F_kernel_ver$_F_kernel_uname || Fdie ## do we need to ln /usr/share/doc ?! Fsplit kernel$_F_kernel_name-docs usr/src if [ -z "$_F_kernel_name" ]; then make INSTALL_HDR_PATH=$Fdestdir/usr headers_install || Fdie [ -e $Fdestdir/usr/include/scsi ] && Frm /usr/include/scsi [ -e $Fdestdir/usr/include/drm ] && Frm /usr/include/drm Fsplit kernel-headers /usr fi ## now time to eat some cookies and wait the kernel got compiled :) ## use verbose by default, we want to know what is going on... make $MAKEFLAGS V=1 || Fdie Fmkdir /boot Fmkdir /lib/{modules,firmware} Ffilerel .config /boot/config-$_F_kernel_ver$_F_kernel_uname if [ ! -z "$_F_kernel_vmlinuz" ]; then Ffilerel $_F_kernel_vmlinuz /boot/$_F_kernel_path-$_F_kernel_ver$_F_kernel_uname else Ffilerel arch/x86/boot/bzImage /boot/$_F_kernel_path-$_F_kernel_ver$_F_kernel_uname fi Fln config-$_F_kernel_ver$_F_kernel_uname /boot/config Fln System.map-$_F_kernel_ver$_F_kernel_uname /boot/System.map Fln $_F_kernel_path-$_F_kernel_ver$_F_kernel_uname /boot/$_F_kernel_path make INSTALL_MOD_PATH=$Fdestdir $MAKEFLAGS modules_install || Fdie # dump symol versions so that later builds will have dependencies and # modversions Ffilerel System.map /boot/System.map-$_F_kernel_ver$_F_kernel_uname Ffilerel /usr/src/linux-$_F_kernel_ver$_F_kernel_uname/Module.symvers Frm /lib/modules/$_F_kernel_ver$_F_kernel_uname/build Frm /lib/modules/$_F_kernel_ver$_F_kernel_uname/source Fln /usr/src/linux-$_F_kernel_ver$_F_kernel_uname /lib/modules/$_F_kernel_ver$_F_kernel_uname/build Fln /usr/src/linux-$_F_kernel_ver$_F_kernel_uname /lib/modules/$_F_kernel_ver$_F_kernel_uname/source Fexec /sbin/depmod -a -b $Fdestdir $_F_kernel_ver$_F_kernel_uname || Fdie # remove duplicate firmware files Frm "lib/firmware/$(KERNELRELEASE)" # build cpupower cd tools/power/cpupower Fexec make clean || Fdie Fsed '$(OPTIMIZATION) -fomit-frame-pointer' "$CFLAGS" Makefile make DEBUG=false CPUFREQ_BENCH=false || Fdie make DESTDIR="$Fdestdir" CPUFREQ_BENCH=false install || Fdie Fmv /usr/man /usr/share Ffile /etc/sysconfig/cpupower Fexe /usr/sbin/cpupower.sh Ffile /lib/systemd/system/cpupower.service Fsplit cpupower etc/ Fsplit cpupower lib/systemd Fsplit cpupower usr/bin/ Fsplit cpupower usr/include/ Fsplit cpupower usr/lib/ Fsplit cpupower usr/sbin/ Fsplit cpupower usr/share/ # build x86_energy_perf_policy cd ../x86/x86_energy_perf_policy make clean || Fdie Fsed '$(OPTIMIZATION) -fomit-frame-pointer' "$CFLAGS" Makefile make || Fdie Fmkdir usr/bin usr/share/man/man8 make DESTDIR="$Fdestdir" install || Fdie Fsplit x86_energy_perf_policy usr/bin/ Fsplit x86_energy_perf_policy usr/share/ # build perf cd ../../../perf Fsed "-O6" "$CFLAGS" config/Makefile Fsed "lib64" "lib" config/Makefile Fexec make \ WERROR=0 \ DESTDIR="$Fdestdir/usr" \ NO_GTK2=1 \ NO_LIBAUDIT=1 \ NO_LIBNUMA=1 \ NO_LIBUNWIND=1 \ PERF_VERSION="$pkgver-$pkgrel" \ install || Fdie Fmv /usr/etc/bash_completion.d /etc/ Frm /usr/etc Fsplit perf etc/ Fsplit perf usr/bin/ Fsplit perf usr/lib/ Fsplit perf usr/libexec/ Fsplit perf usr/share/ } # optimization OK