kernel-tfg/master.inc

225 lines
7.5 KiB
PHP
Raw Normal View History

2023-09-12 11:19:32 +00:00
%global KVERREL %{version}-%{release}.%{_target_cpu}
# disable the '-debug{info,source}' pkgs
%define debug_package %{nil}
# also disable packaging files in '/usr/lib/.build-id/'
%define _build_id_links none
2023-10-07 14:17:28 +00:00
Name: kernel-%{kname}-tfg
2023-09-12 11:19:32 +00:00
Summary: The Linux Kernel
License: GPL
URL: https://www.kernel.org
Provides: kernel-%{kname}-tfg = %{KVERREL}
2023-09-12 11:19:32 +00:00
BuildRequires: bc binutils bison dwarves
BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
2023-10-08 06:51:11 +00:00
BuildRequires: make openssl openssl-devel perl python3 rsync
BuildRequires: clang lld llvm llvm-devel
2023-09-12 11:19:32 +00:00
BuildRequires: opencsd-devel
BuildRequires: kmod
BuildRequires: python3-devel
Requires: coreutils systemd dracut
Requires: /usr/bin/kernel-install
Requires: /usr/sbin/installkernel
2023-09-12 11:19:32 +00:00
Requires: linux-firmware
%ifarch aarch64
%global build_arch arm64
%global make_targets olddefconfig Image.gz modules dtbs
2023-09-12 11:19:32 +00:00
%endif
%ifarch riscv64
%global build_arch riscv64
%global make_targets olddefconfig Image.gz modules dtbs
2023-09-12 11:19:32 +00:00
%endif
2023-10-08 06:51:11 +00:00
%global make make -j$(( $(nproc) + 2 )) KERNELRELEASE=%{KVERREL}
2023-09-12 11:19:32 +00:00
Source2: https://git.resf.org/thefossguy/kernel-tfg/archive/master.tar.gz
2023-09-12 11:19:32 +00:00
%description
The Linux Kernel, the operating system core itself
%package headers
Summary: Header files for the Linux kernel for use by glibc
2023-10-07 14:17:28 +00:00
Obsoletes: kernel-%{kname}-headers-tfg
Provides: kernel-%{kname}-headers-tfg = %{KVERREL}
2023-09-12 11:19:32 +00:00
%description headers
Kernel-headers includes the C header files that specify the interface
between the Linux kernel and userspace libraries and programs. The
header files define structures and constants that are needed for
building most standard programs and are also needed for rebuilding the
glibc package
%package devel
Summary: Development package for building kernel modules to match the kernel
2023-10-07 14:17:28 +00:00
Provides: kernel-%{kname}-devel-tfg = %{KVERREL}
2023-09-12 15:58:44 +00:00
AutoReqProv: no
2023-09-12 11:19:32 +00:00
%description devel
This package provides kernel headers and makefiles sufficient to build modules
against the kernel package.
%prep
if [ -f ../SOURCES/linux-%{version}.tar.sign ]; then
gzip --decompress --keep %{SOURCE0}
gpg2 --locate-keys torvalds@kernel.org gregkh@kernel.org
gpg2 --verify %{SOURCE99} || exit 1
# not needed anymore, might as well delete it to make space for the
# build and install phases
rm -vf linux-%{version}.tar
fi
%setup -q -n %{src_dir}
find ../../SOURCES -type f -name "patch-*.patch" -print0 | sort -z | xargs --no-run-if-empty -t -0 -n 1 patch -p1 -i
2023-09-12 11:19:32 +00:00
# Mangle all Python shebangs to be Python 3 explicitly.
# -i specifies the interpreter for the shebang
# -n prevents creating ~backup files
# -p preserves timestamps
# This fixes errors such as
# *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly.
# Process all files in the Documentation, scripts and tools directories.
pathfix.py -i "%{__python3} %{py3_shbang_opts}" -n -p \
tools/kvm/kvm_stat/kvm_stat \
scripts/show_delta \
scripts/jobserver-exec \
scripts/diffconfig \
scripts/clang-tools \
scripts/bloat-o-meter \
tools \
scripts \
Documentation \
drivers >/dev/null 2>&1
2023-09-12 11:19:32 +00:00
2023-10-08 06:51:11 +00:00
export LLVM=1 AR=llvm-ar CC=clang HOSTAR=llvm-ar HOSTCC=clang HOSTCXX=clang++ HOSTLD=ld.lld LD=ld.lld NM=llvm-nm OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf STRIP=llvm-strip
2023-09-12 11:19:32 +00:00
[ -f .config ] && rm -vf .config*
%{make} distclean
%{make} "${EXTRA_LINUX_CONFIG[@]}" %{target_config}
2023-10-07 14:30:55 +00:00
cp .config .config.%{target_config}
tar -xf %{SOURCE2} -C .
cp -vr kernel-tfg/{configure-linux.sh,extra-configs} .
rm -rf kernel-tfg/
./configure-linux.sh
2023-09-12 11:19:32 +00:00
2023-10-08 13:31:42 +00:00
if [[ "%{name}" =~ 'opi5' ]]; then
sed -i 's@KBUILD_IMAGE := $(boot)/Image.gz@KBUILD_IMAGE := $(boot)/Image@' arch/arm64/Makefile
%global make_targets olddefconfig Image modules dtbs
2023-10-08 13:31:42 +00:00
fi
2023-09-12 11:19:32 +00:00
%build
2023-10-08 06:51:11 +00:00
%{make} PYTHON=%{__python3} %{make_targets}
2023-09-12 11:19:32 +00:00
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
2023-09-12 11:19:32 +00:00
2023-09-13 00:14:25 +00:00
# install the kernel
2023-09-23 01:45:08 +00:00
mkdir -p $RPM_BUILD_ROOT/boot
2023-09-13 00:14:25 +00:00
cp $(%{make} -s image_name) $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
chmod 755 $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
2023-10-04 23:35:24 +00:00
echo "%{KVERREL}" > $RPM_BUILD_ROOT/boot/.uname-%{KVERREL}
2023-09-13 00:14:25 +00:00
2023-09-12 11:19:32 +00:00
# install DTBs
%ifarch aarch64 || riscv64
2023-10-08 06:51:11 +00:00
%{make} INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/boot/dtb-%{KVERREL} dtbs_install
2023-10-09 00:12:24 +00:00
# delete "arch/%{build_arch}/boot/dts" because "$PWD" will be packaged in "%devel"
2023-09-12 11:19:32 +00:00
find arch/%{build_arch}/boot/dts -name '*.dtb' -type f -delete
%endif
# install modules
# '$(mod-fw)' is overridden because there is no reason to install any firmware
# since we already have 'linux-firmware' package as the dependency of this package.
2023-10-04 06:46:41 +00:00
%if "%{name}" == "kernel-next-tfg"
2023-10-08 06:51:11 +00:00
%{make} INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT mod-fw= DEPMOD=/doesnt/exist modules_install
2023-10-04 06:46:41 +00:00
%else
2023-10-08 06:51:11 +00:00
%{make} INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$RPM_BUILD_ROOT mod-fw= modules_install
2023-10-04 06:46:41 +00:00
%endif
2023-09-12 11:19:32 +00:00
# install headers
2023-10-08 06:51:11 +00:00
%{make} INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr headers_install
2023-09-12 11:19:32 +00:00
# install other key files too
2023-09-13 00:14:25 +00:00
install -m 644 .config $RPM_BUILD_ROOT/boot/config-%{KVERREL}
install -m 644 .config $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/config
install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{KVERREL}
install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/System.map
2023-09-12 11:19:32 +00:00
2023-09-13 00:14:25 +00:00
# fix links
rm -rf $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
rm -rf $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/source
ln -fns /usr/src/kernels/%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
ln -fns /usr/src/kernels/%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/source
2023-09-12 11:19:32 +00:00
2023-09-13 00:14:25 +00:00
# install actual Linux src to /usr/src/kernels/%{KVERREL}
2023-09-12 11:19:32 +00:00
mkdir -p $RPM_BUILD_ROOT/usr/src/kernels/%{KVERREL}
2023-10-04 06:46:17 +00:00
if [ -f scripts/package/install-extmod-build ]; then
%{make} run-command KBUILD_RUN_COMMAND='${RPM_BUILD_DIR}/%{src_dir}/scripts/package/install-extmod-build $RPM_BUILD_ROOT/usr/src/kernels/%{KVERREL}'
else
touch $RPM_BUILD_ROOT/usr/src/kernels/%{KVERREL}/MAYBE_THIS_WORKS
fi
2023-09-12 11:19:32 +00:00
%clean
rm -rf $RPM_BUILD_ROOT
%post
2023-10-07 15:27:52 +00:00
set -xeuf -o pipefail
2023-09-12 11:19:32 +00:00
if [ -x /sbin/installkernel -a -r /boot/vmlinuz-%{KVERREL} -a -r /boot/System.map-%{KVERREL} ]; then
cp /boot/vmlinuz-%{KVERREL} /boot/.vmlinuz-%{KVERREL}-rpm
cp /boot/System.map-%{KVERREL} /boot/.System.map-%{KVERREL}-rpm
rm -f /boot/vmlinuz-%{KVERREL} /boot/System.map-%{KVERREL}
/sbin/installkernel %{KVERREL} /boot/.vmlinuz-%{KVERREL}-rpm /boot/.System.map-%{KVERREL}-rpm
rm -f /boot/.vmlinuz-%{KVERREL}-rpm /boot/.System.map-%{KVERREL}-rpm
fi
2023-10-08 10:20:17 +00:00
2023-10-09 00:12:24 +00:00
# we pushd into /boot because we want our symlinks to be
# vmlinuz -> vmlinuz-6.6.0-20231004.6.el9.aarch64
# and not
# vmlinuz -> /boot/vmlinuz-6.6.0-20231004.6.el9.aarch64
2023-10-08 10:20:17 +00:00
pushd /boot
2023-10-09 00:12:24 +00:00
rm -vf .uname dtb initramfs.img System.map vmlinuz
2023-10-08 10:53:15 +00:00
ln -s .uname-%{KVERREL} .uname
2023-10-09 00:12:24 +00:00
ln -s dtb-%{KVERREL} dtb
2023-10-08 10:53:15 +00:00
ln -s initramfs-%{KVERREL}.img initramfs.img
ln -s System.map-%{KVERREL} System.map
ln -s vmlinuz-%{KVERREL} vmlinuz
2023-10-08 10:20:17 +00:00
popd
2023-09-12 11:19:32 +00:00
%preun
2023-10-09 00:12:24 +00:00
# remove symlinks
2023-10-09 00:00:32 +00:00
rm -vf /boot/.uname /boot/.uname-%{KVERREL}
rm -vf /boot/initramfs.img
rm -vf /boot/System.map
rm -vf /boot/vmlinuz
2023-10-09 00:12:24 +00:00
2023-09-12 11:19:32 +00:00
if [ -x /sbin/new-kernel-pkg ]; then
new-kernel-pkg --remove %{KVERREL} --rminitrd --initrdfile=/boot/initramfs-%{KVERREL}.img
elif [ -x /usr/bin/kernel-install ]; then
kernel-install remove %{KVERREL}
fi
%postun
if [ -x /sbin/update-bootloader ]; then
/sbin/update-bootloader --remove %{KVERREL}
fi
2023-10-09 00:12:24 +00:00
[ -d /boot/dtb ] && rm -rf /boot/dtb
2023-09-12 11:19:32 +00:00
%files headers
2023-09-12 15:58:44 +00:00
%defattr (-, root, root)
2023-09-12 11:19:32 +00:00
/usr/include
%files devel
2023-09-12 15:58:44 +00:00
%defattr (-, root, root)
2023-09-12 11:19:32 +00:00
/usr/src/kernels/%{KVERREL}
2023-09-12 15:58:44 +00:00
/lib/modules/%{KVERREL}/build
/lib/modules/%{KVERREL}/source
2023-09-12 13:06:28 +00:00
%files
%defattr (-, root, root)
2023-09-13 00:14:25 +00:00
%exclude /lib/modules/%{KVERREL}/build
%exclude /lib/modules/%{KVERREL}/source
2023-09-12 13:06:28 +00:00
/lib/modules/%{KVERREL}
2023-10-05 02:12:08 +00:00
/boot/.uname-%{KVERREL}
2023-09-12 13:06:28 +00:00
/boot/*