blob: ffc97ed97a4b5cf7162c0264641375cd1fa92b9c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
|
# Template file for 'linux3.16'
#
pkgname=linux3.16
version=3.16.0
revision=1
wrksrc="linux-${version%.*}"
maintainer="John Galt <johngaltfirstrun@gmail.com>"
homepage="http://www.kernel.org"
license="GPL-2"
short_desc="The Linux kernel and modules (${version%.*} series)"
distfiles="http://www.kernel.org/pub/linux/kernel/v3.x/linux-${version%.*}.tar.xz"
checksum=4813ad7927a7d92e5339a873ab16201b242b2748934f12cb5df9ba2cfe1d77a0
_kernver="${version}_${revision}"
nostrip=yes
noverifyrdeps=yes
preserve=yes
only_for_archs="i686 x86_64"
makedepends="bc perl kmod>=11_2 libressl-openssl elfutils"
triggers="kernel-hooks"
# These files could be modified when an external module is built.
mutable_files="
/usr/lib/modules/${_kernver}/modules.dep
/usr/lib/modules/${_kernver}/modules.dep.bin
/usr/lib/modules/${_kernver}/modules.symbols
/usr/lib/modules/${_kernver}/modules.symbols.bin
/usr/lib/modules/${_kernver}/modules.alias
/usr/lib/modules/${_kernver}/modules.alias.bin
/usr/lib/modules/${_kernver}/modules.devname"
do_configure() {
# If there's a file called <arch>-dotconfig, use it to
# configure the kernel; otherwise use arch defaults and all stuff
# as modules (defconfig+allmodconfig).
local arch
if [ "$XBPS_TARGET_MACHINE" != "x86_64" ]; then
arch=i386
else
arch=x86_64
fi
if [ -f ${FILESDIR}/${arch}-dotconfig-custom ]; then
msg_normal "Detected a custom .config file for your arch, using it.\n"
cp -f ${FILESDIR}/${arch}-dotconfig-custom .config
make ${makejobs} oldconfig
elif [ -f ${FILESDIR}/${arch}-dotconfig ]; then
msg_normal "Detected a .config file for your arch, using it.\n"
cp -f ${FILESDIR}/${arch}-dotconfig .config
make ${makejobs} oldconfig
else
msg_normal "Defaulting to 'defconfig and allmodconfig'.\n"
make ${makejobs} defconfig
make ${makejobs} allmodconfig
fi
# Always use our revision to CONFIG_LOCALVERSION to match our pkg version.
sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config
}
do_build() {
# Override EXTRAVERSION because we can't have dashes in kernel name
make EXTRAVERSION=${_patchver} ${makejobs} prepare
make EXTRAVERSION=${_patchver} ${makejobs} bzImage modules
}
do_install() {
local arch hdrdest
if [ "$XBPS_TARGET_MACHINE" != "x86_64" ]; then
arch=i386
else
arch=x86_64
fi
# Run depmod after compressing modules.
sed -i '2iexit 0' scripts/depmod.sh
# Install kernel, firmware and modules
make ${makejobs} INSTALL_MOD_PATH=${DESTDIR} modules_install
hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver}
install -Dm644 .config ${DESTDIR}/boot/config-${_kernver}
install -Dm644 arch/x86/boot/bzImage \
${DESTDIR}/boot/vmlinuz-${_kernver}
install -Dm644 System.map \
${DESTDIR}/boot/System.map-${_kernver}
# Switch to /usr.
vmkdir usr
mv ${DESTDIR}/lib ${DESTDIR}/usr
cd ${DESTDIR}/usr/lib/modules/${_kernver}
rm -f source build
ln -sf ../../../src/kernel-headers-${_kernver} build
cd ${wrksrc}
# Install required headers to build external modules
install -Dm644 Makefile ${hdrdest}/Makefile
install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile
install -Dm644 .config ${hdrdest}/.config
mkdir -p ${hdrdest}/include
# Remove firmware stuff provided by the "linux-firmware" pkg.
rm -rf ${DESTDIR}/usr/lib/firmware
for i in acpi asm-generic config crypto drm generated linux math-emu \
media net pcmcia scsi sound trace uapi video xen; do
if [ -d include/$i ]; then
cp -a include/$i ${hdrdest}/include
fi
done
cd ${wrksrc}
mkdir -p ${hdrdest}/arch/x86
cp -a arch/x86/include ${hdrdest}/arch/x86
# Copy files necessary for later builds, like nvidia and vmware
cp Module.symvers ${hdrdest}
cp -a scripts ${hdrdest}
mkdir -p ${hdrdest}/arch/x86/kernel
cp arch/x86/Makefile ${hdrdest}/arch/x86
if [ "$arch" = "i386" ]; then
cp arch/x86/Makefile_32.cpu ${hdrdest}/arch/x86
fi
cp arch/x86/kernel/asm-offsets.s ${hdrdest}/arch/x86/kernel
# add headers for lirc package
# pci
for i in bt8xx cx88 saa7134; do
mkdir -p ${hdrdest}/drivers/media/pci/${i}
cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i}
done
# usb
for i in cpia2 em28xx pwc; do
mkdir -p ${hdrdest}/drivers/media/usb/${i}
cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i}
done
# i2c
mkdir -p ${hdrdest}/drivers/media/i2c
cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c
for i in cx25840; do
mkdir -p ${hdrdest}/drivers/media/i2c/${i}
cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i}
done
# Add docbook makefile
install -Dm644 Documentation/DocBook/Makefile \
${hdrdest}/Documentation/DocBook/Makefile
# Add md headers
mkdir -p ${hdrdest}/drivers/md
cp drivers/md/*.h ${hdrdest}/drivers/md
# Add inotify.h
mkdir -p ${hdrdest}/include/linux
cp include/linux/inotify.h ${hdrdest}/include/linux
# Add wireless headers
mkdir -p ${hdrdest}/net/mac80211/
cp net/mac80211/*.h ${hdrdest}/net/mac80211
# add dvb headers for external modules
mkdir -p ${hdrdest}/drivers/media/dvb-core
cp drivers/media/dvb-core/*.h ${hdrdest}/drivers/media/dvb-core/
mkdir -p ${hdrdest}/include/config/dvb/
cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/
# add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
mkdir -p ${hdrdest}/drivers/media/dvb-frontends
cp drivers/media/dvb-frontends/lgdt330x.h \
${hdrdest}/drivers/media/dvb-frontends/
cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/
# add dvb headers
mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb
cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/
mkdir -p ${hdrdest}/drivers/media/dvb-frontends
cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/
mkdir -p ${hdrdest}/drivers/media/tuners
cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/
# Add xfs and shmem for aufs building
mkdir -p ${hdrdest}/fs/xfs
mkdir -p ${hdrdest}/mm
cp fs/xfs/xfs_sb.h ${hdrdest}/fs/xfs/xfs_sb.h
# Copy in Kconfig files
for i in $(find . -name "Kconfig*"); do
mkdir -p ${hdrdest}/$(echo $i | sed 's|/Kconfig.*||')
cp $i ${hdrdest}/$i
done
# Remove unneeded architectures
for arch in alpha arm* avr32 blackfin cris frv h8300 \
ia64 m* p* s* um v850 xtensa; do
rm -rf ${hdrdest}/arch/${arch}
done
# Compress all modules with gzip to save a few MBs.
msg_normal "$pkgver: compressing kernel modules with gzip, please wait...\n"
find ${DESTDIR} -name '*.ko' -exec gzip -9 {} \;
# ... and run depmod again.
depmod -b ${DESTDIR}/usr -F System.map ${_kernver}
}
linux3.16-headers_package() {
preserve=yes
nostrip=yes
noverifyrdeps=yes
short_desc+=" - source headers for 3rd party modules"
pkg_install() {
vmove usr/src
vmove usr/lib/modules/${_kernver}/build
}
}
|