Don't like ads? PRO users don't see any ads ;-)
Guest

kernel26-ice with reiser4 patch PKGBUILD

By: a guest on Feb 5th, 2011  |  syntax: Bash  |  size: 11.36 KB  |  hits: 120  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. # Maintainer: Giuseppe Calderaro <giuseppecalderaro@gmail.com>
  2. # Contributor: (misc updates) Michael Evans <mjevans1983@gmail.com>
  3. # Contributor: (RT and misc) Ng Oon-Ee <ng oon ee AT gmail.com>
  4.  
  5. pkgdesc="The Linux Kernel and modules with tuxonice support and optional bfs/ck patches"
  6. depends=('coreutils' 'module-init-tools' 'mkinitcpio>=0.5.15' 'kernel26-firmware')
  7. pkgext=-ice
  8. pkgname=kernel26$pkgext
  9. pkgver=2.6.37
  10. _minor_patch=0
  11. icever=$pkgver$pkgext
  12. pkgrel=1
  13. makedepends=('xmlto' 'docbook-xsl')
  14. arch=(i686 x86_64)
  15. license=('GPL2')
  16. url="http://www.kernel.org"
  17.  
  18. ### User/Environment defined variables
  19. enable_toi=${enable_toi:-1}
  20. bfs_scheduler=${bfs_scheduler:-0}
  21. ck_patches=${ck_patches:-0}
  22. keep_source_code=${keep_source_code:-0}
  23. menuconfig=${menuconfig:-0}
  24. realtime_patch=${realtime_patch:-0}
  25. local_patch_dir="${local_patch_dir:-}"
  26. use_config="${use_config:-}"
  27. use_config_gz=${use_config_gz:-0}
  28. enable_reiser4=${enable_reiser4:-0} # not yet released for 2.6.37
  29. make_jobs=${make_jobs:-2}
  30. ### Compile time defined variables
  31. ###
  32.  
  33. ### Files / Versions
  34. file_rt="patch-2.6.33.7.2-rt30.bz2"
  35. file_reiser4="reiser4-for-2.6.37.patch.bz2"
  36. #file_toi="tuxonice-3.2-rc2-for-2.6.36.patch.bz2"
  37. file_toi="current-tuxonice-for-2.6.37.patch_0.bz2"
  38. file_bfs="2.6.37-sched-bfs-363.patch"
  39. patch_rev_ck="ck1"
  40. file_ck="patch-${pkgver}-${patch_rev_ck}.bz2"
  41. ###
  42.  
  43. source=(http://kernel.org/pub/linux/kernel/v2.6/linux-${pkgver}.tar.bz2
  44. #       http://www.kernel.org/pub/linux/kernel/v2.6/patch-${pkgver}.${_minor_patch}.bz2
  45.         http://www.kernel.org/pub/linux/kernel/projects/rt/${file_rt}
  46.         http://www.kernel.org/pub/linux/kernel/people/ck/patches/2.6/${pkgver}/${pkgver}-${patch_rev_ck}/${file_ck}
  47.         http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/${file_reiser4}
  48.         http://www.tuxonice.net/files/${file_toi}
  49.         http://ck.kolivas.org/patches/bfs/${pkgver}/${file_bfs}
  50.         config
  51.         config.x86_64
  52.         $pkgname.preset
  53.         mkinitcpio-$pkgname.conf)
  54.  
  55. md5sums=('c8ee37b4fdccdb651e0603d35350b434'
  56.          'da527aea6a4a374f963f4063e548dc74'
  57.          'd5c93c7df1692d364c15d8eea0b384c9'
  58.          '6b19322620d4fabfb2db1bf6748020eb'
  59.          '42405369b3395bcdfd53d7d389b23d4a'
  60.          '3455da009658ce7dd2f5f4ab358d29ee'
  61.          '33946ae31868ea734e7d6750f6e113d1'
  62.          '56f7920169e0e7e6808fe86412b865fc'
  63.          '541973d72e24a2def82d33884a781ee1'
  64.          '4ec86e859234dc251dd16884235a9e37')
  65.  
  66. build() {
  67.     cd ${srcdir}/linux-$pkgver
  68.  
  69.     # Applying official patch
  70.     if [ "$_minor_patch" != "0" ] ; then
  71.         echo "Applying patch-${pkgver}.${_minor_patch}.bz2"
  72.         patch -Np1 -i ${srcdir}/patch-${pkgver}.${_minor_patch} || return 1
  73.     fi
  74.  
  75.     if [ -n "${local_patch_dir}" ] && [ -d "${local_patch_dir}" ] ; then
  76.         echo "Applying patches from ${local_patch_dir} ..."
  77.         for my_patch in "${local_patch_dir}"/* ; do
  78.                 echo -e "Applying custom patch:\t'${my_patch}'" || true
  79.                 patch -Np1 -i "${my_patch}" || return 1
  80.         done
  81.     fi
  82.  
  83.     # Applying realtime patch
  84.     if [ "$realtime_patch" = "1" ]; then
  85.         echo "Applying real time patch"
  86.         # Strip './Makefile' changes
  87.         bzip2 -dkc ${srcdir}/${file_rt} \
  88.             | sed '/diff --git a\/Makefile b\/Makefile/,/*DOCUMENTATION*/d' \
  89.             | patch -Np1 || return 1
  90.     fi
  91.    
  92.     # applying reiserfs4 patch
  93.     if [ "$enable_reiser4" = "1" ]; then
  94.         echo "Applying ${file_reiser4%.gz}"
  95.         bzip2 -dc ${srcdir}/${file_reiser4} | patch -Np1 || return 1
  96.     fi
  97.    
  98.     # applying tuxonice patch
  99.     if [ "${enable_toi}" = "1" ]; then
  100.         echo "Applying ${file_toi%.bz2}"
  101.         # fix to tuxonice patch to work with rt
  102.         if [ "$realtime_patch" = "1" ]; then
  103.                 bzip2 -dck ${srcdir}/${file_toi} \
  104.                 | sed '/diff --git a\/kernel\/fork.c b\/kernel\/fork.c/,/{/d' \
  105.                 | sed 's/printk(KERN_INFO "PM: Creating hibernation image:\\n/printk(KERN_INFO "PM: Creating hibernation image: \\n/' \
  106.                 | patch -Np1 || return 1
  107.         else
  108.                 bzip2 -dck ${srcdir}/${file_toi} \
  109.                 | sed 's/printk(KERN_INFO "PM: Creating hibernation image:\\n/printk(KERN_INFO "PM: Creating hibernation image: \\n/' \
  110.                 | patch -Np1 -F4 || return 1
  111.         fi
  112.     fi
  113.  
  114.     if [ "${bfs_scheduler}" = "1" ] && [ "${ck_patches}" = "0" ]; then
  115.        # applying BFS scheduler patch
  116.         echo "Applying BFS scheduler patch"
  117.         patch -Np1 -i ${srcdir}/${file_bfs} || return 1
  118.     fi
  119.     if [ "${ck_patches}" = "1" ] ; then
  120.         echo "Applying CK patches ${file_ck%.*}"
  121.         # sed out the -ckX version to make kernel naming happy.
  122.         bzip2 -dck ${srcdir}/${file_ck} \
  123.             | sed 's/+EXTRAVERSION := $(EXTRAVERSION)$(CKVERSION)/+EXTRAVERSION := $(EXTRAVERSION)/' \
  124.             | patch -Np1 || return 1
  125.     fi
  126.    
  127.     # remove extraversion
  128.     sed -i 's|^EXTRAVERSION = .*$|EXTRAVERSION =|g' Makefile
  129.    
  130.     # load configuration for i686 or x86_64
  131.     if [ "$CARCH" = "x86_64" ]; then
  132.         cat ../config.x86_64 > ./.config
  133.     else
  134.         cat ../config > ./.config
  135.     fi
  136.  
  137.     # use custom config instead
  138.     if [ -n "${use_config}" ] ; then
  139.         echo "Using config: '${use_config}'"
  140.         cat "${use_config}" > ./.config
  141.         make oldconfig
  142.     fi
  143.  
  144.     # use existing config.gz
  145.     if [ "$use_config_gz" = "1" ]; then
  146.         zcat /proc/config.gz > ./.config
  147.         make oldconfig
  148.     fi
  149.    
  150.     # hack to prevent output kernel from being marked as dirty or git
  151.     chmod +x ${srcdir}/linux-$pkgver/scripts/setlocalversion
  152.     sed 's/head=`git rev-parse --verify --short HEAD 2>\/dev\/null`/0/' \
  153.         ${srcdir}/linux-$pkgver/scripts/setlocalversion \
  154.         > ${srcdir}/linux-$pkgver/scripts/setlocalversion.new
  155.     mv ${srcdir}/linux-$pkgver/scripts/setlocalversion.new \
  156.         ${srcdir}/linux-$pkgver/scripts/setlocalversion
  157.    
  158.     make prepare
  159.    
  160.     # configure kernel
  161.     if [ "$menuconfig" = "1" ]; then
  162.         make menuconfig
  163.     fi
  164.     yes "" | make config
  165.        
  166.     cd ${srcdir}/linux-$pkgver
  167.     # build kernel
  168.     make -j${make_jobs} bzImage modules || return 1
  169. }
  170.  
  171. package_kernel26-ice() {
  172.     pkgdesc="The Linux Kernel and modules"
  173.     groups=('base')
  174.     backup=(etc/mkinitcpio.d/$pkgname.preset)
  175.     depends=('coreutils' 'linux-firmware' 'module-init-tools' 'mkinitcpio>=0.5.20')
  176.     replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi'
  177.         'alsa-driver' 'ieee80211' 'hostap-driver26'
  178.         'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv'
  179.         'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs'
  180.         'gspcav1' 'atl2' 'wlan-ng26' 'rt2500' 'nouveau-drm')
  181.     install=$pkgname.install
  182.     optdepends=('crda: to set the correct wireless channels of your country')
  183.    
  184.     KARCH=x86
  185.    
  186.     if [ "$keep_source_code" = "1" ]; then
  187.         echo -n "Copying source code..."
  188.         # Keep the source code
  189.         cd $startdir
  190.         mkdir -p $pkgdir/usr/src || return 1
  191.         cp -a ${srcdir}/linux-$pkgver $pkgdir/usr/src/linux-$icever || return 1
  192.        
  193.         #Add a link from the modules directory
  194.         mkdir -p $pkgdir/lib/modules/$icever || return 1
  195.         cd $pkgdir/lib/modules/$icever || return 1
  196.         rm -f source
  197.         ln -s ../../../usr/src/linux-$icever source || return 1
  198.         echo "OK"
  199.     fi
  200.  
  201.     cd $srcdir/linux-$pkgver
  202.     # get kernel version
  203.     mkdir -p $pkgdir/{lib/modules,lib/firmware,boot}
  204.     make INSTALL_MOD_PATH=$pkgdir modules_install || return 1
  205.     install -D -m644 System.map $pkgdir/boot/System.map26$pkgext
  206.     install -D -m644 arch/$KARCH/boot/bzImage $pkgdir/boot/vmlinuz26$pkgext
  207.     install -D -m644 Makefile $pkgdir/usr/src/linux-$icever/Makefile
  208.     install -D -m644 kernel/Makefile $pkgdir/usr/src/linux-$icever/kernel/Makefile
  209.     install -D -m644 .config $pkgdir/usr/src/linux-$icever/.config
  210.     install -D -m644 .config $pkgdir/boot/kconfig26$pkgext
  211.     mkdir -p $pkgdir/usr/src/linux-$icever/include
  212.    
  213.     for i in acpi asm-generic config generated linux math-emu media net pcmcia scsi sound trace video xen; do
  214.         cp -a include/$i $pkgdir/usr/src/linux-$icever/include/
  215.     done
  216.    
  217.     # copy arch includes for external modules
  218.     mkdir -p $pkgdir/usr/src/linux-$icever/arch/$KARCH
  219.     cp -a arch/$KARCH/include $pkgdir/usr/src/linux-$icever/arch/$KARCH/
  220.    
  221.     # copy files necessary for later builds, like nvidia and vmware
  222.     cp Module.symvers $pkgdir/usr/src/linux-$icever
  223.     cp -a scripts $pkgdir/usr/src/linux-$icever
  224.    
  225.     # fix permissions on scripts dir
  226.     chmod og-w -R $pkgdir/usr/src/linux-$icever/scripts
  227.    
  228.     mkdir -p $pkgdir/usr/src/linux-$icever/arch/$KARCH/kernel
  229.    
  230.     cp arch/$KARCH/Makefile $pkgdir/usr/src/linux-$icever/arch/$KARCH/
  231.     if [ "${CARCH}" = "i686" ]; then
  232.         cp arch/$KARCH/Makefile_32.cpu $pkgdir/usr/src/linux-$icever/arch/$KARCH/
  233.     fi
  234.     cp arch/$KARCH/kernel/asm-offsets.s $pkgdir/usr/src/linux-$icever/arch/$KARCH/kernel/
  235.    
  236.     # add headers for lirc package
  237.     mkdir -p $pkgdir/usr/src/linux-$icever/drivers/media/video
  238.     cp drivers/media/video/*.h  $pkgdir/usr/src/linux-$icever/drivers/media/video/
  239.     for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301
  240.     do
  241.         if ls drivers/media/video/$i/*.h &>/dev/null; then
  242.                 mkdir -p $pkgdir/usr/src/linux-$icever/drivers/media/video/$i
  243.                 cp -a drivers/media/video/$i/*.h $pkgdir/usr/src/linux-$icever/drivers/media/video/$i
  244.         else
  245.                 echo Skipping $i : drivers/media/video/$i/*.h
  246.         fi
  247.     done
  248.    
  249.     # add dm headers
  250.     mkdir -p $pkgdir/usr/src/linux-$icever/drivers/md
  251.     cp drivers/md/*.h  $pkgdir/usr/src/linux-$icever/drivers/md
  252.    
  253.     # add inotify.h
  254.     mkdir -p $pkgdir/usr/src/linux-$icever/include/linux
  255.     cp include/linux/inotify.h $pkgdir/usr/src/linux-$icever/include/linux/
  256.    
  257.     # add CLUSTERIP file for iptables
  258.     mkdir -p $pkgdir/usr/src/linux-$icever/net/ipv4/netfilter/
  259.     cp net/ipv4/netfilter/ipt_CLUSTERIP.c $pkgdir/usr/src/linux-$icever/net/ipv4/netfilter/
  260.    
  261.     # add wireless headers
  262.     mkdir -p $pkgdir/usr/src/linux-$icever/net/mac80211/
  263.     cp net/mac80211/*.h $pkgdir/usr/src/linux-$icever/net/mac80211/
  264.    
  265.     # add xfs and shmem for aufs building
  266.     mkdir -p $pkgdir/usr/src/linux-$icever/fs/xfs
  267.     mkdir -p $pkgdir/usr/src/linux-$icever/mm
  268.     cp fs/xfs/xfs_sb.h $pkgdir/usr/src/linux-$icever/fs/xfs/xfs_sb.h
  269.     cp mm/shmem.c $pkgdir/usr/src/linux-$icever/mm/shmem.c
  270.    
  271.     # add vmlinux
  272.     cp vmlinux $pkgdir/usr/src/linux-$icever
  273.    
  274.     # copy in Kconfig files
  275.     for i in $(find . -name "Kconfig*")
  276.     do
  277.         mkdir -p $pkgdir/usr/src/linux-$icever/$(echo $i | sed 's|/Kconfig.*||')
  278.         cp $i $pkgdir/usr/src/linux-$icever/$i
  279.     done
  280.    
  281.     chown -R root.root $pkgdir/usr/src/linux-$icever
  282.     find $pkgdir/usr/src/linux-$icever -type d -exec chmod 755 {} \;
  283.     cd $pkgdir/lib/modules/$icever && (rm -f source build;
  284.     ln -sf ../../../usr/src/linux-$icever build)
  285.    
  286.     # install fallback mkinitcpio.conf file and preset file for kernel
  287.     install -m644 -D ${srcdir}/$pkgname.preset $pkgdir/etc/mkinitcpio.d/${pkgname}.preset || return 1
  288.     install -m644 -D ${srcdir}/mkinitcpio-$pkgname.conf $pkgdir/etc/mkinitcpio.d/$pkgname-fallback.conf || return 1
  289.    
  290.     # set correct depmod command for install
  291.     sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=$icever/g" $startdir/$pkgname.install
  292.     echo -e "# DO NOT EDIT THIS FILE\nALL_kver='$icever'" > $pkgdir/etc/mkinitcpio.d/$pkgname.kver
  293.    
  294.     if [ "$keep_source_code" = "0" ]; then
  295.         # remove unneeded architectures
  296.         rm -rf $pkgdir/usr/src/linux-$icever/arch/{alpha,arm,arm26,avr32,blackfin,cris,frv,h8300,ia64,m32r,m68k,m68knommu,mips,mn10300,parisc,powerpc,ppc,s390,sh,sh64,sparc,sparc64,um,v850,xtensa}
  297.     fi
  298.    
  299.     # Delete firmware directory
  300.     rm -rf $pkgdir/lib/firmware
  301. }