]> git.ipfire.org Git - ipfire-3.x.git/blame - kernel/kernel.nm
kernel: Drop support for BTRFS
[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
43556e68 7version = 4.6.7
df2dc5a8 8release = 3
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
849a0073 38 binutils >= 2.25
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
849a0073 46 hostname
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
849a0073 54 openssl-devel
7c69f2c2 55 slang-devel
662414a4 56 xmlto
bf6ee3f7 57 xz
4c928ab7
MT
58
59 /sbin/depmod
6b6a8ff6 60 %{kernel_logo}
bcf38aec
MT
61 end
62
63 # A list of kernels to build.
45088e83 64 kernels =
bcf38aec 65
55586be2
MT
66 # Arguments that are passed to the kernel build command
67 # Clearning any host CFLAGS or LDFLAGS for kernel build
68 kernel_build_flags = CFLAGS= LDFLAGS=
572b4308 69
34520606 70 kernel_arch = %{DISTRO_PLATFORM}
45088e83 71 kernel_target = bzImage
967da24b
MT
72 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
73
c112b2e3
MT
74 if "%{DISTRO_ARCH}" == "x86_64"
75 build_kernel_default = 1
c112b2e3
MT
76 end
77
d5383c43 78 if "%{DISTRO_ARCH}" == "aarch64"
55586be2 79 build_kernel_default = 1
d5383c43
MT
80
81 kernel_arch = arm64
82 kernel_target = Image.gz
83 end
84
13c9d848 85 if "%{DISTRO_ARCH}" == "armv7hl"
7f6f4de5
MT
86 # Build the default unified kernel.
87 build_kernel_default = 1
88
7f6f4de5 89 kernel_target = zImage
967da24b
MT
90 end
91
92 # mkimage is a requirement to build uImage images.
93 if "%{kernel_target}" == "uImage"
94 requires += u-boot-tools
13c9d848
MT
95 end
96
45088e83
MT
97 # Build default kernel.
98 if "%{build_kernel_default}" == "1"
99 kernels += default
100 end
101
ad855779 102 perf_make = make %{PARALLELISMFLAGS} -C tools/perf V=1 WERROR=0 \
302e8df8
MT
103 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_LIBNUMA=1 \
104 NO_STRLCPY=1 NO_BIONIC=1 prefix=%{prefix} perfexecdir=lib/perf-core
105
802ea3af 106 prepare_cmds
5e856224
MT
107 # Disable the colorize plugin.
108 # It's generally very nice but it clutters our
109 # logfiles.
110 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
111 -i Makefile
112
802ea3af
MT
113 sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
114
6b6a8ff6 115 cp -vf %{kernel_logo} \
802ea3af
MT
116 drivers/video/logo/logo_linux_clut224.ppm
117
bcf38aec
MT
118 # Get rid of unwanted files resulting from patch fuzz.
119 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
120
121 # Remove unnecessary SCM files.
122 find . -name .gitignore -exec rm -f {} \; >/dev/null
123
ebeed08a
MT
124 # This prevents scripts/setlocalversion from mucking with our version numbers.
125 touch .scmversion
126
bcf38aec 127 mkdir -pv configs
4c928ab7
MT
128
129 cd %{DIR_SOURCE}
bcf38aec
MT
130 configure_kernel() {
131 local flavour=${1}
132 local suffix
133 if [ "${flavour}" != "default" ]; then
134 suffix="-${flavour}"
135 fi
136
4c928ab7
MT
137 scripts/configure --kernel-dir=%{DIR_APP} \
138 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
bcf38aec
MT
139 }
140
141 # Generate configuration files for all kernels we are going to
142 # build.
143 for kernel in %{kernels}; do
144 configure_kernel ${kernel}
145 done
302e8df8
MT
146
147 # Tools
148 # Prevent perf from installing any files in /usr/libexec
149 sed -i %{DIR_APP}/tools/perf/config/Makefile -e "s/libexec/lib/g"
802ea3af
MT
150 end
151
152 build
bcf38aec
MT
153 build_kernel() {
154 local flavour=${1}
155 local suffix
156 local localversion="%{localversion}"
157 local fullversion="%{fullver}"
158 if [ "${flavour}" != "default" ]; then
159 suffix="-${flavour}"
160 localversion="${localversion}.${flavour}"
161 fullversion="${fullversion}.${flavour}"
162 fi
802ea3af 163
ebeed08a
MT
164 # Label the build.
165 sed -i Makefile \
166 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
167
bcf38aec
MT
168 # Clean up the source tree.
169 make mrproper
802ea3af 170
bcf38aec
MT
171 # Install configuration file.
172 cp configs/config.${flavour} .config
c6e2a6c8 173 cat .config
802ea3af 174
bcf38aec 175 # Run the build.
ebeed08a 176 make ARCH=%{kernel_arch} oldnoconfig >/dev/null
572b4308
MT
177 make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules \
178 %{kernel_build_flags} %{PARALLELISMFLAGS}
bcf38aec 179
9d4be168
MT
180 # Compile Flattened Device Tree database
181 case "${DISTRO_ARCH}" in
d5383c43 182 aarch64|arm*)
9d4be168
MT
183 make ARCH=%{kernel_arch} dtbs
184
185 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
186 for file in arch/arm/boot/dts/*.dtb; do
187 [ -e "${file}" ] || continue
188
189 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
190 rm -f ${file}
191 done
192 ;;
193 esac
194
bcf38aec 195 # Install the results.
c4ef5c45 196 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
bcf38aec
MT
197 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
198 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
199 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
200
201 # Create empty initramfs (20M).
202 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
203
204 # Install modules.
81bb0557 205 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
bcf38aec 206 KERNELRELEASE=${fullversion} modules_install
c8f122e5 207
bcf38aec 208 # Create an empty settings file for dracut
7c69f2c2 209 mkdir -p %{BUILDROOT}/etc/ld.so.conf.d
bcf38aec
MT
210 echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
211 > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
802ea3af 212
bcf38aec
MT
213 # And now the scary looking part.
214 #
215 # Recreate source and build links.
7c69f2c2
MT
216 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
217 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
218 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
802ea3af 219
bcf38aec 220 # Create dirs for extra modules.
7c69f2c2 221 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
802ea3af 222
7c69f2c2 223 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
c4ef5c45 224 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 225 cp Module.symvers System.map \
c4ef5c45 226 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 227 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
bcf38aec 228
7c69f2c2
MT
229 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
230 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
c4ef5c45 231 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
bcf38aec
MT
232 -exec rm -vf {} \;
233
7c69f2c2 234 cp -a --parents arch/%{kernel_arch}/include \
c4ef5c45 235 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 236 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
bcf38aec
MT
237
238 # Make sure we can build external modules.
c4ef5c45
MT
239 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
240 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
241 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
242 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
7c69f2c2 243 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
c4ef5c45
MT
244 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
245
246 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
bf6ee3f7 247 xargs --no-run-if-empty chmod u+x
bcf38aec 248
bcf38aec 249 # Move all development files to /usr/src.
7c69f2c2
MT
250 mkdir -p %{BUILDROOT}/usr/src/kernels
251 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
bcf38aec 252 %{BUILDROOT}/usr/src/kernels/${fullversion}
7c69f2c2 253 ln -sf ../../../src/kernels/${fullversion} \
c4ef5c45 254 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
bcf38aec 255
81bb0557
MT
256 # Fix permissions.
257 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
258 -exec chmod 644 {} \;
259
bcf38aec
MT
260 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
261 }
262
263 for kernel in %{kernels}; do
264 build_kernel ${kernel}
265 done
6e9df6a3
MT
266
267 # Build tools.
302e8df8 268 # perf
ad855779 269 #%{perf_make} DESTDIR=%{BUILDROOT} all
302e8df8 270
6e9df6a3 271 # cpupower
7c69f2c2
MT
272 chmod +x tools/power/cpupower/utils/version-gen.sh
273 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
274
275 if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
276 pushd tools/power/cpupower/debug/x86_64
ad855779 277 make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
7c69f2c2 278 popd
302e8df8 279
302e8df8
MT
280 pushd tools/power/x86/x86_energy_perf_policy
281 make
282 popd
283
302e8df8
MT
284 pushd tools/power/x86/turbostat
285 make
286 popd
287 fi
288
289 pushd tools/thermal/tmon
290 make
291 popd
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.
ad855779 315 #%{perf_make} DESTDIR=%{BUILDROOT} install-bin install-python_ext
6e9df6a3
MT
316
317 # cpupower
7c69f2c2
MT
318 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
319 mandir=%{mandir} CPUFREQ_BENCH=false install
320
321 if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
322 pushd tools/power/cpupower/debug/x86_64
323 install -m 755 centrino-decode \
324 %{BUILDROOT}/usr/bin/centrino-decode
325 install -m 755 powernow-k8-decode \
326 %{BUILDROOT}/usr/bin/powernow-k8-decode
327 popd
45088e83 328 fi
7c69f2c2
MT
329
330 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
302e8df8
MT
331
332 # This should be built for all x86 architectures
333 if [ "%{DISTRO_ARCH}" = "x86_64" ]; then
334 mkdir -pv %{BUILDROOT}%{mandir}/man8
335
336 pushd tools/power/x86/x86_energy_perf_policy
337 make DESTDIR=%{BUILDROOT} install
338 popd
339
340 pushd tools/power/x86/turbostat
341 make DESTDIR=%{BUILDROOT} install
342 popd
343 fi
344
345 # tmon
346 pushd tools/thermal/tmon
347 make INSTALL_ROOT=%{BUILDROOT} install
348 popd
802ea3af
MT
349 end
350end
351
352packages
bcf38aec 353 template KERNEL
aa3ab846 354 kernel_name = kernel
bcf38aec
MT
355 kernel_release = %{fullver}
356
357 summary = The Linux kernel %{kernel_release}.
358
1c9b6c79 359 prerequires
4c928ab7 360 /sbin/depmod
1c9b6c79
MT
361 end
362
363 provides
364 kernel=%{kernel_release}
365 end
366
802ea3af 367 requires
4c928ab7
MT
368 dracut
369 grubby
802ea3af
MT
370 linux-firmware
371 end
ad1ea534 372
bcf38aec
MT
373 files
374 /boot/System.map-%{kernel_release}
9d4be168 375 /boot/dtb-%{kernel_release}
bcf38aec
MT
376 /boot/vmlinuz-%{kernel_release}
377 /boot/initramfs-%{kernel_release}.img
378 /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
c4ef5c45 379 /usr/lib/modules/%{kernel_release}
bcf38aec
MT
380 end
381
aa3ab846 382 _posttrans
c8f9fe35
MT
383 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
384 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
aa3ab846
MT
385 end
386
ad1ea534 387 script posttransin
aa3ab846
MT
388 %{_posttrans}
389 end
390
391 script posttransup
392 %{_posttrans}
393 end
394
395 script postin
c8f9fe35 396 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
aa3ab846
MT
397 end
398
399 script postup
400 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
401 end
402
403 script preun
404 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
bcf38aec
MT
405 end
406 end
407
408 template KERNELDEVEL
409 kernel_release = %{fullver}
410
411 summary = Development files of kernel-%{kernel_release}.
412 description
413 %{summary}
414
415 Install this package in order to compile modules for
416 kernel release %{kernel_release}.
417 end
418
10756fd5
MT
419 provides
420 kernel-devel = %{thisver}
421 end
422
bcf38aec
MT
423 filter_requires
424 perl>=[0-9]\:.*
ad1ea534
MT
425 end
426
bcf38aec 427 files
c4ef5c45
MT
428 /usr/lib/modules/%{kernel_release}/build
429 /usr/lib/modules/%{kernel_release}/source
bcf38aec 430 /usr/src/kernels/%{kernel_release}
ad1ea534 431 end
802ea3af 432 end
bcf38aec 433
45088e83 434 if "%{build_kernel_default}" == "1"
7f6f4de5
MT
435 if "%{DISTRO_ARCH}" == "armv7hl"
436 package kernel
437 template KERNEL
58dc2060 438
7f6f4de5
MT
439 kernel_name = kernel
440 kernel_release = %{fullver}
bcf38aec 441
0db4b328
MT
442 # Replace the Exynos kernel.
443 obsoletes += kernel-exynos < %{kernel_release}
444 conflicts += kernel-exynos < %{kernel_release}
445
7f6f4de5
MT
446 # Replace the OMAP kernel.
447 obsoletes += kernel-omap < %{kernel_release}
448 conflicts += kernel-omap < %{kernel_release}
449 end
450
451 package kernel-devel
452 template KERNELDEVEL
453
454 kernel_name = kernel
455 kernel_release = %{fullver}
456
0db4b328
MT
457 # Replace the Exynos kernel.
458 obsoletes += kernel-exynos-devel < %{kernel_release}
459 conflicts += kernel-exynos-devel < %{kernel_release}
460
7f6f4de5
MT
461 # Replace the OMAP kernel.
462 obsoletes += kernel-omap-devel < %{kernel_release}
463 conflicts += kernel-omap-devel < %{kernel_release}
464 end
58dc2060 465
7f6f4de5
MT
466 else
467 package kernel
468 template KERNEL
469
470 kernel_name = kernel
471 kernel_release = %{fullver}
472 end
473
474 package kernel-devel
475 template KERNELDEVEL
476
477 kernel_name = kernel
478 kernel_release = %{fullver}
479 end
45088e83 480 end
bcf38aec 481 end
81bb0557 482
802ea3af 483 package kernel-headers
802ea3af
MT
484 summary = Header files of the kernel release %{fullver}.
485 desciption = %{summary}
c698e4be
MT
486
487 files
488 /usr/include
489 end
802ea3af 490 end
bcf38aec 491
ebeed08a
MT
492 package kernel-tools
493 summary = Assortment of tools for the Linux kernel.
494 description = %{summary}
495
496 filter_requires
497 perl>=[0-9]\:.*
498 end
499
500 files
501 /
502 !/boot
ebeed08a 503 !/usr/include
c4ef5c45 504 !/usr/lib/modules
ebeed08a 505 !/usr/src
fe2de317
MT
506 !/usr/src/debug
507 !/usr/lib/debug
ebeed08a
MT
508 end
509 end
802ea3af 510end