mirror of
https://abf.rosa.ru/djam/kernel.git
synced 2025-02-24 08:42:53 +00:00
DKMS operations should be tied to kernel-<...>-devel packages
Before this commit, DKMS was called to build and install the external kernel modules when kernel-<flavour> packages were installed, and only if the development files were also available. This is error-prone because there is no guarantee the -devel package creates the necessary files before. As a result, some proprietary drivers could not be built when the kernel is updated. This is an attempt to fix the problem. Because kernel-<flavour>-devel package is enough to build kernel modules with DKMS, I moved these build and install operations to kernel-<flavour>-devel from kernel-<flavour>. Some of the related code was simplified as well.
This commit is contained in:
parent
c0342f35bc
commit
3e9fece6bd
1 changed files with 43 additions and 80 deletions
123
kernel.spec
123
kernel.spec
|
@ -355,7 +355,7 @@ Source51: cpupower.config
|
||||||
Source52: cpupower-start.sh
|
Source52: cpupower-start.sh
|
||||||
Source53: cpupower.path
|
Source53: cpupower.path
|
||||||
|
|
||||||
# Our patch tarball,
|
# Our patch tarball,
|
||||||
# see https://abf.rosalinux.ru/soft/kernel-patches-and-configs/
|
# see https://abf.rosalinux.ru/soft/kernel-patches-and-configs/
|
||||||
Source100: kernel-patches-and-configs-%{kversion}.tar.xz
|
Source100: kernel-patches-and-configs-%{kversion}.tar.xz
|
||||||
|
|
||||||
|
@ -375,8 +375,8 @@ Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/stable-review
|
||||||
Source11: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/stable-review/patch-%{kversion}-%{kpatch}.sign
|
Source11: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/stable-review/patch-%{kversion}-%{kpatch}.sign
|
||||||
%else
|
%else
|
||||||
Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.xz
|
Patch1: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.xz
|
||||||
Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.sign
|
Source10: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/testing/patch-%{kernelversion}.%{patchlevel}-%{kpatch}.sign
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
%if %kgit
|
%if %kgit
|
||||||
Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/snapshots/patch-%{kernelversion}.%{patchlevel}-%{kpatch}-git%{kgit}.xz
|
Patch2: ftp://ftp.kernel.org/pub/linux/kernel/v%{kernelversion}.x/snapshots/patch-%{kernelversion}.%{patchlevel}-%{kpatch}-git%{kgit}.xz
|
||||||
|
@ -532,7 +532,9 @@ Group: System/Kernel and hardware \
|
||||||
Version: %{fakever} \
|
Version: %{fakever} \
|
||||||
Release: %{fakerel} \
|
Release: %{fakerel} \
|
||||||
Requires: glibc-devel ncurses-devel make gcc perl \
|
Requires: glibc-devel ncurses-devel make gcc perl \
|
||||||
Summary: The kernel-devel files for %{kname}-%{1}-%{buildrel} \
|
Requires(post): dkms \
|
||||||
|
Requires(preun): dkms \
|
||||||
|
Summary: Development files for %{kname}-%{1}-%{buildrel} \
|
||||||
Group: Development/Kernel \
|
Group: Development/Kernel \
|
||||||
Provides: %{kname}-devel = %{kverrel} \
|
Provides: %{kname}-devel = %{kverrel} \
|
||||||
Provides: %{kname}-%{1}-devel \
|
Provides: %{kname}-%{1}-devel \
|
||||||
|
@ -603,7 +605,6 @@ latest %{kname}-%{1}-devel installed... \
|
||||||
%endif \
|
%endif \
|
||||||
\
|
\
|
||||||
%post -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-post \
|
%post -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-post \
|
||||||
%posttrans -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-posttrans \
|
|
||||||
%preun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-preun \
|
%preun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-preun \
|
||||||
%postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
|
%postun -n %{kname}-%{1}-%{buildrel} -f kernel_files.%{1}-postun \
|
||||||
\
|
\
|
||||||
|
@ -908,7 +909,7 @@ full preempt, rcu boost, CFS cpu scheduler and BFQ i/o scheduler.
|
||||||
#
|
#
|
||||||
%ifarch %{ix86}
|
%ifarch %{ix86}
|
||||||
#
|
#
|
||||||
# kernel-nrj-desktop-core2: nrj, Intel Core 2 and newer, smp-alternatives, 4 GB
|
# kernel-nrj-desktop-core2: nrj, Intel Core 2 and newer, smp-alternatives, 4 GB
|
||||||
#
|
#
|
||||||
%if %build_nrj_desktop_core2
|
%if %build_nrj_desktop_core2
|
||||||
%define summary_nrj_desktop_core2 Linux Kernel for desktop use with i686 & 4GB RAM
|
%define summary_nrj_desktop_core2 Linux Kernel for desktop use with i686 & 4GB RAM
|
||||||
|
@ -1178,7 +1179,7 @@ PrepareKernel() {
|
||||||
config_dir=arch/arm64/configs
|
config_dir=arch/arm64/configs
|
||||||
%endif
|
%endif
|
||||||
echo "Make config for kernel $extension"
|
echo "Make config for kernel $extension"
|
||||||
|
|
||||||
pushd 3rdparty
|
pushd 3rdparty
|
||||||
perl mkbuild.pl
|
perl mkbuild.pl
|
||||||
popd
|
popd
|
||||||
|
@ -1237,7 +1238,7 @@ BuildKernel() {
|
||||||
install -d %{temp_modules}/$KernelVer
|
install -d %{temp_modules}/$KernelVer
|
||||||
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
|
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=$KernelVer modules_install
|
||||||
|
|
||||||
# headers
|
# headers
|
||||||
%make INSTALL_HDR_PATH=%{temp_root}%{_prefix} KERNELRELEASE=$KernelVer headers_install
|
%make INSTALL_HDR_PATH=%{temp_root}%{_prefix} KERNELRELEASE=$KernelVer headers_install
|
||||||
find %{temp_root}%{_prefix} -name .install -or -name ..install.cmd | %kxargs rm -f
|
find %{temp_root}%{_prefix} -name .install -or -name ..install.cmd | %kxargs rm -f
|
||||||
|
|
||||||
|
@ -1248,7 +1249,8 @@ BuildKernel() {
|
||||||
SaveDevel() {
|
SaveDevel() {
|
||||||
devel_flavour=$1
|
devel_flavour=$1
|
||||||
|
|
||||||
DevelRoot=/usr/src/linux-%{kversion}-$devel_flavour-%{buildrpmrel}
|
KernelVer=%{kversion}-$devel_flavour-%{buildrpmrel}
|
||||||
|
DevelRoot=/usr/src/linux-$KernelVer
|
||||||
TempDevelRoot=%{temp_root}$DevelRoot
|
TempDevelRoot=%{temp_root}$DevelRoot
|
||||||
|
|
||||||
mkdir -p $TempDevelRoot
|
mkdir -p $TempDevelRoot
|
||||||
|
@ -1328,6 +1330,12 @@ SaveDevel() {
|
||||||
# disable mrproper in -devel rpms
|
# disable mrproper in -devel rpms
|
||||||
patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
|
patch -p1 --fuzz=0 -d $TempDevelRoot -i %{SOURCE2}
|
||||||
|
|
||||||
|
# Create the symlinks needed by DKMS
|
||||||
|
ModulesRoot=%{temp_modules}/$KernelVer
|
||||||
|
mkdir -p $ModulesRoot
|
||||||
|
ln -sf $DevelRoot $ModulesRoot/build
|
||||||
|
ln -sf $DevelRoot $ModulesRoot/source
|
||||||
|
|
||||||
kernel_devel_files=../kernel_devel_files.$devel_flavour
|
kernel_devel_files=../kernel_devel_files.$devel_flavour
|
||||||
|
|
||||||
|
|
||||||
|
@ -1398,33 +1406,31 @@ $DevelRoot/Makefile
|
||||||
$DevelRoot/Module.symvers
|
$DevelRoot/Module.symvers
|
||||||
$DevelRoot/arch/Kconfig
|
$DevelRoot/arch/Kconfig
|
||||||
%doc README.kernel-sources
|
%doc README.kernel-sources
|
||||||
|
%{_modulesdir}/$KernelVer/build
|
||||||
|
%{_modulesdir}/$KernelVer/source
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
### Create -devel Post script on the fly
|
### Create -devel Post script on the fly
|
||||||
cat > $kernel_devel_files-post <<EOF
|
cat > $kernel_devel_files-post <<EOF
|
||||||
if [ -d /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel} ]; then
|
/usr/sbin/dkms_autoinstaller start $KernelVer
|
||||||
rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/{build,source}
|
|
||||||
ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
|
|
||||||
ln -sf $DevelRoot /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
|
|
||||||
fi
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
### Create -devel Preun script on the fly
|
### Create -devel Preun script on the fly
|
||||||
cat > $kernel_devel_files-preun <<EOF
|
cat > $kernel_devel_files-preun <<EOF
|
||||||
if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build ]; then
|
for ii in \$(/usr/sbin/dkms status -k $KernelVer); do
|
||||||
rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/build
|
mod=\$(echo \$ii | awk -v FS=' ,' '{ print \$1; }')
|
||||||
fi
|
ver=\$(echo \$ii | awk -v FS=' ,' '{ print \$2; }')
|
||||||
if [ -L /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source ]; then
|
/usr/sbin/dkms --rpm_safe_upgrade remove -m \$mod -v \$ver -k $KernelVer || true
|
||||||
rm -f /lib/modules/%{kversion}-$devel_flavour-%{buildrpmrel}/source
|
done
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
### Create -devel Postun script on the fly
|
### Create -devel Postun script on the fly
|
||||||
cat > $kernel_devel_files-postun <<EOF
|
cat > $kernel_devel_files-postun <<EOF
|
||||||
rm -rf /usr/src/linux-%{kversion}-$devel_flavour-%{buildrpmrel} >/dev/null
|
rm -rf /usr/src/linux-$KernelVer >/dev/null
|
||||||
|
# Remove the dir if it is already empty.
|
||||||
|
find /lib/modules/$KernelVer -maxdepth 0 -empty -exec rm -rf {} \;
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1460,6 +1466,7 @@ SaveDebug() {
|
||||||
|
|
||||||
CreateFiles() {
|
CreateFiles() {
|
||||||
kernel_flavour=$1
|
kernel_flavour=$1
|
||||||
|
KernelVer=%{kversion}-$kernel_flavour-%{buildrpmrel}
|
||||||
|
|
||||||
kernel_files=../kernel_files.$kernel_flavour
|
kernel_files=../kernel_files.$kernel_flavour
|
||||||
|
|
||||||
|
@ -1469,13 +1476,12 @@ if [ "$kernel_flavour" = "kirkwood" ]; then
|
||||||
fi
|
fi
|
||||||
### Create the kernel_files.*
|
### Create the kernel_files.*
|
||||||
cat > $kernel_files <<EOF
|
cat > $kernel_files <<EOF
|
||||||
%{_bootdir}/System.map-%{kversion}-$kernel_flavour-%{buildrpmrel}
|
%{_bootdir}/System.map-$KernelVer
|
||||||
%{_bootdir}/symvers-%{kversion}-$kernel_flavour-%{buildrpmrel}.xz
|
%{_bootdir}/symvers-$KernelVer.xz
|
||||||
%{_bootdir}/config-%{kversion}-$kernel_flavour-%{buildrpmrel}
|
%{_bootdir}/config-$KernelVer
|
||||||
%{_bootdir}/$ker-%{kversion}-$kernel_flavour-%{buildrpmrel}
|
%{_bootdir}/$ker-$KernelVer
|
||||||
%dir %{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/
|
%{_modulesdir}/$KernelVer/kernel
|
||||||
%{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/kernel
|
%{_modulesdir}/$KernelVer/modules.*
|
||||||
%{_modulesdir}/%{kversion}-$kernel_flavour-%{buildrpmrel}/modules.*
|
|
||||||
%doc README.kernel-sources
|
%doc README.kernel-sources
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
@ -1485,11 +1491,10 @@ EOF
|
||||||
|
|
||||||
### Create kernel Post script
|
### Create kernel Post script
|
||||||
cat > $kernel_files-post <<EOF
|
cat > $kernel_files-post <<EOF
|
||||||
KVER=%{kversion}-$kernel_flavour-%{buildrpmrel}
|
INITRD=/boot/initrd-$KernelVer.img
|
||||||
INITRD=/boot/initrd-\${KVER}.img
|
|
||||||
|
|
||||||
if [ ! -e \${INITRD} ]; then
|
if [ ! -e \${INITRD} ]; then
|
||||||
/sbin/dracut \${INITRD} \${KVER}
|
/sbin/dracut \${INITRD} $KernelVer
|
||||||
else
|
else
|
||||||
printf "WARNING: Initrd image \${INITRD} already exists and will not be replaced.\n"
|
printf "WARNING: Initrd image \${INITRD} already exists and will not be replaced.\n"
|
||||||
fi
|
fi
|
||||||
|
@ -1499,41 +1504,22 @@ pushd /boot > /dev/null
|
||||||
if [ -L vmlinuz-$kernel_flavour ]; then
|
if [ -L vmlinuz-$kernel_flavour ]; then
|
||||||
rm -f vmlinuz-$kernel_flavour
|
rm -f vmlinuz-$kernel_flavour
|
||||||
fi
|
fi
|
||||||
#ln -sf vmlinuz-\${KVER} vmlinuz-$kernel_flavour
|
|
||||||
if [ -L initrd-$kernel_flavour.img ]; then
|
if [ -L initrd-$kernel_flavour.img ]; then
|
||||||
rm -f initrd-$kernel_flavour.img
|
rm -f initrd-$kernel_flavour.img
|
||||||
fi
|
fi
|
||||||
#ln -sf initrd-\${KVER}.img initrd-$kernel_flavour.img
|
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
|
|
||||||
%if %build_devel
|
|
||||||
# create kernel-devel symlinks if matching -devel- rpm is installed
|
|
||||||
if [ -d /usr/src/linux-\${KVER} ]; then
|
|
||||||
rm -f /lib/modules/\${KVER}/{build,source}
|
|
||||||
ln -sf /usr/src/linux-\${KVER} /lib/modules/\${KVER}/build
|
|
||||||
ln -sf /usr/src/linux-\${KVER} /lib/modules/\${KVER}/source
|
|
||||||
fi
|
|
||||||
%endif
|
|
||||||
EOF
|
|
||||||
|
|
||||||
### Create kernel Posttrans script
|
|
||||||
cat > $kernel_files-posttrans <<EOF
|
|
||||||
if [ -x /usr/sbin/dkms_autoinstaller -a -d /usr/src/linux-%{kversion}-$kernel_flavour-%{buildrpmrel} ]; then
|
|
||||||
/usr/sbin/dkms_autoinstaller start %{kversion}-$kernel_flavour-%{buildrpmrel}
|
|
||||||
fi
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
### Create kernel Preun script on the fly
|
### Create kernel Preun script on the fly
|
||||||
cat > $kernel_files-preun <<EOF
|
cat > $kernel_files-preun <<EOF
|
||||||
KVER=%{kversion}-$kernel_flavour-%{buildrpmrel}
|
|
||||||
pushd /boot > /dev/null
|
pushd /boot > /dev/null
|
||||||
if [ -L vmlinuz-$kernel_flavour ]; then
|
if [ -L vmlinuz-$kernel_flavour ]; then
|
||||||
if [ "\$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-\${KVER}" ]; then
|
if [ "\$(readlink vmlinuz-$kernel_flavour)" = "vmlinuz-$KernelVer" ]; then
|
||||||
rm -f vmlinuz-$kernel_flavour
|
rm -f vmlinuz-$kernel_flavour
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ -L initrd-$kernel_flavour.img ]; then
|
if [ -L initrd-$kernel_flavour.img ]; then
|
||||||
if [ "\$(readlink initrd-$kernel_flavour.img)" = "initrd-\${KVER}.img" ]; then
|
if [ "\$(readlink initrd-$kernel_flavour.img)" = "initrd-$KernelVer.img" ]; then
|
||||||
rm -f initrd-$kernel_flavour.img
|
rm -f initrd-$kernel_flavour.img
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1541,35 +1527,18 @@ fi
|
||||||
/usr/sbin/update-grub2
|
/usr/sbin/update-grub2
|
||||||
|
|
||||||
popd > /dev/null
|
popd > /dev/null
|
||||||
%if %build_devel
|
|
||||||
if [ -L /lib/modules/\${KVER}/build ]; then
|
|
||||||
rm -f /lib/modules/\${KVER}/build
|
|
||||||
fi
|
|
||||||
if [ -L /lib/modules/\${KVER}/source ]; then
|
|
||||||
rm -f /lib/modules/\${KVER}/source
|
|
||||||
fi
|
|
||||||
%endif
|
|
||||||
exit 0
|
exit 0
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
### Create kernel Postun script on the fly
|
### Create kernel Postun script on the fly
|
||||||
cat > $kernel_files-postun <<EOF
|
cat > $kernel_files-postun <<EOF
|
||||||
KVER=%{kversion}-$kernel_flavour-%{buildrpmrel}
|
rm -f /boot/initrd-$KernelVer.img
|
||||||
KVER_DEVEL=%{kversion}-$devel_flavour-%{buildrpmrel}
|
rm -f /boot/initrd-$KernelVer_old.img
|
||||||
rm -f /boot/initrd-\${KVER}.img
|
# Remove /lib/modules/<...>/ if it is empty (-devel uses it too).
|
||||||
rm -f /boot/initrd-\${KVER}_old.img
|
find /lib/modules/$KernelVer -maxdepth 0 -empty -exec rm -rf {} \;
|
||||||
rm -rf /lib/modules/\${KVER} >/dev/null
|
|
||||||
if [ -d /var/lib/dkms ]; then
|
|
||||||
rm -f /var/lib/dkms/*/kernel-\${KVER_DEVEL}-%{_target_cpu} >/dev/null
|
|
||||||
rm -rf /var/lib/dkms/*/*/\${KVER_DEVEL} >/dev/null
|
|
||||||
rm -f /var/lib/dkms-binary/*/kernel-\${KVER_DEVEL}-%{_target_cpu} >/dev/null
|
|
||||||
rm -rf /var/lib/dkms-binary/*/*/\${KVER_DEVEL} >/dev/null
|
|
||||||
fi
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CreateKernel() {
|
CreateKernel() {
|
||||||
flavour=$1
|
flavour=$1
|
||||||
|
|
||||||
|
@ -1800,12 +1769,6 @@ find %{target_modules} -name "*.ko" | %kxargs xz -6e
|
||||||
find %{target_modules} -name "*.ko" | %kxargs gzip -9
|
find %{target_modules} -name "*.ko" | %kxargs gzip -9
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
# We used to have a copy of PrepareKernel here
|
|
||||||
# Now, we make sure that the thing in the linux dir is what we want it to be
|
|
||||||
for i in %{target_modules}/*; do
|
|
||||||
rm -f $i/build $i/source
|
|
||||||
done
|
|
||||||
|
|
||||||
# sniff, if we compressed all the modules, we change the stamp :(
|
# sniff, if we compressed all the modules, we change the stamp :(
|
||||||
# we really need the depmod -ae here
|
# we really need the depmod -ae here
|
||||||
pushd %{target_modules}
|
pushd %{target_modules}
|
||||||
|
|
Loading…
Add table
Reference in a new issue