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