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