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