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