]> git.ipfire.org Git - people/ms/ipfire-3.x.git/blame - kernel/kernel.nm
glibc: Add ports addon and configure options for armv5tel.
[people/ms/ipfire-3.x.git] / kernel / kernel.nm
CommitLineData
166a6c21 1###############################################################################
802ea3af
MT
2# IPFire.org - An Open Source Firewall Solution #
3# Copyright (C) - IPFire Development Team <info@ipfire.org> #
166a6c21
MT
4###############################################################################
5
15a11c5b 6name = kernel
6e9df6a3
MT
7version = 3.1.1
8release = 1
15a11c5b 9thisapp = linux-%{version}
166a6c21 10
802ea3af
MT
11maintainer = Michael Tremer <michael.tremer@ipfire.org>
12groups = System/Kernels
13url = http://www.kernel.org/
14license = GPLv2
15summary = The Linux kernel.
166a6c21 16
802ea3af 17description
166a6c21
MT
18 The kernel package contains the Linux kernel (vmlinuz), the core of any \
19 Linux operating system. The kernel handles the basic functions \
20 of the operating system: memory allocation, process allocation, device \
21 input and output, etc.
802ea3af 22end
166a6c21 23
802ea3af 24# Version helper variables.
bcf38aec
MT
25localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
26fullver = %{version}-%{localversion}
802ea3af 27
fe014038
MT
28source_dl = http://www.kernel.org/pub/linux/kernel/v3.x/
29sources = %{thisapp}.tar.xz
802ea3af
MT
30
31build
ebeed08a
MT
32 # icecream cannot be used to compile the kernel.
33 # Because the PaX patch does use GCC plugins to harden the kernel which
34 # are not available on the remote compilers, we need to disable it here.
35 export ICECC=no
36
802ea3af 37 requires
bcf38aec
MT
38 binutils-devel
39 elfutils-devel
6e9df6a3 40 gettext
802ea3af
MT
41 module-init-tools
42 ncurses-devel
ebeed08a 43 net-tools
bcf38aec 44 newt-devel
6e9df6a3 45 pciutils-devel
802ea3af 46 perl
bcf38aec 47 python-devel
ebeed08a 48 slang-devel
bcf38aec
MT
49 xz-lzma-compat
50 end
51
52 # A list of kernels to build.
53 kernels = default
54
55 if "%{DISTRO_ARCH}" == "i686"
56 # Build a PAE-enabled kernel for the i686 architecture.
57 kernels += PAE
58
59 kernel_arch = x86
60 kernel_image = arch/%{kernel_arch}/boot/bzImage
61 kernel_target = bzImage
802ea3af
MT
62 end
63
64 prepare_cmds
802ea3af
MT
65 rm -f %{DIR_APP}/localversion-grsec
66
67 sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
68
69 cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \
70 drivers/video/logo/logo_linux_clut224.ppm
71
bcf38aec
MT
72 # Get rid of unwanted files resulting from patch fuzz.
73 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
74
75 # Remove unnecessary SCM files.
76 find . -name .gitignore -exec rm -f {} \; >/dev/null
77
ebeed08a
MT
78 # This prevents scripts/setlocalversion from mucking with our version numbers.
79 touch .scmversion
80
bcf38aec
MT
81 mkdir -pv configs
82 configure_kernel() {
83 local flavour=${1}
84 local suffix
85 if [ "${flavour}" != "default" ]; then
86 suffix="-${flavour}"
87 fi
88
89 # This is the place, where the configuration files
90 # should be dynamically generated.
91 # For now, we just copy pregenerated ones.
92 cp %{DIR_SOURCE}/config.%{arch}${suffix} .config
802ea3af 93
bcf38aec
MT
94 make ARCH=%{kernel_arch} oldnoconfig
95 mv .config configs/config.${flavour}
96 }
97
98 # Generate configuration files for all kernels we are going to
99 # build.
100 for kernel in %{kernels}; do
101 configure_kernel ${kernel}
102 done
802ea3af
MT
103 end
104
105 build
bcf38aec
MT
106 build_kernel() {
107 local flavour=${1}
108 local suffix
109 local localversion="%{localversion}"
110 local fullversion="%{fullver}"
111 if [ "${flavour}" != "default" ]; then
112 suffix="-${flavour}"
113 localversion="${localversion}.${flavour}"
114 fullversion="${fullversion}.${flavour}"
115 fi
802ea3af 116
ebeed08a
MT
117 # Label the build.
118 sed -i Makefile \
119 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
120
bcf38aec
MT
121 # Clean up the source tree.
122 make mrproper
802ea3af 123
bcf38aec
MT
124 # Install configuration file.
125 cp configs/config.${flavour} .config
802ea3af 126
bcf38aec 127 # Run the build.
ebeed08a 128 make ARCH=%{kernel_arch} oldnoconfig >/dev/null
bcf38aec
MT
129 make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
130
131 # Install the results.
132 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
133 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
134 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
135 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
136
137 # Create empty initramfs (20M).
138 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
139
140 # Install modules.
141 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
142 KERNELRELEASE=${fullversion} modules_install
6e9df6a3
MT
143 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
144 KERNELRELEASE=${fullversion} vdso_install
802ea3af 145
bcf38aec
MT
146 # Create an empty settings file for dracut
147 mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d
148 echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
149 > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
802ea3af 150
bcf38aec
MT
151 # And now the scary looking part.
152 #
153 # Recreate source and build links.
154 rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source}
155 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build
156 ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source
802ea3af 157
bcf38aec
MT
158 # Create dirs for extra modules.
159 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra
802ea3af 160
bcf38aec
MT
161 cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
162 %{BUILDROOT}/lib/modules/${fullversion}/build
163 cp -v Module.symvers System.map \
164 %{BUILDROOT}/lib/modules/${fullversion}/build
165 rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include}
166
167 cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build
168 cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build
169 find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \
170 -exec rm -vf {} \;
171
172 cp -va --parents arch/%{kernel_arch}/include \
173 %{BUILDROOT}/lib/modules/${fullversion}/build
174 cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include
175
176 # Make sure we can build external modules.
177 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \
178 %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h
179 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
180 %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h
181 cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
182 %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf
183
184 find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \
185 xargs chmod u+x
186
bcf38aec
MT
187 # Move all development files to /usr/src.
188 mkdir -pv %{BUILDROOT}/usr/src/kernels
189 mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \
190 %{BUILDROOT}/usr/src/kernels/${fullversion}
191 ln -svf ../../../usr/src/kernels/${fullversion} \
192 %{BUILDROOT}/lib/modules/${fullversion}/build
193
194 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
195 }
196
197 for kernel in %{kernels}; do
198 build_kernel ${kernel}
199 done
6e9df6a3
MT
200
201 # Build tools.
202 # cpupower
203 chmod +x tools/power/cpupower/utils/version-gen.sh
204 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
205
206 cd tools/power/cpupower/debug/i386
207 make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
208 cd -
bcf38aec
MT
209 end
210
211 install
802ea3af
MT
212 # Install the header files
213 make ARCH=x86 INSTALL_HDR_PATH=dest headers_install
214 mkdir -pv %{BUILDROOT}/usr/include
215 find dest/include \( -name .install -o -name ..install.cmd \) -delete
216 cp -rv dest/include/* %{BUILDROOT}/usr/include
217
218 # Glibc provides these headers
219 rm -rfv %{BUILDROOT}/usr/include/scsi \
220 %{BUILDROOT}/usr/include/asm*/atomic.h \
221 %{BUILDROOT}/usr/include/asm*/io.h \
222 %{BUILDROOT}/usr/include/asm*/irq.h
223
15a11c5b
MT
224 # Remove all firmware files which are distributed by linux-firmware
225 rm -rfv %{BUILDROOT}/lib/firmware
bcf38aec
MT
226
227 # Install tools.
ebeed08a
MT
228 # XXX Man pages cannot be created because they need asciidoc.
229 make -C tools/perf DESTDIR=%{BUILDROOT} \
230 HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
231 install #install-man
6e9df6a3
MT
232
233 # cpupower
234 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=/usr/lib \
235 mandir=/usr/share/man CPUFREQ_BENCH=false install
236 cd tools/power/cpupower/debug/i386
237 install -m 755 centrino-decode %{BUILDROOT}/usr/bin/centrino-decode
238 install -m 755 powernow-k8-decode %{BUILDROOT}/usr/bin/powernow-k8-decode
239 cd -
240 chmod 0755 %{BUILDROOT}/usr/lib/libcpupower.so*
802ea3af
MT
241 end
242end
243
244packages
bcf38aec 245 template KERNEL
aa3ab846 246 kernel_name = kernel
bcf38aec
MT
247 kernel_release = %{fullver}
248
249 summary = The Linux kernel %{kernel_release}.
250
aa3ab846 251 prerequires = dracut grubby module-init-tools
bcf38aec 252 provides = kernel
802ea3af 253 requires
670864d7 254 %{prerequires}
802ea3af
MT
255 linux-firmware
256 end
ad1ea534 257
bcf38aec
MT
258 files
259 /boot/System.map-%{kernel_release}
260 /boot/vmlinuz-%{kernel_release}
261 /boot/initramfs-%{kernel_release}.img
262 /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
263 /lib/modules/%{kernel_release}
264 end
265
aa3ab846
MT
266 _posttrans
267 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release} || exit $?
268 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release} || exit $?
269 end
270
ad1ea534 271 script posttransin
aa3ab846
MT
272 %{_posttrans}
273 end
274
275 script posttransup
276 %{_posttrans}
277 end
278
279 script postin
280 /sbin/new-kernel-pkg --package kernel%{?-v:-%{-v*}} --install %{KVERREL}%{?-v:.%{-v*}}
281 end
282
283 script postup
284 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
285 end
286
287 script preun
288 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
bcf38aec
MT
289 end
290 end
291
292 template KERNELDEVEL
293 kernel_release = %{fullver}
294
295 summary = Development files of kernel-%{kernel_release}.
296 description
297 %{summary}
298
299 Install this package in order to compile modules for
300 kernel release %{kernel_release}.
301 end
302
303 filter_requires
304 perl>=[0-9]\:.*
ad1ea534
MT
305 end
306
bcf38aec
MT
307 files
308 /lib/modules/%{kernel_release}/build
309 /lib/modules/%{kernel_release}/source
310 /usr/src/kernels/%{kernel_release}
ad1ea534 311 end
802ea3af 312 end
bcf38aec
MT
313
314 package kernel
315 template KERNEL
58dc2060 316
aa3ab846 317 kernel_name = kernel
58dc2060 318 kernel_release = %{fullver}
bcf38aec
MT
319 end
320
321 package kernel-devel
322 template KERNELDEVEL
58dc2060 323
aa3ab846 324 kernel_name = kernel
58dc2060 325 kernel_release = %{fullver}
bcf38aec
MT
326 end
327
328 package kernel-PAE
329 template KERNEL
330
aa3ab846 331 kernel_name = kernel-PAE
bcf38aec
MT
332 kernel_release = %{fullver}.PAE
333 end
334
335 package kernel-PAE-devel
336 template KERNELDEVEL
337
aa3ab846 338 kernel_name = kernel-PAE
bcf38aec
MT
339 kernel_release = %{fullver}.PAE
340 end
ebeed08a 341
802ea3af 342 package kernel-headers
802ea3af
MT
343 summary = Header files of the kernel release %{fullver}.
344 desciption = %{summary}
c698e4be
MT
345
346 files
347 /usr/include
348 end
802ea3af 349 end
bcf38aec 350
ebeed08a
MT
351 package kernel-tools
352 summary = Assortment of tools for the Linux kernel.
353 description = %{summary}
354
355 filter_requires
356 perl>=[0-9]\:.*
357 end
358
359 files
360 /
361 !/boot
362 !/lib/modules
363 !/usr/include
364 !/usr/src
365 end
366 end
802ea3af 367end