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