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