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