]> git.ipfire.org Git - ipfire-3.x.git/blame - kernel/kernel.nm
kernel: Enabel zswap by default using LZ4
[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
d8d7d102 7version = 6.0.6
8bec5c39 8release = 0.5
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
d8d7d102 28source_dl = https://www.kernel.org/pub/linux/kernel/v6.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
7f6f4de5 36 bc
849a0073 37 binutils >= 2.25
bcf38aec 38 binutils-devel
c6e2a6c8 39 bison
bcf38aec 40 elfutils-devel
c6e2a6c8 41 flex
0f52a9b7 42 gcc >= 8
fe2de317 43 gcc-plugin-devel
6e9df6a3 44 gettext
849a0073 45 hostname
81bb0557 46 libunwind-devel
802ea3af 47 ncurses-devel
ebeed08a 48 net-tools
7c69f2c2
MT
49 newt-devel
50 pciutils-devel
802ea3af 51 perl
e42c2c0b 52 python3
bcf38aec 53 python-devel
1b1a9c16 54 rsync
849a0073 55 openssl-devel
7c69f2c2 56 slang-devel
662414a4 57 xmlto
bf6ee3f7 58 xz
4c928ab7
MT
59
60 /sbin/depmod
6b6a8ff6 61 %{kernel_logo}
bcf38aec
MT
62 end
63
34520606 64 kernel_arch = %{DISTRO_PLATFORM}
45088e83 65 kernel_target = bzImage
967da24b
MT
66 kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
67
d5383c43 68 if "%{DISTRO_ARCH}" == "aarch64"
d5383c43
MT
69 kernel_arch = arm64
70 kernel_target = Image.gz
71 end
72
802ea3af 73 prepare_cmds
5e856224
MT
74 # Disable the colorize plugin.
75 # It's generally very nice but it clutters our
76 # logfiles.
77 sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
78 -i Makefile
79
202187a3 80 sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
802ea3af 81
6b6a8ff6 82 cp -vf %{kernel_logo} \
802ea3af
MT
83 drivers/video/logo/logo_linux_clut224.ppm
84
bcf38aec
MT
85 # Get rid of unwanted files resulting from patch fuzz.
86 find . \( -name "*.orig" -o -name "*~" \) -exec rm -f {} \; >/dev/null
87
88 # Remove unnecessary SCM files.
89 find . -name .gitignore -exec rm -f {} \; >/dev/null
90
ebeed08a
MT
91 # This prevents scripts/setlocalversion from mucking with our version numbers.
92 touch .scmversion
93
bcf38aec 94 mkdir -pv configs
4c928ab7
MT
95
96 cd %{DIR_SOURCE}
bcf38aec
MT
97 configure_kernel() {
98 local flavour=${1}
99 local suffix
f05d9a85 100 if [ "${flavour}" != "generic" ]; then
bcf38aec
MT
101 suffix="-${flavour}"
102 fi
103
d8d7d102 104 bash scripts/configure --kernel-dir=%{DIR_APP} \
4c928ab7 105 merge %{DISTRO_ARCH} ${flavour} %{DIR_APP}/configs/config.${flavour}
bcf38aec
MT
106 }
107
108 # Generate configuration files for all kernels we are going to
109 # build.
f05d9a85 110 configure_kernel "generic"
802ea3af
MT
111 end
112
113 build
bcf38aec
MT
114 build_kernel() {
115 local flavour=${1}
116 local suffix
117 local localversion="%{localversion}"
118 local fullversion="%{fullver}"
f05d9a85 119 if [ "${flavour}" != "generic" ]; then
bcf38aec
MT
120 suffix="-${flavour}"
121 localversion="${localversion}.${flavour}"
122 fullversion="${fullversion}.${flavour}"
123 fi
802ea3af 124
ebeed08a
MT
125 # Label the build.
126 sed -i Makefile \
127 -e "s/^EXTRAVERSION.*/EXTRAVERSION = -${localversion}/"
128
bcf38aec
MT
129 # Clean up the source tree.
130 make mrproper
802ea3af 131
bcf38aec
MT
132 # Install configuration file.
133 cp configs/config.${flavour} .config
c6e2a6c8 134 cat .config
802ea3af 135
bcf38aec 136 # Run the build.
1349854e 137 make ARCH=%{kernel_arch} olddefconfig >/dev/null
65c2deba 138 make ARCH=%{kernel_arch} %{kernel_target} modules \
18c3200a 139 KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
bcf38aec 140
9d4be168
MT
141 # Compile Flattened Device Tree database
142 case "${DISTRO_ARCH}" in
d8d7d102 143 aarch64)
9d4be168
MT
144 make ARCH=%{kernel_arch} dtbs
145
146 mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
147 for file in arch/arm/boot/dts/*.dtb; do
148 [ -e "${file}" ] || continue
149
150 install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
151 rm -f ${file}
152 done
153 ;;
154 esac
155
bcf38aec 156 # Install the results.
c4ef5c45 157 mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
bcf38aec
MT
158 install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
159 install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
160 install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
161
162 # Create empty initramfs (20M).
163 dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
164
165 # Install modules.
81bb0557 166 make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
bcf38aec 167 KERNELRELEASE=${fullversion} modules_install
c8f122e5 168
bcf38aec
MT
169 # And now the scary looking part.
170 #
171 # Recreate source and build links.
7c69f2c2
MT
172 rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
173 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
174 ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
802ea3af 175
bcf38aec 176 # Create dirs for extra modules.
7c69f2c2 177 mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
802ea3af 178
7c69f2c2 179 cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
c4ef5c45 180 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 181 cp Module.symvers System.map \
c4ef5c45 182 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 183 rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
bcf38aec 184
7c69f2c2
MT
185 cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
186 cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
c4ef5c45 187 find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
bcf38aec
MT
188 -exec rm -vf {} \;
189
7c69f2c2 190 cp -a --parents arch/%{kernel_arch}/include \
c4ef5c45 191 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
7c69f2c2 192 cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
bcf38aec
MT
193
194 # Make sure we can build external modules.
c4ef5c45
MT
195 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
196 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
197 touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
198 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
7c69f2c2 199 cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
c4ef5c45
MT
200 %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
201
202 find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
bf6ee3f7 203 xargs --no-run-if-empty chmod u+x
bcf38aec 204
bcf38aec 205 # Move all development files to /usr/src.
7c69f2c2
MT
206 mkdir -p %{BUILDROOT}/usr/src/kernels
207 mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
bcf38aec 208 %{BUILDROOT}/usr/src/kernels/${fullversion}
7c69f2c2 209 ln -sf ../../../src/kernels/${fullversion} \
c4ef5c45 210 %{BUILDROOT}/usr/lib/modules/${fullversion}/build
bcf38aec 211
81bb0557
MT
212 # Fix permissions.
213 find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
214 -exec chmod 644 {} \;
215
bcf38aec 216 find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
d27a5bdd
AF
217
218 # remove device tree compiler because there are dead links
219 rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
bcf38aec
MT
220 }
221
d8d7d102 222 # Build the kernel
f05d9a85 223 build_kernel "generic"
6e9df6a3 224
6e9df6a3 225 # cpupower
7c69f2c2
MT
226 chmod +x tools/power/cpupower/utils/version-gen.sh
227 make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
228
302e8df8
MT
229 pushd tools/thermal/tmon
230 make
231 popd
bcf38aec
MT
232 end
233
234 install
4c928ab7
MT
235 # When no kernels are configured, we create a default config
236 # which enables us to install at least the header files.
237 [ -n "%{kernels}" ] || make ARCH=%{kernel_arch} defconfig
238
802ea3af 239 # Install the header files
c8f122e5 240 make ARCH=%{kernel_arch} INSTALL_HDR_PATH=dest headers_install
802ea3af
MT
241 mkdir -pv %{BUILDROOT}/usr/include
242 find dest/include \( -name .install -o -name ..install.cmd \) -delete
243 cp -rv dest/include/* %{BUILDROOT}/usr/include
244
245 # Glibc provides these headers
246 rm -rfv %{BUILDROOT}/usr/include/scsi \
247 %{BUILDROOT}/usr/include/asm*/atomic.h \
248 %{BUILDROOT}/usr/include/asm*/io.h \
249 %{BUILDROOT}/usr/include/asm*/irq.h
250
15a11c5b
MT
251 # Remove all firmware files which are distributed by linux-firmware
252 rm -rfv %{BUILDROOT}/lib/firmware
bcf38aec
MT
253
254 # Install tools.
6e9df6a3 255 # cpupower
7c69f2c2
MT
256 make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
257 mandir=%{mandir} CPUFREQ_BENCH=false install
258
7c69f2c2 259 chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
302e8df8 260
302e8df8
MT
261 # tmon
262 pushd tools/thermal/tmon
263 make INSTALL_ROOT=%{BUILDROOT} install
264 popd
802ea3af
MT
265 end
266end
267
268packages
d8d7d102
MT
269 package kernel-tools
270 summary = Assortment of tools for the Linux kernel.
271 description = %{summary}
bcf38aec 272
d8d7d102
MT
273 filter_requires
274 perl>=[0-9]\:.*
275 end
276 end
277
278 package kernel
279 summary = The Linux kernel %{fullver}
bcf38aec 280
1c9b6c79 281 prerequires
4c928ab7 282 /sbin/depmod
1c9b6c79
MT
283 end
284
285 provides
d8d7d102 286 kernel = %{fullver}
1c9b6c79
MT
287 end
288
802ea3af 289 requires
4c928ab7 290 dracut
868edea1 291 kernel-updater
802ea3af 292 linux-firmware
aa7960eb 293 intel-microcode
802ea3af 294 end
ad1ea534 295
bcf38aec 296 files
d8d7d102
MT
297 /boot/System.map-%{fullver}
298 /boot/dtb-%{fullver}
299 /boot/vmlinuz-%{fullver}
300 /boot/initramfs-%{fullver}.img
301 /usr/lib/modules/%{fullver}
bcf38aec
MT
302 end
303
aa3ab846 304 _posttrans
d8d7d102 305 kernel-updater install %{fullver}
aa3ab846
MT
306 end
307
ad1ea534 308 script posttransin
aa3ab846
MT
309 %{_posttrans}
310 end
311
312 script posttransup
313 %{_posttrans}
314 end
315
868edea1 316 script postun
d8d7d102 317 kernel-updater uninstall %{fullver}
bcf38aec
MT
318 end
319 end
320
d8d7d102
MT
321 package kernel-devel
322 summary = Development files of kernel-%{fullver}
bcf38aec
MT
323 description
324 %{summary}
325
326 Install this package in order to compile modules for
d8d7d102 327 kernel release %{fullver}.
bcf38aec
MT
328 end
329
10756fd5
MT
330 provides
331 kernel-devel = %{thisver}
332 end
333
bcf38aec
MT
334 filter_requires
335 perl>=[0-9]\:.*
ad1ea534
MT
336 end
337
bcf38aec 338 files
d8d7d102
MT
339 /usr/lib/modules/%{fullver}/build
340 /usr/lib/modules/%{fullver}/source
341 /usr/src/kernels/%{fullver}
45088e83 342 end
bcf38aec 343 end
81bb0557 344
802ea3af 345 package kernel-headers
d8d7d102 346 summary = Header files of the kernel release %{fullver}
802ea3af 347 desciption = %{summary}
c698e4be
MT
348
349 files
350 /usr/include
351 end
802ea3af 352 end
802ea3af 353end