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