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