init commit
This commit is contained in:
commit
b756208efc
39
configure-linux.sh
Normal file
39
configure-linux.sh
Normal file
@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xeu
|
||||
|
||||
export EXTRA_LINUX_MODULES=()
|
||||
export EXTRA_LINUX_BUILTIN=()
|
||||
EXTRA_LINUX_CONFIG=()
|
||||
|
||||
for FILE in ./extra-configs/*.sh; do
|
||||
source "${FILE}"
|
||||
done
|
||||
|
||||
if [[ "${EXTRA_LINUX_MODULES[*]}" != "" ]]; then
|
||||
for CONFIG_MODULE in "${EXTRA_LINUX_MODULES[@]}"; do
|
||||
EXTRA_LINUX_CONFIG+=("${CONFIG_MODULE}"'=m')
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "${EXTRA_LINUX_BUILTIN[*]}" != "" ]]; then
|
||||
for CONFIG_BUILTIN in "${EXTRA_LINUX_BUILTIN[@]}"; do
|
||||
EXTRA_LINUX_CONFIG+=("${CONFIG_BUILTIN}"'=y')
|
||||
done
|
||||
fi
|
||||
|
||||
function verify_config {
|
||||
[[ "${EXTRA_LINUX_CONFIG[*]}" == "" ]] && >&2 echo '**** WARNING: List of extra config options to check is empty, doing nothing.'
|
||||
|
||||
if [[ ! -f .config ]]; then
|
||||
>&2 echo '**** ERROR: The config file could not be found.'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for CONFIG_OPTION in "${EXTRA_LINUX_CONFIG[@]}"; do
|
||||
if ! grep "${CONFIG_OPTION}" .config 2>&1 /dev/null; then
|
||||
>&2 echo "**** ERROR: Config option '${CONFIG_OPTION}' not found in the config file."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
23
extra-configs/r8169.sh
Normal file
23
extra-configs/r8169.sh
Normal file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
EXTRA_LINUX_MODULES+=('CONFIG_R8169')
|
||||
# Q: What requires this option to be enabled?
|
||||
# A: Enabling this option adds support for the Realtek RTL8125 2.5GbE Controller
|
||||
# that is present on the Radxa Rock 5 Model B SBC, connected via the PCIe bus.
|
||||
# ```sh
|
||||
# $ sudo lspci -k
|
||||
# 0004:01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
|
||||
# Subsystem: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller
|
||||
# Kernel driver in use: r8169
|
||||
# Kernel modules: r8169
|
||||
# ```
|
||||
#
|
||||
# Q: Why wasn't this option enabled by `make defconfig`?
|
||||
# A: There are two reasons for this:
|
||||
# 1. None of the symbols that are enabled by the defconfig (built-in or
|
||||
# otherwise)--that are needed by CONFIG_R8169--"select" this option. The
|
||||
# dependencies are already enabled (built-in or otherwise). So all that
|
||||
# needs to be done is to enable this tristate module as a **loadable module**.
|
||||
# 2. Since this Ethernet controller is connected via the PCIe bus and is not
|
||||
# the Ethernet PHY offered by the RK3588 SoC itself, it is not selected
|
||||
# by 'CONFIG_ARCH_ROCKCHIP' either.
|
15
kernel-collabora-tfg.spec
Normal file
15
kernel-collabora-tfg.spec
Normal file
@ -0,0 +1,15 @@
|
||||
# change version here
|
||||
%global fake_ver 1
|
||||
%global rel_ver 0
|
||||
%global commit_id b034abfca55f329be85c37a84768775c60f52885
|
||||
%global short_commit_id b034abfc
|
||||
|
||||
Name: kernel-collabora-tfg
|
||||
Version: %{fake_ver}.%{short_commit_id}
|
||||
Release: %{rel_ver}%{?dist}
|
||||
|
||||
Source0: https://gitlab.collabora.com/hardware-enablement/rockchip-3588/linux/-/archive/%{commit_id}.tar.gz
|
||||
Source1: master.inc
|
||||
|
||||
%global src_dir linux-%{commit_id}
|
||||
%include %{SOURCE1}
|
18
kernel-lts-tfg.spec
Normal file
18
kernel-lts-tfg.spec
Normal file
@ -0,0 +1,18 @@
|
||||
# change version here
|
||||
%global rel_ver 0
|
||||
%global major_ver 6
|
||||
%global minor_ver 1
|
||||
%global patch_ver 52
|
||||
%global lts_flag 1
|
||||
|
||||
Name: kernel-lts-tfg
|
||||
Version: %{major_ver}.%{minor_ver}.%{patch_ver}
|
||||
Release: %{rel_ver}%{?dist}
|
||||
BuildRequires: gnupg2
|
||||
|
||||
Source0: https://cdn.kernel.org/pub/linux/kernel/v%{major_ver}.x/linux-%{version}.tar.gz
|
||||
Source1: master.inc
|
||||
Source99: https://cdn.kernel.org/pub/linux/kernel/v%{major_ver}.x/linux-%{version}.tar.sign
|
||||
|
||||
%global src_dir linux-%{version}
|
||||
%include %{SOURCE1}
|
13
kernel-next-tfg.spec
Normal file
13
kernel-next-tfg.spec
Normal file
@ -0,0 +1,13 @@
|
||||
# change version here
|
||||
%global rel_ver 0
|
||||
%global next_snapshot_date 20230911
|
||||
|
||||
Name: kernel-next-tfg
|
||||
Version: %{next_snapshot_date}
|
||||
Release: %{rel_ver}%{?dist}
|
||||
|
||||
Source0: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-%{next_snapshot_date}.tar.gz
|
||||
Source1: master.inc
|
||||
|
||||
%global src_dir linux-next-next-%{next_snapshot_date}
|
||||
%include %{SOURCE1}
|
15
kernel-rc-tfg.spec
Normal file
15
kernel-rc-tfg.spec
Normal file
@ -0,0 +1,15 @@
|
||||
# change version here
|
||||
%global rel_ver 0
|
||||
%global major_ver 6
|
||||
%global minor_ver 6
|
||||
%global rc_ver 1
|
||||
|
||||
Name: kernel-rc-tfg
|
||||
Version: %{major_ver}.%{minor_ver}.0
|
||||
Release: rc%{rc_ver}.%{rel_ver}%{?dist}
|
||||
|
||||
Source0: https://git.kernel.org/torvalds/t/linux-%{major_ver}.%{minor_ver}-rc%{rc_ver}.tar.gz
|
||||
Source1: master.inc
|
||||
|
||||
%global src_dir linux-%{major_ver}.%{minor_ver}-rc%{rc_ver}
|
||||
%include %{SOURCE1}
|
17
kernel-stable-tfg.spec
Normal file
17
kernel-stable-tfg.spec
Normal file
@ -0,0 +1,17 @@
|
||||
# change version here
|
||||
%global rel_ver 0
|
||||
%global major_ver 6
|
||||
%global minor_ver 5
|
||||
%global patch_ver 2
|
||||
|
||||
Name: kernel-stable-tfg
|
||||
Version: %{major_ver}.%{minor_ver}.%{patch_ver}
|
||||
Release: %{rel_ver}%{?dist}
|
||||
BuildRequires: gnupg2
|
||||
|
||||
Source0: https://cdn.kernel.org/pub/linux/kernel/v%{major_ver}.x/linux-%{version}.tar.gz
|
||||
Source1: master.inc
|
||||
Source99: https://cdn.kernel.org/pub/linux/kernel/v%{major_ver}.x/linux-%{version}.tar.sign
|
||||
|
||||
%global src_dir linux-%{version}
|
||||
%include %{SOURCE1}
|
184
master.inc
Normal file
184
master.inc
Normal file
@ -0,0 +1,184 @@
|
||||
%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
|
||||
|
||||
Summary: The Linux Kernel
|
||||
License: GPL
|
||||
URL: https://www.kernel.org
|
||||
Provides: %{name}-%{KVERREL}
|
||||
BuildRequires: bc binutils bison dwarves
|
||||
BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||
BuildRequires: gcc make openssl openssl-devel perl python3 rsync
|
||||
BuildRequires: opencsd-devel
|
||||
BuildRequires: kmod
|
||||
BuildRequires: python3-devel
|
||||
Requires: coreutils systemd dracut
|
||||
Requires: /usr/bin/kernel-install
|
||||
Requires: linux-firmware
|
||||
|
||||
%ifarch aarch64
|
||||
%global build_arch arm64
|
||||
%global make_targets Image.gz modules dtbs
|
||||
%endif
|
||||
|
||||
%ifarch riscv64
|
||||
%global build_arch riscv64
|
||||
%global make_targets Image.gz modules dtbs
|
||||
%endif
|
||||
|
||||
%global kernel_image $(make -s image_name)
|
||||
%global make make KERNELRELEASE=%{KVERREL}
|
||||
|
||||
Source2: https://git.thefossguy.com/enterprise-linux/kernel-tfg/archive/master.tar.gz
|
||||
|
||||
%description
|
||||
The Linux Kernel, the operating system core itself
|
||||
|
||||
%package headers
|
||||
Summary: Header files for the Linux kernel for use by glibc
|
||||
%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
|
||||
%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}
|
||||
|
||||
# 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
|
||||
|
||||
tar -xf %{SOURCE2} -C .
|
||||
cp -vr kernel-tfg/{configure-linux.sh,extra-configs} .
|
||||
rm -rf kernel-tfg/
|
||||
|
||||
source ./configure-linux.sh
|
||||
|
||||
[ -f .config ] && rm -vf .config*
|
||||
%{make} distclean
|
||||
|
||||
%{make} "${EXTRA_LINUX_CONFIG[@]}" defconfig
|
||||
verify_config
|
||||
|
||||
%build
|
||||
source ./configure-linux.sh
|
||||
%{make} %{?_smp_mflags} PYTHON=%{__python3} %{make_targets}
|
||||
verify_config
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/boot
|
||||
mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
|
||||
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}
|
||||
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/systemtap
|
||||
|
||||
# install DTBs
|
||||
%ifarch aarch64 || riscv64
|
||||
%{make} %{?_smp_mflags} dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/boot/dtb-%{KVERREL}
|
||||
cp -r $RPM_BUILD_ROOT/boot/dtb-%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/dtb
|
||||
find arch/%{build_arch}/boot/dts -name '*.dtb' -type f -delete
|
||||
%endif
|
||||
|
||||
# install modules
|
||||
# Disable depmod with by passing '/doesnt/exist' to the DEPMOD environment variable.
|
||||
# '$(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.
|
||||
%{make} %{?_smp_mflags} modules_install INSTALL_MOD_PATH=$RPM_BUILD_ROOT DEPMOD=/doesnt/exist mod-fw=
|
||||
|
||||
# install headers
|
||||
%{make} %{?_smp_mflags} headers_install INSTALL_HDR_PATH=$RPM_BUILD_ROOT/usr
|
||||
|
||||
# install other key files too
|
||||
cp System.map $RPM_BUILD_ROOT/boot/System.map-%{KVERREL}
|
||||
cp .config $RPM_BUILD_ROOT/boot/config-%{KVERREL}
|
||||
|
||||
# install the kernel
|
||||
cp %{kernel_image} $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
|
||||
chmod 755 $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
|
||||
cp $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/vmlinuz
|
||||
|
||||
# cleanup of sorts
|
||||
EXCLUDES="--exclude=SCCS --exclude=BitKeeper --exclude=.svn \
|
||||
--exclude=CVS --exclude=.pc --exclude=.hg --exclude=.git \
|
||||
--exclude=*vmlinux* --exclude=*.mod \
|
||||
--exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
|
||||
--exclude=.config.old --exclude=.missing-syscalls.d --exclude=*.s"
|
||||
rm -rf $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
||||
rm -rf $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/source
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/src/kernels/%{KVERREL}
|
||||
tar cf - $EXCLUDES . | tar xf - -C $RPM_BUILD_ROOT/usr/src/kernels/%{KVERREL}
|
||||
cd $RPM_BUILD_ROOT/lib/modules/%{KVERREL}
|
||||
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
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%post
|
||||
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
|
||||
|
||||
%preun
|
||||
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
|
||||
|
||||
%files
|
||||
%defattr (-, root, root)
|
||||
/boot
|
||||
/lib/modules/%{KVERREL}
|
||||
|
||||
%files headers
|
||||
/usr/include
|
||||
|
||||
%files devel
|
||||
/usr/src/kernels/%{KVERREL}
|
Loading…
Reference in New Issue
Block a user