]> git.ipfire.org Git - ipfire-3.x.git/blob - kernel/kernel.nm
kernel: update to 5.0
[ipfire-3.x.git] / kernel / kernel.nm
1 ###############################################################################
2 # IPFire.org - An Open Source Firewall Solution #
3 # Copyright (C) - IPFire Development Team <info@ipfire.org> #
4 ###############################################################################
5
6 name = kernel
7 version = 5.0
8 release = 1
9 thisapp = linux-%{version}
10
11 maintainer = Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
12 groups = System/Kernels
13 url = http://www.kernel.org/
14 license = GPLv2
15 summary = The Linux kernel.
16
17 description
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
21 input and output, etc.
22 end
23
24 # Version helper variables.
25 localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
26 fullver = %{version}-%{localversion}
27
28 source_dl = http://www.kernel.org/pub/linux/kernel/v5.x/
29 sources = %{thisapp}.tar.xz
30
31 build
32 kernel_logo = /usr/share/pixmaps/kernel-logo.ppm
33
34 requires
35 asciidoc
36 bc
37 binutils >= 2.25
38 binutils-devel
39 bison
40 elfutils-devel
41 flex
42 gcc >= 8
43 gcc-plugin-devel
44 gettext
45 hostname
46 libunwind-devel
47 ncurses-devel
48 net-tools
49 newt-devel
50 pciutils-devel
51 perl
52 python-devel
53 openssl-devel
54 slang-devel
55 xmlto
56 xz
57
58 /sbin/depmod
59 %{kernel_logo}
60 end
61
62 # A list of kernels to build.
63 kernels =
64
65 kernel_arch = %{DISTRO_PLATFORM}
66 kernel_target = bzImage
67 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
68
69 if "%{DISTRO_ARCH}" == "x86_64"
70 build_kernel_default = 1
71 end
72
73 if "%{DISTRO_ARCH}" == "aarch64"
74 build_kernel_default = 1
75
76 kernel_arch = arm64
77 kernel_target = Image.gz
78 end
79
80 if "%{DISTRO_ARCH}" == "armv7hl"
81 # Build the default unified kernel.
82 build_kernel_default = 1
83
84 kernel_target = zImage
85 end
86
87 # mkimage is a requirement to build uImage images.
88 if "%{kernel_target}" == "uImage"
89 requires += u-boot-tools
90 end
91
92 # Build default kernel.
93 if "%{build_kernel_default}" == "1"
94 kernels += default
95 end
96
97 prepare_cmds
98 # Disable the colorize plugin.
99 # It's generally very nice but it clutters our
100 # logfiles.
101 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
102 -i Makefile
103
104 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
105
106 cp -vf %{kernel_logo} \
107 drivers/video/logo/logo_linux_clut224.ppm
108
109 # Get rid of unwanted files resulting from patch fuzz.
110 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
111
112 # Remove unnecessary SCM files.
113 find . -name .gitignore -exec rm -f {} \; >/dev/null
114
115 # This prevents scripts/setlocalversion from mucking with our version numbers.
116 touch .scmversion
117
118 mkdir -pv configs
119
120 cd %{DIR_SOURCE}
121 configure_kernel() {
122 local flavour=${1}
123 local suffix
124 if [ "${flavour}" != "default" ]; then
125 suffix="-${flavour}"
126 fi
127
128 scripts/configure --kernel-dir=%{DIR_APP} \
129 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
130 }
131
132 # Generate configuration files for all kernels we are going to
133 # build.
134 for kernel in %{kernels}; do
135 configure_kernel ${kernel}
136 done
137 end
138
139 build
140 build_kernel() {
141 local flavour=${1}
142 local suffix
143 local localversion="%{localversion}"
144 local fullversion="%{fullver}"
145 if [ "${flavour}" != "default" ]; then
146 suffix="-${flavour}"
147 localversion="${localversion}.${flavour}"
148 fullversion="${fullversion}.${flavour}"
149 fi
150
151 # Label the build.
152 sed -i Makefile \
153 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
154
155 # Clean up the source tree.
156 make mrproper
157
158 # Install configuration file.
159 cp configs/config.${flavour} .config
160 cat .config
161
162 # Run the build.
163 make ARCH=%{kernel_arch} olddefconfig >/dev/null
164 make ARCH=%{kernel_arch} %{kernel_target} modules \
165 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
166
167 # Compile Flattened Device Tree database
168 case "${DISTRO_ARCH}" in
169 aarch64|arm*)
170 make ARCH=%{kernel_arch} dtbs
171
172 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
173 for file in arch/arm/boot/dts/*.dtb; do
174 [ -e "${file}" ] || continue
175
176 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
177 rm -f ${file}
178 done
179 ;;
180 esac
181
182 # Install the results.
183 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
184 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
185 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
186 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
187
188 # Create empty initramfs (20M).
189 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
190
191 # Install modules.
192 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
193 KERNELRELEASE=${fullversion} modules_install
194
195 # And now the scary looking part.
196 #
197 # Recreate source and build links.
198 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
199 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
200 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
201
202 # Create dirs for extra modules.
203 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
204
205 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
206 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
207 cp Module.symvers System.map \
208 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
209 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
210
211 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
212 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
213 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
214 -exec rm -vf {} \;
215
216 cp -a --parents arch/%{kernel_arch}/include \
217 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
218 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
219
220 # Make sure we can build external modules.
221 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
222 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
223 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
224 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
225 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
226 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
227
228 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
229 xargs --no-run-if-empty chmod u+x
230
231 # Move all development files to /usr/src.
232 mkdir -p %{BUILDROOT}/usr/src/kernels
233 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
234 %{BUILDROOT}/usr/src/kernels/${fullversion}
235 ln -sf ../../../src/kernels/${fullversion} \
236 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
237
238 # Fix permissions.
239 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
240 -exec chmod 644 {} \;
241
242 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
243
244 # remove device tree compiler because there are dead links
245 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
246 }
247
248 for kernel in %{kernels}; do
249 build_kernel ${kernel}
250 done
251
252 # cpupower
253 chmod +x tools/power/cpupower/utils/version-gen.sh
254 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
255
256 pushd tools/thermal/tmon
257 make
258 popd
259 end
260
261 install
262 # When no kernels are configured, we create a default config
263 # which enables us to install at least the header files.
264 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
265
266 # Install the header files
267 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
268 mkdir -pv %{BUILDROOT}/usr/include
269 find dest/include \( -name .install -o -name ..install.cmd \) -delete
270 cp -rv dest/include/* %{BUILDROOT}/usr/include
271
272 # Glibc provides these headers
273 rm -rfv %{BUILDROOT}/usr/include/scsi \
274 %{BUILDROOT}/usr/include/asm*/atomic.h \
275 %{BUILDROOT}/usr/include/asm*/io.h \
276 %{BUILDROOT}/usr/include/asm*/irq.h
277
278 # Remove all firmware files which are distributed by linux-firmware
279 rm -rfv %{BUILDROOT}/lib/firmware
280
281 # Install tools.
282 # cpupower
283 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
284 mandir=%{mandir} CPUFREQ_BENCH=false install
285
286 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
287
288 # tmon
289 pushd tools/thermal/tmon
290 make INSTALL_ROOT=%{BUILDROOT} install
291 popd
292 end
293 end
294
295 packages
296 template KERNEL
297 kernel_name = kernel
298 kernel_release = %{fullver}
299
300 summary = The Linux kernel %{kernel_release}.
301
302 prerequires
303 /sbin/depmod
304 end
305
306 provides
307 kernel=%{kernel_release}
308 end
309
310 requires
311 dracut
312 grubby
313 linux-firmware
314 end
315
316 files
317 /boot/System.map-%{kernel_release}
318 /boot/dtb-%{kernel_release}
319 /boot/vmlinuz-%{kernel_release}
320 /boot/initramfs-%{kernel_release}.img
321 /usr/lib/modules/%{kernel_release}
322 end
323
324 _posttrans
325 /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
326 /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
327 end
328
329 script posttransin
330 %{_posttrans}
331 end
332
333 script posttransup
334 %{_posttrans}
335 end
336
337 script postin
338 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
339 end
340
341 script postup
342 /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
343 end
344
345 script preun
346 /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
347 end
348 end
349
350 template KERNELDEVEL
351 kernel_release = %{fullver}
352
353 summary = Development files of kernel-%{kernel_release}.
354 description
355 %{summary}
356
357 Install this package in order to compile modules for
358 kernel release %{kernel_release}.
359 end
360
361 provides
362 kernel-devel = %{thisver}
363 end
364
365 filter_requires
366 perl>=[0-9]\:.*
367 end
368
369 files
370 /usr/lib/modules/%{kernel_release}/build
371 /usr/lib/modules/%{kernel_release}/source
372 /usr/src/kernels/%{kernel_release}
373 end
374 end
375
376 if "%{build_kernel_default}" == "1"
377 if "%{DISTRO_ARCH}" == "armv7hl"
378 package kernel
379 template KERNEL
380
381 kernel_name = kernel
382 kernel_release = %{fullver}
383
384 # Replace the Exynos kernel.
385 obsoletes += kernel-exynos < %{kernel_release}
386 conflicts += kernel-exynos < %{kernel_release}
387
388 # Replace the OMAP kernel.
389 obsoletes += kernel-omap < %{kernel_release}
390 conflicts += kernel-omap < %{kernel_release}
391 end
392
393 package kernel-devel
394 template KERNELDEVEL
395
396 kernel_name = kernel
397 kernel_release = %{fullver}
398
399 # Replace the Exynos kernel.
400 obsoletes += kernel-exynos-devel < %{kernel_release}
401 conflicts += kernel-exynos-devel < %{kernel_release}
402
403 # Replace the OMAP kernel.
404 obsoletes += kernel-omap-devel < %{kernel_release}
405 conflicts += kernel-omap-devel < %{kernel_release}
406 end
407
408 else
409 package kernel
410 template KERNEL
411
412 kernel_name = kernel
413 kernel_release = %{fullver}
414 end
415
416 package kernel-devel
417 template KERNELDEVEL
418
419 kernel_name = kernel
420 kernel_release = %{fullver}
421 end
422 end
423 end
424
425 package kernel-headers
426 summary = Header files of the kernel release %{fullver}.
427 desciption = %{summary}
428
429 files
430 /usr/include
431 end
432 end
433
434 package kernel-tools
435 summary = Assortment of tools for the Linux kernel.
436 description = %{summary}
437
438 filter_requires
439 perl>=[0-9]\:.*
440 end
441
442 files
443 /
444 !/boot
445 !/usr/include
446 !/usr/lib/modules
447 !/usr/src
448 !/usr/src/debug
449 !/usr/lib/debug
450 end
451 end
452 end