1 # Template file for 'linux4.1'
5 wrksrc="linux-${version}"
6 maintainer="Juan RP <xtraeme@voidlinux.eu>"
7 homepage="https://www.kernel.org"
9 short_desc="The Linux kernel and modules (${version%.*} series)"
10 distfiles="${KERNEL_SITE}/kernel/v4.x/linux-${version}.tar.xz"
11 checksum=2c018c3f499fab25f8854734665dd44c56adcfba4291999f0aa31ca83110398a
20 only_for_archs="i686 i686-musl x86_64 x86_64-musl armv7l armv7l-musl aarch64 aarch64-musl"
21 hostmakedepends="bc perl kmod uboot-mkimage"
22 triggers="kernel-hooks"
24 _kernver="${version}_${revision}"
25 # These files could be modified when an external module is built.
27 /usr/lib/modules/${_kernver}/modules.builtin.bin
28 /usr/lib/modules/${_kernver}/modules.softdep
29 /usr/lib/modules/${_kernver}/modules.dep
30 /usr/lib/modules/${_kernver}/modules.dep.bin
31 /usr/lib/modules/${_kernver}/modules.symbols
32 /usr/lib/modules/${_kernver}/modules.symbols.bin
33 /usr/lib/modules/${_kernver}/modules.alias
34 /usr/lib/modules/${_kernver}/modules.alias.bin
35 /usr/lib/modules/${_kernver}/modules.devname"
37 export CCACHE_DISABLE=1
40 # If there's a file called <arch>-dotconfig, use it to
41 # configure the kernel; otherwise use arch defaults and all stuff
42 # as modules (defconfig+allmodconfig).
45 case "$XBPS_TARGET_MACHINE" in
47 x86_64*) arch=x86_64;;
49 $XBPS_FETCH_CMD http://rcn-ee.com/deb/sid-armhf/v${version}-armv7-x2/patch-${version}-armv7-x2.diff.gz
50 gunzip patch-${version}-armv7-x2.diff.gz
51 patch -Np1 -i patch-${version}-armv7-x2.diff
53 aarch64*) arch=arm64;;
56 if [ "$CROSS_BUILD" ]; then
57 _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
60 if [ -f ${FILESDIR}/${arch}-dotconfig-custom ]; then
61 msg_normal "Detected a custom .config file for your arch, using it.\n"
62 cp -f ${FILESDIR}/${arch}-dotconfig-custom .config
63 make ${makejobs} ARCH=$arch ${_args} oldconfig
64 elif [ -f ${FILESDIR}/${arch}-dotconfig ]; then
65 msg_normal "Detected a .config file for your arch, using it.\n"
66 cp -f ${FILESDIR}/${arch}-dotconfig .config
67 make ${makejobs} ARCH=$arch ${_args} oldconfig
69 msg_normal "Defaulting to 'defconfig and allmodconfig'.\n"
70 make ${makejobs} ARCH=$arch ${_args} defconfig
71 make ${makejobs} ARCH=$arch ${_args} allmodconfig
73 # Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
74 sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
77 local arch _cross _args
79 case "$XBPS_TARGET_MACHINE" in
80 i686*) _args="bzImage modules"; arch=i386;;
81 x86_64*) _args="bzImage modules"; arch=x86_64;;
82 armv7*) _args="zImage modules dtbs"; arch=arm;;
83 aarch64*) _args="Image modules dtbs"; arch=arm64;;
85 if [ "$CROSS_BUILD" ]; then
86 _cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
90 make ARCH=$arch ${_cross} ${makejobs} prepare
91 make ARCH=$arch ${_cross} ${makejobs} ${_args}
94 local arch subarch _args hdrdest
96 case "$XBPS_TARGET_MACHINE" in
97 i686*) arch=x86; subarch=i386;;
98 x86_64*) arch=x86; subarch=x86_64;;
100 aarch64*) arch=arm64;;
103 # Run depmod after compressing modules.
104 sed -i '2iexit 0' scripts/depmod.sh
106 # Install kernel, firmware and modules
107 make ${makejobs} INSTALL_MOD_PATH=${DESTDIR} modules_install
109 hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver}
111 vinstall .config 644 boot config-${_kernver}
112 vinstall System.map 644 boot System.map-${_kernver}
116 vinstall arch/x86/boot/bzImage 644 boot vmlinuz-${_kernver}
119 vinstall arch/arm/boot/zImage 644 boot
121 cp arch/arm/boot/dts/*.dtb ${DESTDIR}/boot/dtbs
124 vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver}
126 # cp arch/arm64/boot/dts/*.dtb ${DESTDIR}/boot/dtbs
132 mv ${DESTDIR}/lib ${DESTDIR}/usr
134 cd ${DESTDIR}/usr/lib/modules/${_kernver}
136 ln -sf ../../../src/kernel-headers-${_kernver} build
139 # Install required headers to build external modules
140 install -Dm644 Makefile ${hdrdest}/Makefile
141 install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
142 install -Dm644 .config ${hdrdest}/.config
143 mkdir -p ${hdrdest}/include
144 # Remove firmware stuff provided by the "linux-firmware" pkg.
145 rm -rf ${DESTDIR}/usr/lib/firmware
147 for i in acpi asm-generic config crypto drm generated linux math-emu \
148 media net pcmcia scsi sound trace uapi video xen; do
149 if [ -d include/$i ]; then
150 cp -a include/$i ${hdrdest}/include
155 mkdir -p ${hdrdest}/arch/${arch}
156 cp -a arch/${arch}/include ${hdrdest}/arch/${arch}
158 # Copy files necessary for later builds, like nvidia and vmware
159 cp Module.symvers ${hdrdest}
160 cp -a scripts ${hdrdest}
162 mkdir -p ${hdrdest}/arch/${arch}/kernel
163 cp arch/${arch}/Makefile ${hdrdest}/arch/${arch}
164 if [ "$subarch" = "i386" ]; then
165 mkdir -p ${hdrdest}/arch/x86
166 cp arch/x86/Makefile_32.cpu ${hdrdest}/arch/x86
168 if [ "$arch" = "x86" ]; then
169 mkdir -p ${hdrdest}/arch/x86/kernel
170 cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel
173 # add headers for lirc package
175 for i in bt8xx cx88 saa7134; do
176 mkdir -p ${hdrdest}/drivers/media/pci/${i}
177 cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i}
180 for i in cpia2 em28xx pwc; do
181 mkdir -p ${hdrdest}/drivers/media/usb/${i}
182 cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i}
185 mkdir -p ${hdrdest}/drivers/media/i2c
186 cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
188 mkdir -p ${hdrdest}/drivers/media/i2c/${i}
189 cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
192 # Add docbook makefile
193 install -Dm644 Documentation/DocBook/Makefile \
194 ${hdrdest}/Documentation/DocBook/Makefile
197 mkdir -p ${hdrdest}/drivers/md
198 cp drivers/md/*.h ${hdrdest}/drivers/md
201 mkdir -p ${hdrdest}/include/linux
202 cp include/linux/inotify.h ${hdrdest}/include/linux
204 # Add wireless headers
205 mkdir -p ${hdrdest}/net/mac80211/
206 cp net/mac80211/*.h ${hdrdest}/net/mac80211
208 # add dvb headers for external modules
209 mkdir -p ${hdrdest}/drivers/media/dvb-core
210 cp drivers/media/dvb-core/*.h ${hdrdest}/drivers/media/dvb-core/
211 mkdir -p ${hdrdest}/include/config/dvb/
212 cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/
214 # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
215 mkdir -p ${hdrdest}/drivers/media/dvb-frontends
216 cp drivers/media/dvb-frontends/lgdt330x.h \
217 ${hdrdest}/drivers/media/dvb-frontends/
218 cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/
221 mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb
222 cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/
223 mkdir -p ${hdrdest}/drivers/media/dvb-frontends
224 cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/
225 mkdir -p ${hdrdest}/drivers/media/tuners
226 cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/
228 # Add xfs and shmem for aufs building
229 mkdir -p ${hdrdest}/fs/xfs/libxfs
230 mkdir -p ${hdrdest}/mm
231 cp fs/xfs/libxfs/xfs_sb.h ${hdrdest}/fs/xfs/libxfs/xfs_sb.h
233 # Copy in Kconfig files
234 for i in $(find . -name "Kconfig*"); do
235 mkdir -p ${hdrdest}/$(echo $i | sed 's|/Kconfig.*||')
239 # Remove unneeded architectures
241 i386|x86_64) _args="arm*";;
242 arm|arm64) _args="x86*";;
244 for arch in alpha avr32 blackfin cris frv h8300 \
245 ia64 m* p* s* um v850 xtensa ${_args}; do
246 rm -rf ${hdrdest}/arch/${arch}
249 # Extract debugging symbols
250 msg_normal "$pkgver: extracting debug info, please wait...\n"
251 install -Dm644 vmlinux ${DESTDIR}/usr/lib/debug/boot/vmlinux-${_kernver}
255 find ./ -name '*.ko' -print0 | \
256 xargs -0r -n1 -P ${XBPS_MAKEJOBS} ${FILESDIR}/mv-debug
258 # ... and run depmod again.
259 depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
262 linux4.1-headers_package() {
267 short_desc+=" - source headers for 3rd party modules"
270 vmove usr/lib/modules/${_kernver}/build
273 linux4.1-dbg_package() {
279 short_desc+=" - debugging symbols"