@@ -1321,7 +1321,7 @@ This package provides debug information for the libperf package.
13211321%endif
13221322
13231323%if %{with_tools }
1324- %package -n %{ package_name }- tools
1324+ %package tools
13251325Summary: Assortment of tools for the Linux kernel
13261326Provides: kernel-tools = %{specversion }-%{release }
13271327Conflicts: kernel-tools
@@ -1336,19 +1336,19 @@ Obsoletes: cpuspeed < 1:1.5-16
13361336Requires: %{package_name }-tools-libs = %{specversion }-%{release }
13371337%endif
13381338%define __requires_exclude ^%{_bindir }/python
1339- %description -n %{ package_name }- tools
1339+ %description tools
13401340This package contains the tools/ directory from the kernel source
13411341and the supporting documentation.
13421342
1343- %package -n %{ package_name }- tools-libs
1343+ %package tools-libs
13441344Summary: Libraries for the kernels-tools
13451345Provides: kernel-tools-libs = %{specversion }-%{release }
13461346Conflicts: kernel-tools-libs
1347- %description -n %{ package_name }- tools-libs
1347+ %description tools-libs
13481348This package contains the libraries built from the tools/ directory
13491349from the kernel source.
13501350
1351- %package -n %{ package_name }- tools-libs-devel
1351+ %package tools-libs-devel
13521352Summary: Assortment of tools for the Linux kernel
13531353Provides: kernel-tools-libs-devel = %{specversion }-%{release }
13541354Conflicts: kernel-tools-libs-devel
@@ -1359,15 +1359,15 @@ Obsoletes: cpupowerutils-devel < 1:009-0.6.p1
13591359%endif
13601360Requires: %{package_name }-tools-libs = %{version }-%{release }
13611361Provides: %{package_name }-tools-devel
1362- %description -n %{ package_name }- tools-libs-devel
1362+ %description tools-libs-devel
13631363This package contains the development files for the tools/ directory from
13641364the kernel source.
13651365
1366- %package -n %{ package_name }- tools-debuginfo
1366+ %package tools-debuginfo
13671367Summary: Debug information for package %{package_name }-tools
13681368Requires: %{name }-debuginfo-common-%{_target_cpu } = %{version }-%{release }
13691369AutoReqProv: no
1370- %description -n %{ package_name }- tools-debuginfo
1370+ %description tools-debuginfo
13711371This package provides debug information for package %{package_name }-tools.
13721372
13731373# Note that this pattern only works right to match the .build-id
@@ -1404,17 +1404,24 @@ complex systems.
14041404The rv tool is the interface for a collection of monitors that aim
14051405analysing the logical and timing behavior of Linux.
14061406
1407- %package -n %{package_name }-default
1408- Summary: Make kernel-%{pkg_suffix } the default kernel
1409- Requires: %{package_name }-core
1410- %description -n %{package_name }-default
1411- This package configures kernel-%{pkg_suffix } as the default kernel for the system
1412- by modifying /etc/sysconfig/kernel. When installed, new kernels will be
1413- kernel-%{pkg_suffix } variants by default.
1414-
14151407# with_tools
14161408%endif
14171409
1410+ %package default
1411+ Summary: Set kernel-%{pkg_suffix } as the default kernel
1412+ Requires: %{package_name } = %{?epoch:%{epoch }:}%{specversion }-%{release }
1413+ Requires(posttrans): %{package_name }-core = %{?epoch:%{epoch }:}%{specversion }-%{release }
1414+ Provides: kernel-provider(default)
1415+ Conflicts: kernel-provider(default)
1416+ %description default
1417+ This package sets kernel-%{pkg_suffix } as the default kernel for the system
1418+ by modifying /etc/sysconfig/kernel. When installed, only new kernels of the
1419+ kernel-%{pkg_suffix } variants will be set as the default kernel.
1420+
1421+ WARNING: Installing this package takes ownership of /etc/sysconfig/kernel.
1422+ Manual edits will be overwritten on reinstall. To manage this file yourself,
1423+ remove this package first.
1424+
14181425%if %{with_selftests }
14191426
14201427%package selftests-internal
@@ -3760,23 +3767,69 @@ popd
37603767###
37613768
37623769%if %{with_tools }
3763- %post -n %{ package_name }- tools-libs
3770+ %post tools-libs
37643771/sbin/ldconfig
37653772
3766- %postun -n %{ package_name }- tools-libs
3773+ %postun tools-libs
37673774/sbin/ldconfig
37683775%endif
37693776
3770- %post -n %{package_name }-default
3771- if [ -f /etc/sysconfig/kernel ]; then
3772- # Update existing DEFAULTKERNEL line or append if not present
3773- if grep -q " ^DEFAULTKERNEL=" /etc/sysconfig/kernel; then
3774- /bin/sed -i ' s/^DEFAULTKERNEL=.*/DEFAULTKERNEL=kernel-%{pkg_suffix}/' /etc/sysconfig/kernel
3777+ %postun default
3778+ # Restore original /etc/sysconfig/kernel on uninstall, but only if the file
3779+ # still references our kernel. If another kernel-provider(default) package
3780+ # has already taken over the file, the grep won't match and we leave it alone.
3781+ if [ " $1 " -eq 0 ] && \
3782+ grep -q " ^DEFAULTKERNEL=kernel-%{pkg_suffix}-core$" /etc/sysconfig/kernel 2> /dev/null; then
3783+ if [ -f /etc/sysconfig/kernel.rpmsave ]; then
3784+ mv -f /etc/sysconfig/kernel.rpmsave /etc/sysconfig/kernel
37753785 else
3776- echo " DEFAULTKERNEL=kernel-%{pkg_suffix}" >> /etc/sysconfig/kernel
3786+ # Backup is gone; write a sane default
3787+ cat > /etc/sysconfig/kernel << EOF
3788+ # UPDATEDEFAULT specifies if kernel-install should make
3789+ # new kernels the default
3790+ UPDATEDEFAULT=yes
3791+
3792+ # DEFAULTKERNEL specifies the default kernel package type
3793+ DEFAULTKERNEL=kernel-core
3794+ EOF
37773795 fi
37783796fi
37793797
3798+ %pre default
3799+ # Already configured -- nothing to do. This also handles upgrades safely:
3800+ # %postun of the old version sees $1 > 0 and skips the restore, so our
3801+ # managed file from the prior install remains intact.
3802+ if grep -q " ^DEFAULTKERNEL=kernel-%{pkg_suffix}-core$" /etc/sysconfig/kernel 2> /dev/null; then
3803+ exit 0
3804+ fi
3805+
3806+ # Back up the original file only on first install; never clobber an existing
3807+ # backup so the original config is always recoverable on uninstall.
3808+ if [ ! -f /etc/sysconfig/kernel.rpmsave ] && [ -f /etc/sysconfig/kernel ]; then
3809+ cp -f /etc/sysconfig/kernel /etc/sysconfig/kernel.rpmsave || exit 1
3810+ fi
3811+
3812+ # Write our managed configuration
3813+ cat > /etc/sysconfig/kernel << EOF
3814+ # This file is managed by %{package_name}-default
3815+ # To revert to the original, uninstall %{package_name}-default
3816+ # and restore /etc/sysconfig/kernel.rpmsave
3817+ #
3818+ # UPDATEDEFAULT specifies if kernel-install should make
3819+ # new kernels the default
3820+ UPDATEDEFAULT= yes
3821+
3822+ # DEFAULTKERNEL specifies the default kernel package type
3823+ DEFAULTKERNEL= kernel-%{pkg_suffix }-core
3824+ EOF
3825+
3826+ %posttrans default
3827+ # Set this kernel version as the boot default after all transactions complete
3828+ if [ -f /boot/vmlinuz-%{KVERREL} ]; then
3829+ grubby --set-default=/boot/vmlinuz-%{KVERREL} ||
3830+ echo " warning: failed to set kernel-%{pkg_suffix} as boot default" >&2
3831+ fi
3832+
37803833#
37813834# This macro defines a %%post script for a kernel*-devel package.
37823835# %%kernel_devel_post [<subpackage>]
@@ -4141,9 +4194,9 @@ fi\
41414194
41424195%if %{with_tools }
41434196%ifnarch %{cpupowerarchs }
4144- %files -n %{ package_name }- tools
4197+ %files tools
41454198%else
4146- %files -n %{ package_name }- tools -f cpupower.lang
4199+ %files tools -f cpupower.lang
41474200%{_bindir }/cpupower
41484201%{_libexecdir }/cpupower
41494202%{_unitdir }/cpupower.service
@@ -4187,16 +4240,16 @@ fi\
41874240%endif
41884241
41894242%if %{with_debuginfo }
4190- %files -f %{package_name }-tools-debuginfo.list -n %{ package_name }- tools-debuginfo
4243+ %files -f %{package_name }-tools-debuginfo.list tools-debuginfo
41914244%endif
41924245
4193- %files -n %{ package_name }- tools-libs
4246+ %files tools-libs
41944247%ifarch %{cpupowerarchs }
41954248%{_libdir }/libcpupower.so.1
41964249%{_libdir }/libcpupower.so.1.0.1
41974250%endif
41984251
4199- %files -n %{ package_name }- tools-libs-devel
4252+ %files tools-libs-devel
42004253%ifarch %{cpupowerarchs }
42014254%{_libdir }/libcpupower.so
42024255%{_includedir }/cpufreq.h
@@ -4236,12 +4289,12 @@ fi\
42364289%{_mandir }/man1/rv-mon-sched.1.gz
42374290%{_mandir }/man1/rv.1.gz
42384291
4239- %files -n %{package_name }-default
4240- # This is a meta-package with no files
4241-
42424292# with_tools
42434293%endif
42444294
4295+ %files default
4296+ # This is a meta-package with no files
4297+
42454298%if %{with_selftests }
42464299%files selftests-internal
42474300%{_libexecdir }/ksamples
0 commit comments