Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Contributor: graysky <graysky AT archlinux dot us>
- # Contributor: Tobias Powalowski <[email protected]>
- # Contributor: Thomas Baechler <[email protected]>
- ###########################################################################################################
- # Patch and Build Options
- ###########################################################################################################
- _BFQ_patches="n" # add BFQ patches
- _makenconfig="n" # nconfig option
- _localmodcfg="n" # make localmod config - compile ONLY probed modules - see notes below!
- _use_current="n" # use the current kernel's .config file - see notes below!
- ###########################################################################################################
- # More Details and References
- ###########################################################################################################
- #
- ## Note all kernels get the ck patch set so there is no option to enable/disable it!
- #
- ## BFQ
- # read, http://algo.ing.unimo.it/people/paolo/disk_sched/
- #
- ## MAKENCONFIG OPTION
- # Allows you to select additional kernel options prior to a build via a nconfig.
- #
- ## LOCALMODCONFIG OPTION
- # As of mainline 2.6.32, running with this option will only build the modules that you currently have
- # probed in your system VASTLY reducing the number of modules build.
- #
- # WARNING - make CERTAIN that all modules are modprobed BEFORE you begin making the pkg!
- # Read, https://bbs.archlinux.org/viewtopic.php?pid=830221#p830221
- # To keep track of which modules are needed for your specific system/hardware, give my module_db script
- # a try: http://aur.archlinux.org/packages.php?ID=41689
- #
- # Note that if you use my script, this PKGBUILD will auto run the reload_data base for you to probe
- # all the modules you have logged!
- #
- ## USE CURRENT KERNEL'S .CONFIG
- # Enabling this option will use the .config of the RUNNING kernel rather than the ARCH defaults.
- # Useful when the package gets updated and you already went through the trouble of customizing your
- # config options. NOT recommended when a new kernel is released, but again, convenient for package bumps.
- ###########################################################################################################
- pkgname='kernel26-ck'
- true && pkgname=('kernel26-ck' 'kernel26-ck-headers')
- _basekernel=2.6.37
- pkgver=${_basekernel}
- pkgrel=1
- arch=('i686' 'x86_64')
- license=('GPL2')
- url="http://users.on.net/~ckolivas/kernel"
- _archpatchversion=1
- _ckpatchversion=1
- _kernelname=-ck
- _patchname="patch-${pkgver}-${_archpatchversion}-ARCH"
- _ckpatchname="patch-${_basekernel}-ck${_ckpatchversion}"
- _bfqpath="http://algo.ing.unimo.it/people/paolo/disk_sched/patches/2.6.37"
- source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2 # kernel source
- ftp://ftp.archlinux.org/other/kernel26/${_patchname}.bz2 # arch patchset
- config config.x86_64 kernel26.preset # configs
- # ck patchset
- http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/${_basekernel}/${_basekernel}-ck${_ckpatchversion}/${_ckpatchname}.bz2
- # BFQ patches
- ${_bfqpath}/0001-bfq_iosched-block-prepare_IO_context_code-v1-2.6.37.patch
- ${_bfqpath}/0002-bfq_iosched-block-add-cgroups-kconfig-and-build-bits-for-BFQ-v1-2.6.37.patch
- ${_bfqpath}/0003-bfq_iosched-block-introduce_BFQ-v1-2.6.37.patch)
- ## x86_64 processor types/specific for loop - uncomment for mass builds only
- for pt in core2 k8 atom; do
- build() {
- ### Patch source with -ARCH patches
- # See http://projects.archlinux.org/linux-2.6-ARCH.git/
- msg "Patching source with-ARCH patches"
- cd ${srcdir}/linux-$_basekernel
- patch -Np1 -i ${srcdir}/${_patchname}
- ### Patch source with ck's magic
- # Fix double name in EXTRAVERSION
- sed -i -re "s/^(.EXTRAVERSION).*$/\1 = /" ${srcdir}/${_ckpatchname}
- # Add -ck base patch set
- msg "Patching source with ck1 patch set"
- patch -Np1 -i ${srcdir}/${_ckpatchname}
- ### Optionally patch source for BFQ patches
- if [ ${_BFQ_patches} = "y" ]; then
- msg "Patching source with BFQ patches"
- for p in $(ls ${srcdir}/*-bfq_*); do
- patch -Np1 -i $p
- done
- fi
- ### Clean tree and copy ARCH config over
- msg "Running make mrproper to clean source tree"
- make mrproper
- if [ "$CARCH" = "x86_64" ]; then
- cat ../config.x86_64 >./.config
- else
- cat ../config >./.config
- fi
- ### Optionally use running kernel's config
- # code originally by nous; http://aur.archlinux.org/packages.php?ID=40191
- if [ ${_use_current} = "y" ]; then
- if [[ -s /proc/config.gz ]]; then
- msg "Extracting config from /proc/config.gz..."
- modprobe configs
- zcat /proc/config.gz > ./.config
- else
- warning "You kernel was not compiled with IKCONFIG_PROC!"
- warning "You cannot read the current config!"
- warning "Aborting!"
- exit 0
- fi
- fi
- if [ "${_kernelname}" != "" ]; then
- sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
- fi
- msg "Running make prepare for you to enable patched options of your choosing"
- make prepare
- # If user patched to BFQ and enabled it in the prev step, set it as default io scheduler
- if [ ${_BFQ_patches} = "y" ]; then
- sed -i s'/CONFIG_DEFAULT_CFQ=y/# CONFIG_DEFAULT_CFQ is not set/g' ./.config
- sed -i s'/# CONFIG_DEFAULT_BFQ is not set/CONFIG_DEFAULT_BFQ=y/g' ./.config
- sed -i s'/CONFIG_DEFAULT_IOSCHED="cfq"/CONFIG_DEFAULT_IOSCHED="bfq"/g' ./.config
- fi
- ### Optionally load needed modules for the make localmodconfig
- # See http://aur.archlinux.org/packages.php?ID=41689
- if [ $_localmodcfg = "y" ]; then
- msg "If you have modprobe_db installed, running reload_database now"
- if [ -e /usr/bin/reload_database ]; then
- /usr/bin/reload_database
- fi
- msg "Running Steven Rostedt's make localmodconfig now"
- make localmodconfig
- fi
- if [ $_makenconfig = "y" ]; then
- msg "Running make nconfig"
- make nconfig
- fi
- ## for loop only
- if [ $_pn="core2" ]; then
- sed -i s'/CONFIG_GENERIC_CPU=y/# CONFIG_GENERIC_CPU is not set/g' ./.config
- sed -i s'/# CONFIG_MCORE2 is not set/CONFIG_MCORE2=y/g' ./.config
- fi
- if [ $_pn="k8" ]; then
- sed -i s'/CONFIG_GENERIC_CPU=y/# CONFIG_GENERIC_CPU is not set/g' ./.config
- sed -i s'/# CONFIG_MK8 is not set/CONFIG_MK8=y/g' ./.config
- fi
- if [ $_pn="atom" ]; then
- sed -i s'/CONFIG_GENERIC_CPU=y/# CONFIG_GENERIC_CPU is not set/g' ./.config
- sed -i s'/# CONFIG_MATOM is not set/CONFIG_MATOM=y/g' ./.config
- fi
- ##
- msg "Running make bzImage and modules"
- make bzImage modules
- }
- package_kernel26-ck-$_pt() {
- pkgdesc="ARCH kernel with Brain Fuck Scheduler v0.363 by Con Kolivas. Other goodies in ck1 patch set and BFQ I/O scheduler optional."
- backup=(etc/mkinitcpio.d/${pkgname}.preset)
- depends=('coreutils' 'linux-firmware' 'module-init-tools' 'mkinitcpio>=0.5.20')
- install=kernel26.install
- optdepends=('crda: to set the correct wireless channels of your country' \
- 'lirc-ck: Linux Infrared Remote Control kernel modules for kernel26-ck' \
- 'nvidia-ck: nVidia drivers for kernel26-ck' \
- 'nvidia-beta-ck: nVidia beta drivers for kernel26-ck' \
- 'nvidia-173xx-ck: nVidia drivers for kernel26-ck, 173xx branch' \
- 'modprobed_db: Keeps track of EVERY kernel module that has ever been probed - useful for those of us who make localmodconfig')
- KARCH=x86
- cd ${srcdir}/linux-$_basekernel
- #get kernel version
- _kernver="$(make kernelrelease)"
- mkdir -p ${pkgdir}/{lib/modules,lib/firmware,boot}
- msg "Running make modules_install"
- make INSTALL_MOD_PATH=${pkgdir} modules_install
- cp System.map ${pkgdir}/boot/System.map26${_kernelname}
- cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz26${_kernelname}
- # add vmlinux
- install -m644 -D vmlinux ${pkgdir}/usr/src/linux-${_kernver}/vmlinux
- # install fallback mkinitcpio.conf file and preset file for kernel
- install -m644 -D ${srcdir}/kernel26.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
- # set correct depmod command for install
- sed \
- -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
- -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
- -i $startdir/kernel26.install
- sed \
- -e "s|source .*|source /etc/mkinitcpio.d/kernel26${_kernelname}.kver|g" \
- -e "s|default_image=.*|default_image=\"/boot/${pkgname}.img\"|g" \
- -e "s|fallback_image=.*|fallback_image=\"/boot/${pkgname}-fallback.img\"|g" \
- -i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
- echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${pkgdir}/etc/mkinitcpio.d/${pkgname}.kver
- # remove build and source links
- rm -f ${pkgdir}/lib/modules/${_kernver}/{source,build}
- # remove the firmware
- rm -rf ${pkgdir}/lib/firmware
- }
- package_kernel26-ck-headers-$_pt() {
- pkgdesc='Header files and scripts to build modules for kernel26-ck'
- provides=("kernel26-ck-headers=${pkgver}")
- mkdir -p ${pkgdir}/lib/modules/${_kernver}
- cd ${pkgdir}/lib/modules/${_kernver}
- ln -sf ../../../usr/src/linux-${_kernver} build
- cd ${srcdir}/linux-$_basekernel
- install -D -m644 Makefile \
- ${pkgdir}/usr/src/linux-${_kernver}/Makefile
- install -D -m644 kernel/Makefile \
- ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile
- install -D -m644 .config \
- ${pkgdir}/usr/src/linux-${_kernver}/.config
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include
- for i in acpi asm-generic config generated linux math-emu media net pcmcia scsi sound trace video xen; do
- cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/
- done
- # copy arch includes for external modules
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
- cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/
- # copy files necessary for later builds, like nvidia and vmware
- cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}
- cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}
- # fix permissions on scripts dir
- chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel
- cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
- if [ "$CARCH" = "i686" ]; then
- cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
- fi
- cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/
- # add headers for lirc package
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video
- cp drivers/media/video/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/
- # need to remove zc0301 from the array with 2.26.36
- for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo; do
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
- cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
- done
- # add docbook makefile
- install -D -m644 Documentation/DocBook/Makefile \
- ${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile
- # add dm headers
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
- cp drivers/md/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
- # add inotify.h
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux
- cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/
- # add wireless headers
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
- cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
- # add dvb headers for external modules
- # in reference to:
- # http://bugs.archlinux.org/task/9912
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core
- cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/
- # add dvb headers for external modules
- # in reference to:
- # http://bugs.archlinux.org/task/11194
- if [ -d ${srcdir}/linux-$_basekernel/include/config/dvb ]; then
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
- cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
- fi
- # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
- # in reference to:
- # http://bugs.archlinux.org/task/13146
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
- cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
- cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
- # add dvb headers
- # in reference to:
- # http://bugs.archlinux.org/task/20402
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb
- cp drivers/media/dvb/dvb-usb/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-usb/
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends
- cp drivers/media/dvb/frontends/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners
- cp drivers/media/common/tuners/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/common/tuners/
- # add xfs and shmem for aufs building
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm
- cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h
- # add headers for virtualbox
- # in reference to:
- # http://bugs.archlinux.org/task/14568
- cp -a include/drm $pkgdir/usr/src/linux-${_kernver}/include/
- # add headers for broadcom wl
- # in reference to:
- # http://bugs.archlinux.org/task/14568
- cp -a include/trace $pkgdir/usr/src/linux-${_kernver}/include/
- # add headers for crypto modules
- # in reference to:
- # http://bugs.archlinux.org/task/22081
- cp -a include/crypto $pkgdir/usr/src/linux-${_kernver}/include/
- # copy in Kconfig files
- for i in `find . -name "Kconfig*"`; do
- mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`
- cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i
- done
- chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
- find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
- # remove unneeded architectures
- rm -rf ${pkgdir}/usr/src/linux-${_kernver}/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,microblaze,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa}
- }
- # Global pkgdesc and depends are here so that they will be picked up by AUR
- pkgdesc="ARCH kernel with Brain Fuck Scheduler v0.363 by Con Kolivas. Other goodies in ck1 patch set and BFQ I/O scheduler optional."
- sha256sums=('edbf091805414739cf57a3bbfeba9e87f5e74f97e38f04d12060e9e0c71e383a'
- 'ef2ac68de4202d25bc9bc6f9bbc7687e5ead93ec6ec48d897acf0434840f7e93'
- '3db466dc75f32e863576a6fbeac025a8b0d67e484b4e17f3775a7c61215ba5b2'
- '14c14d6a6a2f6afa1e475ac47b0ede347cd1720da42c83ff84de38a26679d5c0'
- 'f226c292ab3c1a87b78a372ae7589e820a3d9673e3bdec87ead82f876789cb95'
- '74566aa7fa7f4df1830561989c4601bc77f6dd0a817321b3c92d1b2479a7cd03'
- 'e26487ece1e8d0907dfb2d9e7853563acd5466284eb07f0c4b6bbc0dbe9a3bf1'
- '54c14dd574cf0d1a375fa210f59cbb9c6dbb5ee6fce57a52d4f828173d3f3559'
- '4561045bfcde95fc27478067e01e0d7dbbd2a22c2a5fd24c31508b25eb4cea71')
- done
Advertisement
Add Comment
Please, Sign In to add comment