updated on Sat Jan 21 08:01:15 UTC 2012
[aur-mirror.git] / linux-lqx / PKGBUILD
blobbf75db44aad868032a29db45843efaa8bf17113e
1 # Maintainer: Michael Allen <mike.jallen at gmail dot com>
2 # Contributor: Michael Duell <mail@akurei.me> PGP-Key: 6EE23EBE
4 ###########################################################################################################
5 #                                          Patch and Build Options
6 ###########################################################################################################
7 _menu="n"            # menuconfig option [m = make menuconfig; x = make xconfig; n = none]
8 _config="pkg"    # "local":  make localmod config - compile ONLY probed modules - see notes below!
9                # "old":    make with old config (/proc/config.gz)
10                # "pkg":    use this package's config
11 _compress_modules="y" #compress(gzip -9) modules to save about 100MB of space
12 ###########################################################################################################
13 ## LOCALMODCONFIG OPTION
14  # As of mainline 2.6.32, running with this option will only build the modules that you currently have
15  # probed in your system VASTLY reducing the number of modules build.
16  #
17  # WARNING - make CERTAIN that all modules are modprobed BEFORE you begin making the pkg!
18  # Read, https://bbs.archlinux.org/viewtopic.php?pid=830221#p830221
19  # To keep track of which modules are needed for your specific system/hardware, give graysky's module_db script
20  # a try: http://aur.archlinux.org/packages.php?ID=41689
21  #
22  # Note that if you use graysky's script, this PKGBUILD will auto run the reload_data base for you to probe
23  # all the modules you have logged!
24  #
26 _basekernel=3.2
27 pkgver=${_basekernel}.1
28 pkgrel=2
29 _kernelname=-lqx
30 pkgname=linux${_kernelname}
31 _lqxpatchname="${pkgver}-2.patch"
32 arch=('i686' 'x86_64')
33 pkgdesc="Linux kernel and modules with Liquorix patches"
34 license=('GPL2')
35 groups=('base')
36 url="http://liquorix.net/"
37 backup=(etc/mkinitcpio.d/${pkgname}.preset)
38 depends=('coreutils' 'linux-firmware' 'module-init-tools>=3.16' 'mkinitcpio>=0.8')
39 optdepends=('crda: to set the correct wireless channels of your country')
40 if [ "$_menu" = "x" ]; then
41    makedepends=('qt')
43 options=(!strip)
44 # pwc, ieee80211 and hostap-driver26 modules are included in linux now
45 # nforce package support was abandoned by nvidia, kernel modules should cover everything now.
46 # kernel24 support is dropped since glibc24
47 replaces=('kernel24' 'kernel24-scsi' 'kernel26-scsi'
48           'alsa-driver' 'ieee80211' 'hostap-driver26'
49           'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv'
50           'zd1211' 'kvm-modules' 'iwlwifi' 'rt2x00-cvs'
51           'gspcav1' 'atl2' 'wlan-ng26' 'aufs' 'rt2500' 'kernel26-lqx')
52 install='linux-lqx.install'
53 source=(ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-${_basekernel}.tar.xz
54 http://liquorix.net/sources/${_lqxpatchname}.gz
55 http://liquorix.net/sources/${_basekernel}/config.i386
56 http://liquorix.net/sources/${_basekernel}/config.amd64
57 linux-lqx.preset)
59 provides=('linux-headers' "linux=$pkgver") # for when you have no other kernel
61 build() {
62   KARCH=x86
63   sed -i -e "s/+EXTRAVERSION = -lqx${_lqxrel}/+EXTRAVERSION =/" ${_lqxpatchname}
64   cd ${srcdir}/linux-${_basekernel}
66   # Add Liquorix patches
67   patch -Np1 -i ${srcdir}/$_lqxpatchname
68    
69   # Trying oldcfg if possible and if selected
70   if [ "$_config" = "old" ]; then
71     if [ -e /proc/config.gz ]; then
72       zcat /proc/config.gz > ./.config
73     else
74       echo "WARNING: There's no /proc/config.gz... You cannot use the old config. Aborting..."
75       exit 1
76     fi         
77   else
78     if [ "$CARCH" = "x86_64" ]; then
79       cat ../config.amd64 >./.config
80     else
81       cat ../config.i386 >./.config
82     fi
83   fi
85   if [ "${_kernelname}" != "" ]; then
86     sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
87   fi
89   # get kernel version
90   make prepare
91   _kernver="$(make kernelrelease)"
93   ### Optionally load needed modules for the make localmodconfig
94   # See http://aur.archlinux.org/packages.php?ID=41689
95   if [ $_config = "local" ]; then
96     msg "If you have modprobe_db installed, running reload_database now"
97     if [ -e /usr/bin/reload_database ]; then
98       /usr/bin/reload_database
99     fi
100     msg "Running Steven Rostedt's make localmodconfig now"
101     make localmodconfig
102   else
103     yes "" | make config
104   fi
106   if [ $_menu = "m" -o $_menu = "y" ]; then
107     msg "Running make menuconfig"
108     make menuconfig
109   fi
110   if [ $_menu = "x" ]; then
111     msg "Running make xconfig"
112     make xconfig
113   fi
115   # build!
116   make ${MAKEFLAGS} bzImage modules
118   ### package_linux
120   mkdir -p ${pkgdir}/{lib/modules,lib/firmware,boot}
121   make INSTALL_MOD_PATH=${pkgdir} modules_install
123   cp System.map ${pkgdir}/boot/System.map26${_kernelname}
124   cp arch/$KARCH/boot/bzImage ${pkgdir}/boot/vmlinuz-linux${_kernelname}
126   # add vmlinux
127   #cp vmlinux ${pkgdir}/usr/src/linux-${_kernver}
128   install -m644 -D vmlinux ${pkgdir}/usr/src/linux-${_kernver}/vmlinux
130   # install fallback mkinitcpio.conf file and preset file for kernel
131   install -m644 -D ${srcdir}/linux-lqx.preset ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
133   # set correct depmod command for install
134   sed \
135     -e  "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
136     -e  "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
137     -i ${startdir}/linux-lqx.install
138   sed \
139     -e "s|source .*|source /etc/mkinitcpio.d/linux${_kernelname}.kver|g" \
140     -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgname}.img\"|g" \
141     -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgname}-fallback.img\"|g" \
142     -i ${pkgdir}/etc/mkinitcpio.d/${pkgname}.preset
144   echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${pkgdir}/etc/mkinitcpio.d/${pkgname}.kver
145 #    -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-linux-lqx\"|g" \
146   ### package_linux-headers
148   install -D -m644 Makefile \
149     ${pkgdir}/usr/src/linux-${_kernver}/Makefile
150   install -D -m644 kernel/Makefile \
151     ${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile
152   install -D -m644 .config \
153     ${pkgdir}/usr/src/linux-${_kernver}/.config
155   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include
156   for i in acpi asm-generic config generated linux math-emu media net pcmcia scsi sound trace video xen; do
157     cp -a include/$i ${pkgdir}/usr/src/linux-${_kernver}/include/
158   done
160   # copy arch includes for external modules
161   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/x86
162   cp -a arch/x86/include ${pkgdir}/usr/src/linux-${_kernver}/arch/x86/
164   # copy files necessary for later builds, like nvidia and vmware
165   cp Module.symvers ${pkgdir}/usr/src/linux-${_kernver}
166   cp -a scripts ${pkgdir}/usr/src/linux-${_kernver}
168   # fix permissions on scripts dir
169   chmod og-w -R ${pkgdir}/usr/src/linux-${_kernver}/scripts
171   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions
172   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel
174   cp arch/$KARCH/Makefile ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
175   if [ "$CARCH" = "i686" ]; then
176     cp arch/$KARCH/Makefile_32.cpu ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/
177   fi
178   cp arch/$KARCH/kernel/asm-offsets.s ${pkgdir}/usr/src/linux-${_kernver}/arch/$KARCH/kernel/
180   # add headers for lirc package
181   # note: zc0301 removed due to compiling errors
182   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video
183   cp drivers/media/video/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/
184   for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102; do
185     mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
186     cp -a drivers/media/video/$i/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/video/$i
187   done
189   # add docbook makefile
190   install -D -m644 Documentation/DocBook/Makefile \
191     ${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile
193   # add dm headers
194   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
195   cp drivers/md/*.h  ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
197   # add inotify.h
198   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/linux
199   cp include/linux/inotify.h ${pkgdir}/usr/src/linux-${_kernver}/include/linux/
201   # add wireless headers
202   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
203   cp net/mac80211/*.h ${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/
205   # add dvb headers for external modules
206   # in reference to:
207   # http://bugs.archlinux.org/task/9912
208   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core
209   cp drivers/media/dvb/dvb-core/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/dvb-core/
211   # add dvb headers for external modules
212   # in reference to:
213   # http://bugs.archlinux.org/task/11194
214   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
215   [[ -e include/config/dvb/ ]] && cp include/config/dvb/*.h ${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/
217   # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
218   # in reference to:
219   # http://bugs.archlinux.org/task/13146
220   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
221   cp drivers/media/dvb/frontends/lgdt330x.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
222   cp drivers/media/video/msp3400-driver.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb/frontends/
224   # add xfs and shmem for aufs building
225   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs
226   mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/mm
227   cp fs/xfs/xfs_sb.h ${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h
229   # add headers for virtualbox
230   # in reference to:
231   # http://bugs.archlinux.org/task/14568
232   cp -a include/drm ${pkgdir}/usr/src/linux-${_kernver}/include/
234   # add headers for broadcom wl
235   # in reference to:
236   # http://bugs.archlinux.org/task/14568
237   cp -a include/trace ${pkgdir}/usr/src/linux-${_kernver}/include/
239   # copy in Kconfig files
240   for i in `find . -name "Kconfig*"`; do
241     mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'`
242     cp $i ${pkgdir}/usr/src/linux-${_kernver}/$i
243   done
245   chown -R root.root ${pkgdir}/usr/src/linux-${_kernver}
246   find ${pkgdir}/usr/src/linux-${_kernver} -type d -exec chmod 755 {} \;
247   cd ${pkgdir}/lib/modules/${_kernver} && \
248     (rm -f source build; ln -sf ../../../usr/src/linux-${_kernver} build)
250   msg "Removing unneeded architectures..."
251   # remove unneeded architectures
252   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}
253   msg "Removing the firmware..."
254   # remove the firmware
255   rm -rf ${pkgdir}/lib/firmware
256   if [ $_compress_modules = "y" ]; then
257     # gzip -9 all modules to save 100MB of space
258     msg "Compressing modules..."
259     find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
260   fi
263 # vim:ts=2:sw=2:expandtab
264 # oh hai thar: checksums
265 sha512sums=('77e9a52d78d6c8e951df1e166023eebe5defc5ef3c45d3ac84b613137b3c2e55cee5693d828ebd06c5034bd89ea2a5f862f55824f2b7839c9ad7212c81e3ecb0'
266             '84d7260f1de288e5ac678f47672424ecba5ef0ec36fe6a839b6add4373e84da7481d34630bcc83ee3076a5cf045df32ef86210d3c181839d0359829cbf7d8808'
267             '6aba01a05b380ee53c84258daf3e82619e97e22653ec9f160dd5324af7bd224f1d36c81611879a0e6e8465faccc606dbc1a15beba314941ce08437314a77a5b4'
268             '8461b34e4c9e8cddd8b74f2339f918db58a276c1937c9ec58d7e89531f086e1ecb38a537bf6bbfe63e8901dad0df02afdcd9bb8161433d11e1c36c491d18ba0c'
269             '75633c3778843c87b6a772551835fd0370eca68ce871c8518202dda1f88c3633e116c3886a45acd16b98e99128f5e17e39323af93e291780a8e3efea459ec06c')