]> git.ipfire.org Git - people/amarx/ipfire-3.x.git/blame - kernel/kernel.nm
Dev86: Forgot to change version number.
[people/amarx/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
5e856224
MT
7version = 3.3.6
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
4c928ab7
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
166a6c21 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
662414a4 38 asciidoc
bcf38aec
MT
39 binutils-devel
40 elfutils-devel
fe2de317 41 gcc-plugin-devel
6e9df6a3 42 gettext
802ea3af 43 ncurses-devel
ebeed08a 44 net-tools
802ea3af 45 perl
bcf38aec 46 python-devel
662414a4 47 xmlto
bcf38aec 48 xz-lzma-compat
4c928ab7
MT
49
50 /sbin/depmod
bcf38aec
MT
51 end
52
13c9d848
MT
53 tools_cpupower_requires
54 newt-devel
fe2de317 55 pciutils-devel
13c9d848
MT
56 slang-devel
57 end
58
bcf38aec 59 # A list of kernels to build.
45088e83 60 kernels =
bcf38aec 61
45088e83
MT
62 # Should we build cpupower?
63 build_cpupower = 1
64
65 kernel_target = bzImage
bcf38aec 66 if "%{DISTRO_ARCH}" == "i686"
1c9b6c79 67 # Build a default and legacy kernel for the
45088e83
MT
68 # i686 architecture.
69 build_kernel_default = 1
1c9b6c79 70 build_kernel_legacy = 1
bcf38aec
MT
71
72 kernel_arch = x86
73 kernel_image = arch/%{kernel_arch}/boot/bzImage
45088e83
MT
74
75 end
76
c112b2e3
MT
77 if "%{DISTRO_ARCH}" == "x86_64"
78 build_kernel_default = 1
79
80 kernel_arch = x86
81 kernel_image = arch/%{kernel_arch}/boot/bzImage
82 end
83
45088e83 84 if "%{DISTRO_ARCH}" == "armv5tel"
4c928ab7
MT
85 # ERROR Currently all kernel images are disabled, because they
86 # won't build with the grsecurity patch.
87
45088e83 88 # Build versatile kernel.
4c928ab7
MT
89 #build_kernel_versatile = 1
90
91 # Build a kernel for Marvell Kirkwood-based devices.
92 #build_kernel_kirkwood = 1
45088e83
MT
93
94 kernel_arch = arm
95 kernel_image = arch/%{kernel_arch}/boot/zImage
96
97 # ARM does not support cpupower.
98 build_cpupower = 0
99 end
100
13c9d848 101 if "%{DISTRO_ARCH}" == "armv7hl"
4c928ab7
MT
102 # Build a kernel for TI OMAP SoCs.
103 build_kernel_omap = 1
13c9d848
MT
104
105 kernel_arch = arm
4c928ab7 106 kernel_image = arch/%{kernel_arch}/boot/zImage
13c9d848
MT
107
108 # ARM does not support cpupower.
109 build_cpupower = 0
110 end
111
45088e83
MT
112 # Build default kernel.
113 if "%{build_kernel_default}" == "1"
114 kernels += default
115 end
116
1c9b6c79
MT
117 # Build legacy kernel.
118 if "%{build_kernel_legacy}" == "1"
119 kernels += legacy
45088e83
MT
120 end
121
122 # Build ARM versatile kernel.
123 if "%{build_kernel_versatile}" == "1"
124 kernels += versatile
802ea3af
MT
125 end
126
4c928ab7
MT
127 # Build ARM kirkwood kernel.
128 if "%{build_kernel_kirkwood}" == "1"
129 kernels += kirkwood
130 end
131
132 # Build ARM omap kernel.
133 if "%{build_kernel_omap}" == "1"
134 kernels += omap
135 end
136
13c9d848
MT
137 # Add tools' build requirements if build is requested.
138 if "%{build_cpupower}" == "1"
139 requires += %{tools_cpupower_requires}
140 end
141
802ea3af 142 prepare_cmds
802ea3af
MT
143 rm -f %{DIR_APP}/localversion-grsec
144
5e856224
MT
145 # Remove -Werror flag to fix ARMv5 build.
146 sed -e "s/-Werror//g" -i grsecurity/Makefile
147
148 # Disable the colorize plugin.
149 # It's generally very nice but it clutters our
150 # logfiles.
151 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
152 -i Makefile
153
802ea3af
MT
154 sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
155
156 cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \
157 drivers/video/logo/logo_linux_clut224.ppm
158
bcf38aec
MT
159 # Get rid of unwanted files resulting from patch fuzz.
160 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
161
162 # Remove unnecessary SCM files.
163 find . -name .gitignore -exec rm -f {} \; >/dev/null
164
ebeed08a
MT
165 # This prevents scripts/setlocalversion from mucking with our version numbers.
166 touch .scmversion
167
bcf38aec 168 mkdir -pv configs
4c928ab7
MT
169
170 cd %{DIR_SOURCE}
bcf38aec
MT
171 configure_kernel() {
172 local flavour=${1}
173 local suffix
174 if [ "${flavour}" != "default" ]; then
175 suffix="-${flavour}"
176 fi
177
4c928ab7
MT
178 scripts/configure --kernel-dir=%{DIR_APP} \
179 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
bcf38aec
MT
180 }
181
182 # Generate configuration files for all kernels we are going to
183 # build.
184 for kernel in %{kernels}; do
185 configure_kernel ${kernel}
186 done
802ea3af
MT
187 end
188
189 build
bcf38aec
MT
190 build_kernel() {
191 local flavour=${1}
192 local suffix
193 local localversion="%{localversion}"
194 local fullversion="%{fullver}"
195 if [ "${flavour}" != "default" ]; then
196 suffix="-${flavour}"
197 localversion="${localversion}.${flavour}"
198 fullversion="${fullversion}.${flavour}"
199 fi
802ea3af 200
ebeed08a
MT
201 # Label the build.
202 sed -i Makefile \
203 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
204
bcf38aec
MT
205 # Clean up the source tree.
206 make mrproper
802ea3af 207
bcf38aec
MT
208 # Install configuration file.
209 cp configs/config.${flavour} .config
802ea3af 210
bcf38aec 211 # Run the build.
ebeed08a 212 make ARCH=%{kernel_arch} oldnoconfig >/dev/null
bcf38aec
MT
213 make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
214
215 # Install the results.
216 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
217 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
218 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
219 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
220
221 # Create empty initramfs (20M).
222 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
223
224 # Install modules.
225 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
226 KERNELRELEASE=${fullversion} modules_install
c8f122e5
MT
227
228 # Install vdso.
229 case "%{DISTRO_ARCH}" in
230 i686)
231 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
232 KERNELRELEASE=${fullversion} vdso_install
233 ;;
234 esac
802ea3af 235
bcf38aec
MT
236 # Create an empty settings file for dracut
237 mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d
238 echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
239 > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
802ea3af 240
bcf38aec
MT
241 # And now the scary looking part.
242 #
243 # Recreate source and build links.
244 rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source}
245 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build
246 ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source
802ea3af 247
bcf38aec
MT
248 # Create dirs for extra modules.
249 mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra
802ea3af 250
bcf38aec
MT
251 cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
252 %{BUILDROOT}/lib/modules/${fullversion}/build
253 cp -v Module.symvers System.map \
254 %{BUILDROOT}/lib/modules/${fullversion}/build
255 rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include}
256
257 cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build
258 cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build
259 find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \
260 -exec rm -vf {} \;
261
262 cp -va --parents arch/%{kernel_arch}/include \
263 %{BUILDROOT}/lib/modules/${fullversion}/build
264 cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include
265
266 # Make sure we can build external modules.
267 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \
268 %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h
269 touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
270 %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h
271 cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
272 %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf
273
274 find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \
275 xargs chmod u+x
276
bcf38aec
MT
277 # Move all development files to /usr/src.
278 mkdir -pv %{BUILDROOT}/usr/src/kernels
279 mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \
280 %{BUILDROOT}/usr/src/kernels/${fullversion}
281 ln -svf ../../../usr/src/kernels/${fullversion} \
282 %{BUILDROOT}/lib/modules/${fullversion}/build
283
284 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
285 }
286
287 for kernel in %{kernels}; do
288 build_kernel ${kernel}
289 done
6e9df6a3
MT
290
291 # Build tools.
292 # cpupower
45088e83
MT
293 if [ "%{build_cpupower}" = "1" ]; then
294 chmod +x tools/power/cpupower/utils/version-gen.sh
295 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
296
297 cd tools/power/cpupower/debug/i386
298 make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
299 cd -
300 fi
bcf38aec
MT
301 end
302
303 install
4c928ab7
MT
304 # When no kernels are configured, we create a default config
305 # which enables us to install at least the header files.
306 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
307
802ea3af 308 # Install the header files
c8f122e5 309 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
802ea3af
MT
310 mkdir -pv %{BUILDROOT}/usr/include
311 find dest/include \( -name .install -o -name ..install.cmd \) -delete
312 cp -rv dest/include/* %{BUILDROOT}/usr/include
313
314 # Glibc provides these headers
315 rm -rfv %{BUILDROOT}/usr/include/scsi \
316 %{BUILDROOT}/usr/include/asm*/atomic.h \
317 %{BUILDROOT}/usr/include/asm*/io.h \
318 %{BUILDROOT}/usr/include/asm*/irq.h
319
15a11c5b
MT
320 # Remove all firmware files which are distributed by linux-firmware
321 rm -rfv %{BUILDROOT}/lib/firmware
bcf38aec
MT
322
323 # Install tools.
ebeed08a
MT
324 make -C tools/perf DESTDIR=%{BUILDROOT} \
325 HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
662414a4 326 install install-man
6e9df6a3
MT
327
328 # cpupower
45088e83 329 if [ "%{build_cpupower}" = "1" ]; then
c2c61882
MT
330 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
331 mandir=%{mandir} CPUFREQ_BENCH=false install
45088e83
MT
332 cd tools/power/cpupower/debug/i386
333 install -m 755 centrino-decode %{BUILDROOT}/usr/bin/centrino-decode
334 install -m 755 powernow-k8-decode %{BUILDROOT}/usr/bin/powernow-k8-decode
335 cd -
c2c61882 336 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
45088e83 337 fi
802ea3af
MT
338 end
339end
340
341packages
bcf38aec 342 template KERNEL
aa3ab846 343 kernel_name = kernel
bcf38aec
MT
344 kernel_release = %{fullver}
345
346 summary = The Linux kernel %{kernel_release}.
347
1c9b6c79 348 prerequires
4c928ab7 349 /sbin/depmod
1c9b6c79
MT
350 end
351
352 provides
353 kernel=%{kernel_release}
354 end
355
802ea3af 356 requires
4c928ab7
MT
357 dracut
358 grubby
802ea3af
MT
359 linux-firmware
360 end
ad1ea534 361
bcf38aec
MT
362 files
363 /boot/System.map-%{kernel_release}
364 /boot/vmlinuz-%{kernel_release}
365 /boot/initramfs-%{kernel_release}.img
366 /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
367 /lib/modules/%{kernel_release}
368 end
369
aa3ab846 370 _posttrans
c8f9fe35
MT
371 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
372 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
aa3ab846
MT
373 end
374
ad1ea534 375 script posttransin
aa3ab846
MT
376 %{_posttrans}
377 end
378
379 script posttransup
380 %{_posttrans}
381 end
382
383 script postin
c8f9fe35 384 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
aa3ab846
MT
385 end
386
387 script postup
388 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
389 end
390
391 script preun
392 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
bcf38aec
MT
393 end
394 end
395
396 template KERNELDEVEL
397 kernel_release = %{fullver}
398
399 summary = Development files of kernel-%{kernel_release}.
400 description
401 %{summary}
402
403 Install this package in order to compile modules for
404 kernel release %{kernel_release}.
405 end
406
407 filter_requires
408 perl>=[0-9]\:.*
ad1ea534
MT
409 end
410
bcf38aec
MT
411 files
412 /lib/modules/%{kernel_release}/build
413 /lib/modules/%{kernel_release}/source
414 /usr/src/kernels/%{kernel_release}
ad1ea534 415 end
802ea3af 416 end
bcf38aec 417
45088e83
MT
418 if "%{build_kernel_default}" == "1"
419 package kernel
420 template KERNEL
58dc2060 421
45088e83
MT
422 kernel_name = kernel
423 kernel_release = %{fullver}
424 end
bcf38aec 425
45088e83
MT
426 package kernel-devel
427 template KERNELDEVEL
58dc2060 428
45088e83
MT
429 kernel_name = kernel
430 kernel_release = %{fullver}
431 end
bcf38aec
MT
432 end
433
1c9b6c79
MT
434 if "%{build_kernel_legacy}" == "1"
435 package kernel-legacy
45088e83 436 template KERNEL
bcf38aec 437
1c9b6c79
MT
438 kernel_name = kernel-legacy
439 kernel_release = %{fullver}.legacy
45088e83
MT
440 end
441
1c9b6c79 442 package kernel-legacy-devel
45088e83
MT
443 template KERNELDEVEL
444
1c9b6c79
MT
445 kernel_name = kernel-legacy
446 kernel_release = %{fullver}.legacy
45088e83 447 end
bcf38aec
MT
448 end
449
45088e83
MT
450 if "%{build_kernel_versatile}" == "1"
451 package kernel-versatile
452 template KERNEL
bcf38aec 453
45088e83
MT
454 kernel_name = kernel-versatile
455 kernel_release = %{fullver}.versatile
456 end
457
458 package kernel-versatile-devel
4c928ab7 459 template KERNELDEVEL
45088e83
MT
460
461 kernel_name = kernel-versatile
462 kernel_release = %{fullver}.versatile
463 end
bcf38aec 464 end
ebeed08a 465
4c928ab7
MT
466 if "%{build_kernel_kirkwood}" == "1"
467 package kernel-kirkwood
468 template KERNEL
469
470 kernel_name = kernel-kirkwood
471 kernel_release = %{fullver}.kirkwood
472 end
473
474 package kernel-kirkwood-devel
475 template KERNELDEVEL
476
477 kernel_name = kernel-kirkwood
478 kernel_release = %{fullver}.kirkwood
479 end
480 end
481
482 if "%{build_kernel_omap}" == "1"
483 package kernel-omap
484 template KERNEL
485
486 kernel_name = kernel-omap
487 kernel_release = %{fullver}.omap
488 end
489
490 package kernel-omap-devel
491 template KERNELDEVEL
492
493 kernel_name = kernel-omap
494 kernel_release = %{fullver}.omap
495 end
496 end
497
802ea3af 498 package kernel-headers
802ea3af
MT
499 summary = Header files of the kernel release %{fullver}.
500 desciption = %{summary}
c698e4be
MT
501
502 files
503 /usr/include
504 end
802ea3af 505 end
bcf38aec 506
ebeed08a
MT
507 package kernel-tools
508 summary = Assortment of tools for the Linux kernel.
509 description = %{summary}
510
511 filter_requires
512 perl>=[0-9]\:.*
513 end
514
515 files
516 /
517 !/boot
518 !/lib/modules
519 !/usr/include
520 !/usr/src
fe2de317
MT
521 !/usr/src/debug
522 !/usr/lib/debug
ebeed08a
MT
523 end
524 end
802ea3af 525end