]> git.ipfire.org Git - ipfire-3.x.git/blob - kernel/kernel.nm
kernel: remove grubby from dependencies
[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 = 2
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 kernel-updater
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 kernel-updater install %{kernel_release}
326 end
327
328 script posttransin
329 %{_posttrans}
330 end
331
332 script posttransup
333 %{_posttrans}
334 end
335
336 script postun
337 kernel-updater uninstall %{kernel_release}
338 end
339 end
340
341 template KERNELDEVEL
342 kernel_release = %{fullver}
343
344 summary = Development files of kernel-%{kernel_release}.
345 description
346 %{summary}
347
348 Install this package in order to compile modules for
349 kernel release %{kernel_release}.
350 end
351
352 provides
353 kernel-devel = %{thisver}
354 end
355
356 filter_requires
357 perl>=[0-9]\:.*
358 end
359
360 files
361 /usr/lib/modules/%{kernel_release}/build
362 /usr/lib/modules/%{kernel_release}/source
363 /usr/src/kernels/%{kernel_release}
364 end
365 end
366
367 if "%{build_kernel_default}" == "1"
368 if "%{DISTRO_ARCH}" == "armv7hl"
369 package kernel
370 template KERNEL
371
372 kernel_name = kernel
373 kernel_release = %{fullver}
374
375 # Replace the Exynos kernel.
376 obsoletes += kernel-exynos < %{kernel_release}
377 conflicts += kernel-exynos < %{kernel_release}
378
379 # Replace the OMAP kernel.
380 obsoletes += kernel-omap < %{kernel_release}
381 conflicts += kernel-omap < %{kernel_release}
382 end
383
384 package kernel-devel
385 template KERNELDEVEL
386
387 kernel_name = kernel
388 kernel_release = %{fullver}
389
390 # Replace the Exynos kernel.
391 obsoletes += kernel-exynos-devel < %{kernel_release}
392 conflicts += kernel-exynos-devel < %{kernel_release}
393
394 # Replace the OMAP kernel.
395 obsoletes += kernel-omap-devel < %{kernel_release}
396 conflicts += kernel-omap-devel < %{kernel_release}
397 end
398
399 else
400 package kernel
401 template KERNEL
402
403 kernel_name = kernel
404 kernel_release = %{fullver}
405 end
406
407 package kernel-devel
408 template KERNELDEVEL
409
410 kernel_name = kernel
411 kernel_release = %{fullver}
412 end
413 end
414 end
415
416 package kernel-headers
417 summary = Header files of the kernel release %{fullver}.
418 desciption = %{summary}
419
420 files
421 /usr/include
422 end
423 end
424
425 package kernel-tools
426 summary = Assortment of tools for the Linux kernel.
427 description = %{summary}
428
429 filter_requires
430 perl>=[0-9]\:.*
431 end
432
433 files
434 /
435 !/boot
436 !/usr/include
437 !/usr/lib/modules
438 !/usr/src
439 !/usr/src/debug
440 !/usr/lib/debug
441 end
442 end
443 end