python-texttable: update to 1.3.1
[void-packages.git] / srcpkgs / linux4.1 / template
blobde5f04a29b0c6d51b50ce6fa77abb694e9991e43
1 # Template file for 'linux4.1'
2 pkgname=linux4.1
3 version=4.1.43
4 revision=1
5 wrksrc="linux-${version}"
6 maintainer="Juan RP <xtraeme@voidlinux.eu>"
7 homepage="https://www.kernel.org"
8 license="GPL-2"
9 short_desc="The Linux kernel and modules (${version%.*} series)"
10 distfiles="${KERNEL_SITE}/kernel/v4.x/linux-${version}.tar.xz"
11 checksum=2c018c3f499fab25f8854734665dd44c56adcfba4291999f0aa31ca83110398a
13 nocross=yes
14 nodebug=yes
15 nostrip=yes
16 noverifyrdeps=yes
17 noshlibprovides=yes
18 preserve=yes
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.
26 mutable_files="
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
39 do_configure() {
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).
43         local arch _args
45         case "$XBPS_TARGET_MACHINE" in
46                 i686*) arch=i386;;
47                 x86_64*) arch=x86_64;;
48                 armv7*) arch=arm
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
52                         ;;
53                 aarch64*) arch=arm64;;
54         esac
56         if [ "$CROSS_BUILD" ]; then
57                 _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
58         fi
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
68         else
69                 msg_normal "Defaulting to 'defconfig and allmodconfig'.\n"
70                 make ${makejobs} ARCH=$arch ${_args} defconfig
71                 make ${makejobs} ARCH=$arch ${_args} allmodconfig
72         fi
73         # Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
74         sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
76 do_build() {
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;;
84         esac
85         if [ "$CROSS_BUILD" ]; then
86                 _cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-"
87         fi
89         export LDFLAGS=
90         make ARCH=$arch ${_cross} ${makejobs} prepare
91         make ARCH=$arch ${_cross} ${makejobs} ${_args}
93 do_install() {
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;;
99                 armv7*) arch=arm;;
100                 aarch64*) arch=arm64;;
101         esac
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}
114         case "$arch" in
115                 x86)
116                         vinstall arch/x86/boot/bzImage 644 boot vmlinuz-${_kernver}
117                         ;;
118                 arm)
119                         vinstall arch/arm/boot/zImage 644 boot
120                         vmkdir boot/dtbs
121                         cp arch/arm/boot/dts/*.dtb ${DESTDIR}/boot/dtbs
122                         ;;
123                 arm64)
124                         vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver}
125                         # vmkdir boot/dtbs
126                         # cp arch/arm64/boot/dts/*.dtb ${DESTDIR}/boot/dtbs
127                         ;;
128         esac
130         # Switch to /usr.
131         vmkdir usr
132         mv ${DESTDIR}/lib ${DESTDIR}/usr
134         cd ${DESTDIR}/usr/lib/modules/${_kernver}
135         rm -f source build
136         ln -sf ../../../src/kernel-headers-${_kernver} build
138         cd ${wrksrc}
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
151                 fi
152         done
154         cd ${wrksrc}
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
167         fi
168         if [ "$arch" = "x86" ]; then
169                 mkdir -p ${hdrdest}/arch/x86/kernel
170                 cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel
171         fi
173         # add headers for lirc package
174         # pci
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}
178         done
179         # usb
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}
183         done
184         # i2c
185         mkdir -p ${hdrdest}/drivers/media/i2c
186         cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
187         for i in cx25840; do
188                 mkdir -p ${hdrdest}/drivers/media/i2c/${i}
189                 cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
190         done
192         # Add docbook makefile
193         install -Dm644 Documentation/DocBook/Makefile \
194                 ${hdrdest}/Documentation/DocBook/Makefile
196         # Add md headers
197         mkdir -p ${hdrdest}/drivers/md
198         cp drivers/md/*.h ${hdrdest}/drivers/md
200         # Add inotify.h
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/
220         # add dvb headers
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.*||')
236                 cp $i ${hdrdest}/$i
237         done
239         # Remove unneeded architectures
240         case "$arch" in
241                 i386|x86_64) _args="arm*";;
242                 arm|arm64) _args="x86*";;
243         esac
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}
247         done
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}
252         (
253         cd ${DESTDIR}
254         export DESTDIR
255         find ./ -name '*.ko' -print0 | \
256                 xargs -0r -n1 -P ${XBPS_MAKEJOBS} ${FILESDIR}/mv-debug
257         )
258         # ... and run depmod again.
259         depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
262 linux4.1-headers_package() {
263         preserve=yes
264         nostrip=yes
265         noverifyrdeps=yes
266         noshlibprovides=yes
267         short_desc+=" - source headers for 3rd party modules"
268         pkg_install() {
269                 vmove usr/src
270                 vmove usr/lib/modules/${_kernver}/build
271         }
273 linux4.1-dbg_package() {
274         preserve=yes
275         nostrip=yes
276         noverifyrdeps=yes
277         noshlibprovides=yes
278         repository=debug
279         short_desc+=" - debugging symbols"
280         pkg_install() {
281                 vmove usr/lib/debug
282         }