summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD770
1 files changed, 770 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..0464a0eed820
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,770 @@
+# Maintainer: Christos Nouskas <nous at archlinux dot us>
+# PKGBUILD assembled from linux-pf and linux-lts
+# Some lines from linux-bfs and linux-ck
+# Credits to respective maintainers
+
+pkgbase=linux-pf-lts
+_major=3
+_minor=14
+_patchlevel=43
+_pfpatchlevel=33
+#_subversion=1
+_basekernel=${_major}.${_minor}
+_srcname=linux-${_basekernel}
+_pfrel=6
+pkgrel=1
+_kernelname=-pf
+_pfpatchhome="http://pf.natalenko.name/sources/${_basekernel}/"
+_pfpatchname="patch-${_basekernel}${_kernelname}${_pfrel}"
+
+### PATCH AND BUILD OPTIONS
+
+_NUMA_off=yes # Disable NUMA in kernel config
+
+# DETAILS FOR _NUMA_off=yes
+# Since 99.9% of users do not have multiple CPUs but do have multiple cores in one CPU
+# see, https://bugs.archlinux.org/task/31187
+
+# Set to 'y' to enable AUFS
+_AUFS=n
+
+####
+_CPUSUFFIXES_KBUILD=(CORE2 K7 K8 K10 BARCELONA BOBCAT BULLDOZER PILEDRIVER PSC ATOM PENTIUMII PENTIUMIII PENTIUMM PENTIUM4 COREI7 COREI7AVX COREAVXI COREAVX2)
+_CPUSUFFIXES=(core2 k7 k8 k10 barcelona bobcat bulldozer piledriver psc atom p2 p3 pm p4 nehalem sandybridge ivybridge haswell)
+
+###
+
+pkgname=('linux-pf-lts' 'linux-pf-lts-headers')
+pkgver=${_basekernel}.${_patchlevel}
+arch=('i686' 'x86_64')
+url="http://pf.natalenko.name/"
+license=('GPL2')
+makedepends=('git' 'xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
+options=('!strip')
+# That voodoo that you do
+_incr=($(for i in $(seq -w ${_pfpatchlevel} $((_patchlevel-1)) ); do echo https://www.kernel.org/pub/linux/kernel/v3.x/incr/patch-3.14.$i-$((i+1)).xz; done))
+source=(https://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.{xz,sign}
+ # the main kernel config files
+ 'config' 'config.x86_64'
+ # standard config files for mkinitcpio ramdisk
+ "$pkgbase.preset"
+ 'change-default-console-loglevel.patch'
+ '0001-Bluetooth-allocate-static-minor-for-vhci.patch'
+ '0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch'
+ '0003-module-remove-MODULE_GENERIC_TABLE.patch'
+ '0006-genksyms-fix-typeof-handling.patch'
+ 'logo_linux_clut224.ppm.bz2' #\
+ 'logo_linux_mono.pbm.bz2' #-> the Arch Linux boot logos
+ 'logo_linux_vga16.ppm.bz2' #/
+ "${_pfpatchhome}${_pfpatchname}.xz" # the -pf patchset
+ ${_incr[@]} # the incremental kernel patches
+ )
+
+_aufs3git="http://git.code.sf.net/p/aufs/aufs3-standalone"
+_aufs3name=aufs3-standalone
+
+_kernelname=${pkgbase#linux}
+# '
+
+prepare() {
+ cd "${srcdir}/linux-${_basekernel}"
+
+
+ # This is for me, to test the PKGBUILD
+
+ # Arch linux logo
+ msg "Replacing penguins with arches"
+ bzip2 -dk ${startdir}/logo_linux_*.bz2
+ mv -f ${startdir}/logo_linux_*.p?m drivers/video/logo/
+
+ msg "Applying pf-kernel patch"
+ patch -Np1 < ${srcdir}/${_pfpatchname}
+
+ if [[ ${_AUFS} = 'y' ]]; then
+ msg "Fetching and applying aufs3 patches"
+ git clone ${_aufs3git} ${_aufs3name}
+ cd ${_aufs3name}
+ git checkout origin/aufs${_basekernel} || _aufs3checkout=KRAKRA
+ if [[ ${_aufs3checkout} = "KRAKRA" ]]; then
+ echo
+ msg "AUFS3 not yet ported to version ${_basekernel}!"
+ msg "Skipping related patches."
+ echo
+ cd ..
+ else
+# mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include"
+# mv include/linux/Kbuild "${pkgdir}/usr/src/linux-${_kernver}/include/"
+ rm include/uapi/linux/Kbuild
+ cd ..
+ cp -a ${_aufs3name}/{Documentation,fs,include} ${srcdir}/linux-${_basekernel}/
+ msg "Patching aufs3"
+ for _patch in ${_aufs3name}/*.patch; do
+ patch -Np1 -i ${_patch} || _aufs3fail=KRAKRA
+ done
+ if [[ ${_aufs3fail} = "KRAKRA" ]]; then
+ echo
+ msg "Not all aufs3 patches applied correctly. Ignore this if you won't use AUFS."
+ msg "Otherwise, press CTRL-C now and fix manually"
+ echo
+ fi
+ fi
+ fi
+
+ # linux-lts patches
+ msg "Applying linux-lts patches"
+
+ # add upstream patch
+ # patch -p1 -i "${srcdir}/patch-${pkgver}"
+
+ # add latest fixes from stable queue, if needed
+ # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
+
+ # set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
+ # remove this when a Kconfig knob is made available by upstream
+ # (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
+ patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
+
+ # Fix vhci warning in kmod (to restore every kernel maintainer's sanity)
+ patch -p1 -i "${srcdir}/0001-Bluetooth-allocate-static-minor-for-vhci.patch"
+
+ # Fix atkbd aliases
+ patch -p1 -i "${srcdir}/0002-module-allow-multiple-calls-to-MODULE_DEVICE_TABLE-p.patch"
+ patch -p1 -i "${srcdir}/0003-module-remove-MODULE_GENERIC_TABLE.patch"
+
+ # Fix generation of symbol CRCs
+ # http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc53324060f324e8af6867f57bf4891c13c6ef18
+ patch -p1 -i "${srcdir}/0006-genksyms-fix-typeof-handling.patch"
+
+ msg "End of linux-lts patches"
+
+ # Incremental patches
+# for _incrpatch in "${srcdir}/patch-${_basekernel}.??-??.xz"; do
+
+ for _incrpatch in "${srcdir}"/patch-${_basekernel}.??-??; do
+ msg "Patching ${_incrpatch} -- Makefile fails are harmless"
+ patch -Np1 -i "${_incrpatch}" || true
+ done
+
+ # added gcc 4.7.1 support for Kconfig and menuconfig
+ #zcat "${srcdir}/kernel-39-gcc48-1.patch.gz" | patch -Np1
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ cat "${srcdir}/config.x86_64" > ./.config
+ else
+ cat "${srcdir}/config" > ./.config
+ fi
+
+# if [ "${_kernelname}" != "" ]; then
+# sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
+# sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
+# fi
+
+ # Set EXTRAVERSION to -pf
+ # sed -i "s/EXTRAVERSION = -${_pfrel}/EXTRAVERSION = ${_kernelname}/" Makefile
+ sed -ri "s/^(EXTRAVERSION =).*/\1 ${_kernelname}/" Makefile
+
+ _arch=$CARCH
+ # don't run depmod on 'make install'. We'll do this ourselves in packaging
+ sed -i '2iexit 0' scripts/depmod.sh
+
+ # If the following is set, stop right there. We only need the headers for
+ # dependent drivers' compiling (nvidia, virtualbox etc)
+
+ # disable NUMA since 99.9% of users do not have multiple CPUs but do have multiple cores in one CPU
+ # see, https://bugs.archlinux.org/task/31187
+ if [ -n "$_NUMA_off" ] && [ "${CARCH}" = "x86_64" ]; then
+ sed -i -e 's/CONFIG_NUMA=y/# CONFIG_NUMA is not set/' \
+ -i -e '/CONFIG_AMD_NUMA=y/d' \
+ -i -e '/CONFIG_X86_64_ACPI_NUMA=y/d' \
+ -i -e '/CONFIG_NODES_SPAN_OTHER_NODES=y/d' \
+ -i -e '/# CONFIG_NUMA_EMU is not set/d' \
+ -i -e '/CONFIG_NODES_SHIFT=6/d' \
+ -i -e '/CONFIG_NEED_MULTIPLE_NODES=y/d' \
+ -i -e '/CONFIG_USE_PERCPU_NUMA_NODE_ID=y/d' \
+ -i -e '/CONFIG_ACPI_NUMA=y/d' ./.config
+ fi
+
+ # get kernel version
+# make prepare
+}
+
+build() {
+ cd "${srcdir}/linux-${_basekernel}"
+ #----------------------------------------
+
+ if [[ "$_BATCH" != "y" ]]; then # for batch building
+ echo
+ echo "======================================================="
+ msg "You might be prompted below for some config options"
+ echo "======================================================="
+ echo
+ msg "Hit <Y> to use your running kernel's config"
+ echo " (needs IKCONFIG and IKCONFIG_PROC)"
+ msg "Hit <L> to run 'make localmodconfig'"
+ msg "Hit <N> (or just <ENTER>) to build an all-inclusive kernel like stock Arch linux-lts"
+ echo " (warning: it can take a looong time)"
+ echo
+ read answer
+ shopt -s nocasematch
+ if [[ "$answer" = "y" ]]; then
+ if [[ -s /proc/config.gz ]]; then
+ msg "Extracting config from /proc/config.gz..."
+ zcat /proc/config.gz >| ./.config
+ else
+ msg "running 'sudo modprobe configs'"
+ sudo modprobe configs
+ if [[ -s /proc/config.gz ]]; then
+ msg "Extracting config from /proc/config.gz..."
+ zcat /proc/config.gz >| ./.config
+ else
+ msg "You kernel was not compiled with IKCONFIG_PROC."
+ msg "Attempting to run /usr/bin/modprobed_db recall from modprobe_db..."
+ if [ -e /usr/bin/modprobed_db ]; then
+ sudo /usr/bin/modprobed_db recall
+ else
+ msg "modprobed_db not installed, running make localmodconfig instead..."
+ make localmodconfig
+ fi
+ fi
+ fi
+ elif [[ "$answer" = "l" ]]; then
+ # Copied from kernel26-ck's PKGBUILD
+ msg "Attempting to run /usr/bin/reload_database with sudo from modprobe_db..."
+ if [ -e /usr/bin/modprobed_db ]; then
+ sudo /usr/bin/modprobed_db recall
+ fi
+ msg "Running 'make localmodconfig'..."
+ make localmodconfig
+ else
+ msg "Using stock Arch linux-lts kernel .config (with BFS, BFQ and TuxOnIce enabled)."
+ fi
+
+ # Make some good use of MAKEFLAGS
+ # MAKEFLAGS=`grep -v '#' /etc/makepkg.conf | grep MAKEFLAGS= | sed s/MAKEFLAGS=// | sed s/\"//g`
+
+ # make prepare
+
+ # Options for additional configuration
+ echo
+ msg "Kernel configuration options before build:"
+ echo " <M> make menuconfig (console menu)"
+ echo " <N> make nconfig (newer alternative to menuconfig)"
+ echo " <G> make gconfig (needs gtk)"
+ echo " <X> make xconfig (needs qt)"
+ echo " <O> make oldconfig"
+ echo " <L> make localyesconfig"
+ echo " <ENTER> to skip configuration and use stock Arch linux-lts defaults"
+ read answer
+ case "$answer" in
+ m) make menuconfig
+ ;;
+ g) make gconfig
+ ;;
+ x) make xconfig
+ ;;
+ n) make nconfig
+ ;;
+ o) make oldconfig
+ ;;
+ l) make localyesconfig
+ ;;
+ default)
+ ;;
+ esac
+ cp -v .config ${startdir}/config.local
+
+ for _cpusuffix_kbuild in ${_CPUSUFFIXES_KBUILD[@]} ; do
+ _egrepstring="${_egrepstring}M${_cpusuffix_kbuild}=y|"
+ done
+
+ CPU=$(egrep "${_egrepstring}CONFIG_GENERIC_CPU=y|M686=y|CONFIG_MNATIVE=y" ./.config)
+ CPU=$(sed -e "s/CONFIG_M\(.*\)=y/\1/" <<<$CPU)
+ CPU=$(sed -e "s/CONFIG_GENERIC_CPU=y/GENERIC/" <<<$CPU)
+ CPU=$(sed -e "s/^686$/GENERIC/" <<<$CPU)
+ cp -f .config ${startdir}/config.$CPU-$CARCH
+
+ # Provide option to rename package according to CPU
+ echo
+ if [[ "$CPU" = "GENERIC" ]]; then
+ msg "Hit <P> : to remove the patchlevel number from kernver"
+ msg " (i.e. linux-pf-lts-${_basekernel})"
+ msg "Hit <ENTER> : to include the patchlevel number in kernver (default)"
+ msg " (i.e. linux-pf-lts-${_basekernel}.${_patchlevel})"
+ read answer
+ shopt -s nocasematch
+ if [[ "$answer" = "p" ]]; then
+ export _SUBLEVEL=n
+ fi
+ else
+ lcpu=$(tr '[:upper:]' '[:lower:]' <<< $CPU)
+ lcpu=$(sed -e "s/entium//" <<<$lcpu)
+ echo "=============================================================="
+ msg "An non-generic CPU was selected for this kernel."
+ echo
+ msg "Hit <G> : to create a generic package named linux-pf-lts"
+ msg "Hit <ENTER> : to create a package named after the selected CPU"
+ msg " (linux-pf-lts-${lcpu} - recommended default)"
+ echo
+ msg "This option affects ONLY the package name. Whether or not the"
+ msg "kernel is optimized was determined at the previous config step."
+ echo "=============================================================="
+ read answer
+ shopt -s nocasematch
+ if [[ "$answer" != "g" ]]; then
+ export _PKGOPT=y
+ fi
+ msg "Hit <P> : to remove the patchlevel number from kernver"
+ if [[ ${_PKGOPT} != "y" ]]; then
+ msg " (i.e. linux-pf-lts-${_basekernel})"
+ else
+ msg " (i.e. linux-pf-lts-${lcpu}-${_basekernel})"
+ fi
+ msg "Hit <ENTER> : to include the patchlevel number in kernver (default)"
+ if [[ ${_PKGOPT} != "y" ]]; then
+ msg " (i.e. linux-pf-lts-${_basekernel}.${_patchlevel})"
+ else
+ msg " (i.e. linux-pf-lts-${lcpu}-${_basekernel}.${_patchlevel})"
+ fi
+ read answer
+ shopt -s nocasematch
+ if [[ "$answer" = "p" ]]; then
+ export _SUBLEVEL=n
+ fi
+ fi
+ fi # batch check ends here
+ export CPU
+ #----------------------------------------
+
+ # Strip config of uneeded localversion
+# if [ "${_kernelname}" != "" ]; then
+ sed -ri 's|(CONFIG_LOCALVERSION=).*|\1|g' ./.config
+# sed -ri 's|(CONFIG_LOCALVERSION_AUTO=).*|\1=n|' ./.config
+# fi
+
+ # Remove the sublevel from Makefile, *if asked*.
+ # This ensures our kernel version is always MAJ.MIN-pf
+ # This way, minor kernel updates might not break external modules
+ if [ "${_SUBLEVEL}" = "n" ]; then
+ sed -ri 's|^(SUBLEVEL =).*|\1|' Makefile
+ else
+ sed -ri "s|^(SUBLEVEL =).*|\1 ${_patchlevel}|" Makefile
+ fi
+
+ # rewrite configuration
+ yes "" | make config >/dev/null
+
+ #cd "${srcdir}/${_srcname}"
+ # Build
+ # Want extreme and non-sensical optimization? Uncomment the following line!
+ # export KCFLAGS="-march=native -Ofast"
+ make ${MAKEFLAGS} LOCALVERSION= bzImage modules
+}
+
+package_linux-pf-lts() {
+ _pkgdesc="Linux kernel and modules with the pf-kernel patchset [-ck patch (BFS included), TuxOnIce, BFQ, UKSM] and aufs3. Long-term support."
+ pkgdesc=${_pkgdesc}
+ [ "${pkgbase}" = "linux" ] && groups=('base')
+ depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
+ optdepends=('linux-docs: Kernel hackers manual - HTML documentation that comes with the Linux kernel.'
+ 'crda: to set the correct wireless channels of your country'
+ 'pm-utils: utilities and scripts for suspend and hibernate power management'
+ 'tuxonice-userui: TuxOnIce userspace user interface'
+ 'hibernate-script: set of scripts for managing TuxOnIce, hibernation and suspend to RAM'
+ 'nvidia-pf: NVIDIA drivers for linux-pf-lts'
+ 'nvidia-beta-all: NVIDIA drivers for all installed kernels'
+ 'modprobed_db: Keeps track of EVERY kernel module that has ever been probed. Useful for make localmodconfig.')
+ #provides=(${pkgbase}=${_basekernel} 'aufs3') # for $pkgname-optimized
+ provides=(${pkgbase}=${_basekernel} linux=${pkgver} 'aufs3')
+ # below 'provides' is for when you have no other kernel (which is a bad idea anyway)
+ # provides=(${pkgbase}=${_basekernel} 'linux=${pkgver}' 'aufs3')
+
+ # If generic build, then conflict with all optimized ones
+ for _cpusuffix in "${_CPUSUFFIXES[@]}" ; do
+ conflicts+=(${pkgbase}-${_cpusuffix})
+ done
+
+ replaces=('aufs3')
+ backup=("etc/mkinitcpio.d/${pkgbase}.preset")
+ install="$pkgbase.install"
+
+ #'
+ cd "${srcdir}/linux-${_basekernel}"
+
+ # Remove undeeded aufs3 git tree
+ rm -fr aufs3 2>/dev/null
+
+ # work around the AUR parser
+ # This allows building cpu-optimized packages with according package names.
+ # Useful for repo maintainers.
+ headers="headers"
+ pkgnameopt="${pkgbase}" # this MUST be outside the following 'if'
+ if [[ "$_PKGOPT" = "y" ]]; then # package naming according to optimization
+ case $CPU in
+ CORE2)
+ pkgname="${pkgbase}-core2"
+ pkgdesc="${_pkgdesc} Intel Core2 optimized."
+ ;;
+ K7)
+ pkgname="${pkgbase}-k7"
+ pkgdesc="${_pkgdesc} AMD K7 optimized."
+ ;;
+ K8)
+ pkgname="${pkgbase}-k8"
+ pkgdesc="${_pkgdesc} AMD K8 optimized."
+ ;;
+ K10)
+ pkgname="${pkgbase}-k10"
+ pkgdesc="ยง{_pkgdesc} AMD K10 optimized"
+ ;;
+ BARCELONA)
+ pkgname="${pkgbase}-barcelona"
+ pkgdesc="${_pkgdesc} AMD Barcelona optimized."
+ ;;
+ BOBCAT)
+ pkgname="${pkgbase}-bobcat"
+ pkgdesc="${_pkgdesc} AMD Bobcat optimized."
+ ;;
+ BULLDOZER)
+ pkgname="${pkgbase}-bulldozer"
+ pkgdesc="${_pkgdesc} AMD Bulldozer optimized."
+ ;;
+ PILEDRIVER)
+ pkgname="${pkgbase}-piledriver"
+ pkgdesc="${_pkgdesc} AMD Piledriver optimized."
+ ;;
+ PSC)
+ pkgname="${pkgbase}-psc"
+ pkgdesc="${_pkgdesc} Intel Pentium4/D/Xeon optimized."
+ ;;
+ ATOM)
+ pkgname="${pkgbase}-atom"
+ pkgdesc="${_pkgdesc} Intel Atom optimized."
+ ;;
+ PENTIUMII)
+ pkgname="${pkgbase}-p2"
+ pkgdesc="${_pkgdesc} Intel Pentium2 optimized."
+ ;;
+ PENTIUMIII)
+ pkgname="${pkgbase}-p3"
+ pkgdesc="${_pkgdesc} Intel Pentium3 optimized."
+ ;;
+ PENTIUMM)
+ pkgname="${pkgbase}-pm"
+ pkgdesc="${_pkgdesc} Intel Pentium-M optimized."
+ ;;
+ PENTIUM4)
+ pkgname="${pkgbase}-p4"
+ pkgdesc="${_pkgdesc} Intel Pentium4 optimized."
+ ;;
+ COREI7)
+ pkgname="${pkgbase}-nehalem"
+ pkgdesc="${_pkgdesc} Intel Core Nehalem optimized."
+ ;;
+ COREI7AVX)
+ pkgname="${pkgbase}-sandybridge"
+ pkgdesc="${_pkgdesc} Intel 2nd Gen Core processors including Sandy Bridge."
+ ;;
+ COREAVXI)
+ pkgname="${pkgbase}-ivybridge"
+ pkgdesc="${_pkgdesc} Intel 3rd Gen Core processors including Ivy Bridge."
+ ;;
+ COREAVX2)
+ pkgname="${pkgbase}-haswell"
+ pkgdesc="${_pkgdesc} Intel AVX-2 processors including Haswell."
+ ;;
+ default)
+ # Note to me: DO NOT EVER REMOVE THIS. It's for the AUR PKGBUILD parser.
+ pkgname="${pkgbase}"
+ pkgdesc="Linux kernel and modules with the pf-kernel patchset [-ck patch (BFS included), TuxOnIce, BFQ, UKSM] and aufs3. Long-term support."
+ ;;
+ esac
+
+ # If optimized build, conflict with generic and other optimized ones
+ if [[ "$pkgname" != "$pkgbase" ]]; then
+ pkgnameopt="${pkgname}" # this MUST be inside this if-fi
+ pkgname="${pkgbase}"
+# echo pkgname $pkgnameopt
+ cpuopt=`sed -e "s/linux-pf-lts-//" <<<$pkgnameopt` # get suffix
+ cpuoptdesc=`sed -e "s/${_pkgdesc}//" <<<$pkgdesc` # get description
+ conflicts=(${conflicts[@]/${pkgbase}-${cpuopt}/}) # remove current
+ conflicts=(${conflicts[@]/${pkgbase}-headers-${cpuopt}/}) # remove current's headers
+ export cpuopt cpuoptdesc
+ fi
+
+ # second batch check ends here
+ fi
+
+ # Pass conflicts array to linux-pf-lts-headers() BEFORE adding generic linux-pf-lts or headers will conflict
+# export _conflicts=${conflicts[@]}
+ if [[ $cpuopt ]]; then
+ conflicts+=(${pkgbase}) # add generic
+ fi
+# conflicts=('linux-pf-lts' ${conflicts[@]}) # add generic packages
+
+ echo
+ echo " ========================================"
+ msg "The packages will be named ${pkgnameopt}"
+ if [[ "$cpuopt" ]]; then
+ msg "and ${pkgbase}-${headers}-${cpuopt}"
+ else
+ msg "and ${pkgbase}-${headers}"
+ fi
+ msg "${pkgdesc}"
+ echo " ========================================"
+ echo
+
+ ### package_linux-pf-lts
+
+ cd "${srcdir}/linux-${_basekernel}"
+
+ KARCH=x86
+
+ # get kernel version
+ _kernver="$(make LOCALVERSION= kernelrelease)"
+# _basekernel=${_kernver%%-*}
+# _basekernel=${_basekernel%.*}
+
+ ### c/p from linux-lts
+
+ mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
+ make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
+ cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
+
+ # set correct depmod command for install
+ cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
+ true && install=${install}.pkg
+
+ sed \
+ -e "s|KERNEL_NAME=.*|KERNEL_NAME=${_kernelname}|" \
+ -e "s|KERNEL_VERSION=.*|KERNEL_VERSION=${_kernver}|" \
+ -i "${startdir}/${install}"
+
+ # install mkinitcpio preset file for kernel
+ install -D -m644 "${srcdir}/${pkgbase}.preset" \
+ "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
+ sed \
+ -e "1s|'linux.*'|'${pkgbase}'|" \
+ -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
+ -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
+ -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
+ -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
+
+ # remove build and source links
+ rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
+ # remove the firmware
+ rm -rf "${pkgdir}/lib/firmware"
+ # gzip -9 all modules to save 100MB of space
+ find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
+ # 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
+ mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
+ echo "${_kernver}" > \
+ "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
+
+ # Now we call depmod...
+ depmod -b "${pkgdir}" -F System.map "${_kernver}"
+
+ # move module tree /lib -> /usr/lib
+ mkdir -p "${pkgdir}/usr"
+ mv "${pkgdir}/lib" "${pkgdir}/usr/"
+
+ # add vmlinux
+ install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
+
+# end c/p
+
+ ###
+ # Trick the AUR parser to accept split PKGBUILD
+ true && pkgname="${pkgnameopt}"
+}
+
+
+package_linux-pf-lts-headers() {
+ pkgdesc="Header files and scripts for building modules for linux-pf-lts kernel."
+# IFS=' ' read -a conflicts <<<${_conflicts}
+# conflicts=( ${_conflicts[@]} )
+ conflicts=()
+ for _cpusuffix in "${_CPUSUFFIXES[@]}" ; do
+ conflicts+=(${pkgbase}-headers-${_cpusuffix})
+ done
+
+ # Remove own headers and add generic ones to conflicts, if optimized
+ if [[ $cpuopt ]]; then
+ conflicts=(${conflicts[@]/${pkgbase}-headers-${cpuopt}/}) # remove current
+ conflicts+=(${pkgbase}-headers) # add generic
+ fi
+
+ [[ ${cpuopt} ]] && pkgname=${pkgname}-${cpuopt} # && depends=${depends}-${cpuopt}
+ [[ ${cpuoptdesc} ]] && pkgdesc=${pkgdesc}${cpuoptdesc}
+ provides=(${pkgbase}-headers linux-headers=${pkgver})
+ cd "${srcdir}/linux-${_basekernel}"
+
+# c/p from linux-ARCH
+
+ install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
+
+ cd "${srcdir}/${_srcname}"
+ install -D -m644 Makefile \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
+ install -D -m644 kernel/Makefile \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
+ install -D -m644 .config \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
+
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
+
+ for i in acpi asm-generic config crypto drm generated keys linux math-emu \
+ media net pcmcia scsi sound trace uapi video xen; do
+ cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
+ done
+
+ # copy arch includes for external modules
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86"
+ cp -a arch/x86/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86/"
+
+ # copy files necessary for later builds, like nvidia and vmware
+ cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
+ cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
+
+ # fix permissions on scripts dir
+ chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
+
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
+
+ cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
+
+ if [ "${CARCH}" = "i686" ]; then
+ cp arch/${KARCH}/Makefile_32.cpu \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
+ fi
+
+ cp arch/${KARCH}/kernel/asm-offsets.s \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
+
+ # add docbook makefile
+ install -D -m644 Documentation/DocBook/Makefile \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/DocBook/Makefile"
+
+ # add dm headers
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
+ cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
+
+ # add inotify.h
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
+ cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
+
+ # add wireless headers
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
+ cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
+
+ # add dvb headers for external modules
+ # in reference to:
+ # http://bugs.archlinux.org/task/9912
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
+ cp drivers/media/dvb-core/*.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
+ # and...
+ # http://bugs.archlinux.org/task/11194
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
+ cp include/config/dvb/*.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/include/config/dvb/"
+
+ # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
+ # in reference to:
+ # http://bugs.archlinux.org/task/13146
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
+ cp drivers/media/dvb-frontends/lgdt330x.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
+ cp drivers/media/i2c/msp3400-driver.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
+
+ # add dvb headers
+ # in reference to:
+ # http://bugs.archlinux.org/task/20402
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
+ cp drivers/media/usb/dvb-usb/*.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
+ cp drivers/media/dvb-frontends/*.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
+ cp drivers/media/tuners/*.h \
+ "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
+
+ # add xfs and shmem for aufs building
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
+ mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
+ cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
+
+ # copy in Kconfig files
+ for i in $(find . -name "Kconfig*"); do
+ mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
+ cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
+ done
+
+ chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
+ find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
+
+ # strip scripts directory
+ find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
+ case "$(file -bi "${binary}")" in
+ *application/x-sharedlib*) # Libraries (.so)
+ /usr/bin/strip ${STRIP_SHARED} "${binary}";;
+ *application/x-archive*) # Libraries (.a)
+ /usr/bin/strip ${STRIP_STATIC} "${binary}";;
+ *application/x-executable*) # Binaries
+ /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
+ esac
+ done
+
+ # remove unneeded architectures
+ rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
+# end c/p
+
+ # Add version.h for dumb binary blob installers which aren't
+# cd "${pkgdir}/usr/src/linux-${_kernver}/include/linux/"
+# [[ -e version.h ]] || ln -s ../generated/uapi/linux/version.h
+
+}
+
+# Work around the AUR parser
+#pkgdesc="Linux kernel and modules with the pf-kernel patchset [-ck patch (BFS included), TuxOnIce, BFQ, UKSM] and aufs3. Long-term support."
+
+
+#pkgname=("${pkgbase}" "${pkgbase}-headers")
+#for _p in ${pkgname[@]}; do
+# eval "package_${_p}() {
+# $(declare -f "_package${_p#${pkgbase}}")
+# _package${_p#${pkgbase}}
+# }"
+#done
+
+# makepkg -g >>PKGBUILD
+sha256sums=('61558aa490855f42b6340d1a1596be47454909629327c49a5e4e10268065dffa'
+ 'SKIP'
+ 'fd4769f86fbe34bf95d26abd6a61ce06ffea9982a782612e60fffdb830927b39'
+ 'c9ec6e9493c871fe2390efed7d7a29ab447135117e9c06739d599f1c0ebe4ea4'
+ '1f036f7464da54ae510630f0edb69faa115287f86d9f17641197ffda8cfd49e0'
+ 'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
+ '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+ '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+ '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+ 'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+ '03ed4eb4a35d42ae6beaaa5e6fdbada4244ed6c343944bba6462defaa6fed0bf'
+ '51ea665cfec42d9f9c7796af2b060b7edbdeb367e42811f8c02667ad729f6b19'
+ '9e1e81d80afac6f316e53947e1b081017090081cd30e6c4c473420b77af4b52b'
+ '3b71affbe4b00da4cb31116449d69ac3d0f00d228feaf4f2cc4d747330bedba4'
+ '06e080fb001112bb2418539058e987688d9658a927153ae79c967c11860e3b68'
+ 'd60662a9f6b2696c20b6fbd12f365913eeb98d5edefca34587092eac9cb49774'
+ 'a8602dc9e1591ecea14e2f3de06d20970828915b7ff2194b2bc31845b8ff5927'
+ 'e7f9c907cd19aa6ca2f5c3363a5f3cd1d0b4e4c4229fbe2ded6c83356bfdf6c6'
+ '4ae4de332c46eb0bae95268ecb57a51579894ef354b75dcf09d8720b0c331164'
+ '17829b034090336a2137c87a9447a696a988f4c91b4b6eec197fb8525f578eec'
+ 'd9bd56619b609f9b37f1301af0f539dfd47f2e7ad8f9682f4a7c0ce30b2baf82'
+ 'de9202050d916e4b2426ec5630d15165c22b3911b7dbf5f02068daeb453fb330'
+ '1c105726eb1ceda96f7db33fdfe269fea405d7599ca5b57aabe8af565638d427'
+ '1b7c21229775206bc0a7a44a5f9af23ea7ff0b7c9fdb1bad0e6536097c93b4cc')