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