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.
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
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!
27 pkgver=${_basekernel}.1
30 pkgname=linux${_kernelname}
31 _lqxpatchname="${pkgver}-2.patch"
32 arch=('i686' 'x86_64')
33 pkgdesc="Linux kernel and modules with Liquorix patches"
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
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
59 provides=('linux-headers' "linux=$pkgver") # for when you have no other kernel
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
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
74 echo "WARNING: There's no /proc/config.gz... You cannot use the old config. Aborting..."
78 if [ "$CARCH" = "x86_64" ]; then
79 cat ../config.amd64 >./.config
81 cat ../config.i386 >./.config
85 if [ "${_kernelname}" != "" ]; then
86 sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
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
100 msg "Running Steven Rostedt's make localmodconfig now"
106 if [ $_menu = "m" -o $_menu = "y" ]; then
107 msg "Running make menuconfig"
110 if [ $_menu = "x" ]; then
111 msg "Running make xconfig"
116 make ${MAKEFLAGS} bzImage modules
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}
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
135 -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/g" \
136 -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" \
137 -i ${startdir}/linux-lqx.install
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/
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/
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
189 # add docbook makefile
190 install -D -m644 Documentation/DocBook/Makefile \
191 ${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile
194 mkdir -p ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
195 cp drivers/md/*.h ${pkgdir}/usr/src/linux-${_kernver}/drivers/md
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
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
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
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
231 # http://bugs.archlinux.org/task/14568
232 cp -a include/drm ${pkgdir}/usr/src/linux-${_kernver}/include/
234 # add headers for broadcom wl
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
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 {} \;
263 # vim:ts=2:sw=2:expandtab
264 # oh hai thar: checksums
265 sha512sums=('77e9a52d78d6c8e951df1e166023eebe5defc5ef3c45d3ac84b613137b3c2e55cee5693d828ebd06c5034bd89ea2a5f862f55824f2b7839c9ad7212c81e3ecb0'
266 '84d7260f1de288e5ac678f47672424ecba5ef0ec36fe6a839b6add4373e84da7481d34630bcc83ee3076a5cf045df32ef86210d3c181839d0359829cbf7d8808'
267 '6aba01a05b380ee53c84258daf3e82619e97e22653ec9f160dd5324af7bd224f1d36c81611879a0e6e8465faccc606dbc1a15beba314941ce08437314a77a5b4'
268 '8461b34e4c9e8cddd8b74f2339f918db58a276c1937c9ec58d7e89531f086e1ecb38a537bf6bbfe63e8901dad0df02afdcd9bb8161433d11e1c36c491d18ba0c'
269 '75633c3778843c87b6a772551835fd0370eca68ce871c8518202dda1f88c3633e116c3886a45acd16b98e99128f5e17e39323af93e291780a8e3efea459ec06c')