Skip to content

CLK 6.12 Namespacing#1065

Open
bmastbergen wants to merge 13 commits intociq-6.12.yfrom
{bmastbergen}_ciq-6.12.y-namespacing
Open

CLK 6.12 Namespacing#1065
bmastbergen wants to merge 13 commits intociq-6.12.yfrom
{bmastbergen}_ciq-6.12.y-namespacing

Conversation

@bmastbergen
Copy link
Copy Markdown
Collaborator

This PR brings CLK 6.12 in sync with CLK 6.18 with respect to namespacing

  • Introduces the kernel-clk6.12 package name with %{pkg_suffix} macro. Renames all tool packages (perf, libperf, rtla, rv, etc.) with the clk6.12 suffix. Adds Provides/Conflicts tags for non-parallel installable packages (headers, tools, doc) to prevent conflicts with stock Rocky packages while satisfying their dependencies.
  • Switches Module.symvers compression from xz to gzip to align with upstream kernel spec. Fixes ghost file permissions from 0644 to 0600.
  • Injects +clk6.12 into KVERREL and EXTRAVERSION so running kernels display their CLK identity in uname output (e.g., 6.12.78-1.1.el9.x86_64+clk6.12).
  • Sync spec changes from 6.18 branch - Consolidates version defines, reworks the -default package with proper scriptlets, converts tools to short-form naming, bundles bindgen-cli
    for Rocky 9.6, and exports GRUB_NON_STANDARD_KERNEL to prevent boot menu hijacking. Also fixes Provides/Requires to use %{name} instead of hardcoded "kernel".
  • Add Obsoletes tags for upgrade path from old kernel packages - Adds explicit Obsoletes entries for specific kernel-6.12 versions (6.12.15, 6.12.30, 6.12.43, 6.12.63, 6.12.74, 6.12.77) to all kernel and tool packages. These explicit Obsoletes ensure systems with the previous un-namespaced CLK 6.12 kernels see the new kernel-clk6.12 packages as upgrades.

bmastbergen and others added 5 commits April 1, 2026 15:23
Rename spec file from kernel.spec to kernel-clk6.12.spec.

Introduce %{pkg_suffix} macro (clk%{patchversion}) and use it for:
- package_name: kernel-%{pkg_suffix}
- tool packages: perf, python3-perf, libperf, rtla, rv

Tool packages now named:
- perf-%{pkg_suffix}
- python3-perf-%{pkg_suffix}
- libperf-%{pkg_suffix}
- libperf-%{pkg_suffix}-devel
- rtla-%{pkg_suffix}
- rv-%{pkg_suffix}
- *-debuginfo variants

Each tool package includes:
- Provides: <original-name> = %{specrpmversion}-%{release}
- Conflicts: <original-name>

Adds Provides and Conflicts tags to kernel-clk6.12-* packages that
cannot be parallel installed with stock Rocky kernel packages:
- kernel-doc
- kernel-headers
- kernel-cross-headers
- kernel-debuginfo-common
- kernel-tools
- kernel-tools-libs
- kernel-tools-libs-devel
- kernel-selftests-internal

This allows these packages to satisfy dependencies for stock kernel
packages while preventing simultaneous installation with stock Rocky
kernel tools.

Remove gemini switch, which comes from kernel-ark and is part of their
solution for a kernel variant that should supplant the factory kernel.

Fix config file naming in %prep to use %{name} instead of hardcoded
'kernel' prefix.

Update generate_tarball.sh to reference kernel-clk6.12.spec.
Switch Module.symvers compression from the dynamic %compression
macro (xz) to hardcoded gzip -c9, matching the upstream kernel spec.
Also fixes the ghost file permissions from 0644 to 0600.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Dieter <jdieter@ciq.com>
Inject +%{pkg_suffix} into KVERREL and the shell-level equivalents
(KernelVer, DevelDir, EXTRAVERSION) so that uname -r shows the CLK
kernel identity, e.g. 6.12.78-1.1.el9_ciq.x86_64+clk6.12.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Dieter <jdieter@ciq.com>
- Consolidate version defines (kernel_major_minor, kernel_patch, buildid)
- Derive specversion, pkgrelease, tarfile_release from base defines
- Rework -default package with proper scriptlets and kernel-provider
- Convert tools subpackages to short form naming
- Bundle bindgen-cli for Rocky 9.6 builds
- Export GRUB_NON_STANDARD_KERNEL to prevent boot default hijacking
- Update generate_tarball.sh for new version scheme

Fix Provides/Requires to use %{name} instead of hardcoded kernel

Package names should use %{name} (kernel-clk6.12) instead of hardcoded
'kernel' in Provides and Requires to ensure dependency resolution works
correctly for CLK kernels.
Add Obsoletes tags to all packages to enable smooth upgrades from
non-namespaced kernel-6.12.x packages to kernel-clk6.12-6.12.x.

Use explicit version lists (6.12.15, 6.12.30, 6.12.43, 6.12.63,
6.12.74, 6.12.77) instead of version ranges to avoid unintentionally
obsoleting future major versions like kernel-7.0.

Changes:
- Add Obsoletes for kernel-core and all kernel variant packages
- Add Obsoletes for all non-parallel installable packages:
  * kernel-doc, kernel-headers, kernel-cross-headers
  * perf, python3-perf, libperf
  * rtla, rv
  * kernel-tools, kernel-tools-libs
  * kernel-selftests-internal
  * All corresponding debuginfo packages
@bmastbergen bmastbergen requested review from a team and jdieter April 2, 2026 00:58
Comment thread ciq/SPECS/kernel-clk6.12.spec Outdated

# Pick the right kernel config file
Config=%{name}-%{_target_cpu}${Variant:+-${Variant}}.config
Config=kernel-%{_target_cpu}${Variant:+-${Variant}}.config
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good call out. I just now realized that this naming difference was driven by the fact that we have a stub merge.py in the 6.12 branch and a functional one in the 6.18 branch. I've synced up both of these things with 6.18

@bmastbergen bmastbergen requested a review from PlaidCat April 3, 2026 16:53
Comment thread ciq/SPECS/kernel-clk6.12.spec Outdated
%define kernel_reqprovconf(o) \
%if %{-o:0}%{!-o:1}\
Provides: kernel = %{specversion}-%{pkg_release}\
Obsoletes: kernel = 6.12.15\
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added. Thanks!

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these obsoletes show up anywhere except the kernel package? Are they in kernel-debug or any other variant we might build?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were a couple packages missing obsoletes, but I think with what I have now everything that needs them has them. The only packages that don't explicitly have them are meta packages (which I don't think need them) and our -default packages.

bmastbergen@troas ~/ciq/build_files
 % for rpm in *x86_64*.rpm; do echo "=== $rpm ==="; rpm -qp --qf '[%{OBSOLETENAME} = %{OBSOLETEVERSION}\n]' "$rpm" 2>/dev/null \
    | grep -E "6\.12\.(15|30|43|63|74|77)"; echo; done
=== kernel-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===

=== kernel-clk6.12-core-6.12.78-1.1.el9.x86_64.rpm ===
kernel = 6.12.15
kernel = 6.12.30
kernel = 6.12.43
kernel = 6.12.63
kernel = 6.12.74
kernel = 6.12.77
kernel-core = 6.12.15
kernel-core = 6.12.30
kernel-core = 6.12.43
kernel-core = 6.12.63
kernel-core = 6.12.74
kernel-core = 6.12.77

=== kernel-clk6.12-cross-headers-6.12.78-1.1.el9.x86_64.rpm ===
kernel-cross-headers = 6.12.15
kernel-cross-headers = 6.12.30
kernel-cross-headers = 6.12.43
kernel-cross-headers = 6.12.63
kernel-cross-headers = 6.12.74
kernel-cross-headers = 6.12.77

=== kernel-clk6.12-debug-6.12.78-1.1.el9.x86_64.rpm ===

=== kernel-clk6.12-debug-core-6.12.78-1.1.el9.x86_64.rpm ===
kernel = 6.12.15
kernel = 6.12.30
kernel = 6.12.43
kernel = 6.12.63
kernel = 6.12.74
kernel = 6.12.77
kernel-debug-core = 6.12.15
kernel-debug-core = 6.12.30
kernel-debug-core = 6.12.43
kernel-debug-core = 6.12.63
kernel-debug-core = 6.12.74
kernel-debug-core = 6.12.77

=== kernel-clk6.12-debug-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-debuginfo = 6.12.15
kernel-debug-debuginfo = 6.12.30
kernel-debug-debuginfo = 6.12.43
kernel-debug-debuginfo = 6.12.63
kernel-debug-debuginfo = 6.12.74
kernel-debug-debuginfo = 6.12.77

=== kernel-clk6.12-debug-devel-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-devel = 6.12.15
kernel-debug-devel = 6.12.30
kernel-debug-devel = 6.12.43
kernel-debug-devel = 6.12.63
kernel-debug-devel = 6.12.74
kernel-debug-devel = 6.12.77

=== kernel-clk6.12-debug-devel-matched-6.12.78-1.1.el9.x86_64.rpm ===

=== kernel-clk6.12-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debuginfo = 6.12.15
kernel-debuginfo = 6.12.30
kernel-debuginfo = 6.12.43
kernel-debuginfo = 6.12.63
kernel-debuginfo = 6.12.74
kernel-debuginfo = 6.12.77

=== kernel-clk6.12-debuginfo-common-x86_64-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debuginfo-common-x86_64 = 6.12.15
kernel-debuginfo-common-x86_64 = 6.12.30
kernel-debuginfo-common-x86_64 = 6.12.43
kernel-debuginfo-common-x86_64 = 6.12.63
kernel-debuginfo-common-x86_64 = 6.12.74
kernel-debuginfo-common-x86_64 = 6.12.77

=== kernel-clk6.12-debug-modules-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-modules = 6.12.15
kernel-debug-modules = 6.12.30
kernel-debug-modules = 6.12.43
kernel-debug-modules = 6.12.63
kernel-debug-modules = 6.12.74
kernel-debug-modules = 6.12.77

=== kernel-clk6.12-debug-modules-core-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-modules-core = 6.12.15
kernel-debug-modules-core = 6.12.30
kernel-debug-modules-core = 6.12.43
kernel-debug-modules-core = 6.12.63
kernel-debug-modules-core = 6.12.74
kernel-debug-modules-core = 6.12.77

=== kernel-clk6.12-debug-modules-extra-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-modules-extra = 6.12.15
kernel-debug-modules-extra = 6.12.30
kernel-debug-modules-extra = 6.12.43
kernel-debug-modules-extra = 6.12.63
kernel-debug-modules-extra = 6.12.74
kernel-debug-modules-extra = 6.12.77

=== kernel-clk6.12-debug-modules-internal-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-modules-internal = 6.12.15
kernel-debug-modules-internal = 6.12.30
kernel-debug-modules-internal = 6.12.43
kernel-debug-modules-internal = 6.12.63
kernel-debug-modules-internal = 6.12.74
kernel-debug-modules-internal = 6.12.77

=== kernel-clk6.12-debug-modules-partner-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-modules-partner = 6.12.15
kernel-debug-modules-partner = 6.12.30
kernel-debug-modules-partner = 6.12.43
kernel-debug-modules-partner = 6.12.63
kernel-debug-modules-partner = 6.12.74
kernel-debug-modules-partner = 6.12.77

=== kernel-clk6.12-debug-uki-virt-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-uki-virt = 6.12.15
kernel-debug-uki-virt = 6.12.30
kernel-debug-uki-virt = 6.12.43
kernel-debug-uki-virt = 6.12.63
kernel-debug-uki-virt = 6.12.74
kernel-debug-uki-virt = 6.12.77

=== kernel-clk6.12-debug-uki-virt-addons-6.12.78-1.1.el9.x86_64.rpm ===
kernel-debug-uki-virt-addons = 6.12.15
kernel-debug-uki-virt-addons = 6.12.30
kernel-debug-uki-virt-addons = 6.12.43
kernel-debug-uki-virt-addons = 6.12.63
kernel-debug-uki-virt-addons = 6.12.74
kernel-debug-uki-virt-addons = 6.12.77

=== kernel-clk6.12-default-6.12.78-1.1.el9.x86_64.rpm ===

=== kernel-clk6.12-devel-6.12.78-1.1.el9.x86_64.rpm ===
kernel-devel = 6.12.15
kernel-devel = 6.12.30
kernel-devel = 6.12.43
kernel-devel = 6.12.63
kernel-devel = 6.12.74
kernel-devel = 6.12.77

=== kernel-clk6.12-devel-matched-6.12.78-1.1.el9.x86_64.rpm ===

=== kernel-clk6.12-headers-6.12.78-1.1.el9.x86_64.rpm ===
kernel-headers = 6.12.15
kernel-headers = 6.12.30
kernel-headers = 6.12.43
kernel-headers = 6.12.63
kernel-headers = 6.12.74
kernel-headers = 6.12.77

=== kernel-clk6.12-ipaclones-internal-6.12.78-1.1.el9.x86_64.rpm ===
kernel-ipaclones-internal = 6.12.15
kernel-ipaclones-internal = 6.12.30
kernel-ipaclones-internal = 6.12.43
kernel-ipaclones-internal = 6.12.63
kernel-ipaclones-internal = 6.12.74
kernel-ipaclones-internal = 6.12.77

=== kernel-clk6.12-modules-6.12.78-1.1.el9.x86_64.rpm ===
kernel-modules = 6.12.15
kernel-modules = 6.12.30
kernel-modules = 6.12.43
kernel-modules = 6.12.63
kernel-modules = 6.12.74
kernel-modules = 6.12.77

=== kernel-clk6.12-modules-core-6.12.78-1.1.el9.x86_64.rpm ===
kernel-modules-core = 6.12.15
kernel-modules-core = 6.12.30
kernel-modules-core = 6.12.43
kernel-modules-core = 6.12.63
kernel-modules-core = 6.12.74
kernel-modules-core = 6.12.77

=== kernel-clk6.12-modules-extra-6.12.78-1.1.el9.x86_64.rpm ===
kernel-modules-extra = 6.12.15
kernel-modules-extra = 6.12.30
kernel-modules-extra = 6.12.43
kernel-modules-extra = 6.12.63
kernel-modules-extra = 6.12.74
kernel-modules-extra = 6.12.77

=== kernel-clk6.12-modules-internal-6.12.78-1.1.el9.x86_64.rpm ===
kernel-modules-internal = 6.12.15
kernel-modules-internal = 6.12.30
kernel-modules-internal = 6.12.43
kernel-modules-internal = 6.12.63
kernel-modules-internal = 6.12.74
kernel-modules-internal = 6.12.77

=== kernel-clk6.12-modules-partner-6.12.78-1.1.el9.x86_64.rpm ===
kernel-modules-partner = 6.12.15
kernel-modules-partner = 6.12.30
kernel-modules-partner = 6.12.43
kernel-modules-partner = 6.12.63
kernel-modules-partner = 6.12.74
kernel-modules-partner = 6.12.77

=== kernel-clk6.12-selftests-internal-6.12.78-1.1.el9.x86_64.rpm ===
kernel-selftests-internal = 6.12.15
kernel-selftests-internal = 6.12.30
kernel-selftests-internal = 6.12.43
kernel-selftests-internal = 6.12.63
kernel-selftests-internal = 6.12.74
kernel-selftests-internal = 6.12.77

=== kernel-clk6.12-tools-6.12.78-1.1.el9.x86_64.rpm ===
kernel-tools = 6.12.15
kernel-tools = 6.12.30
kernel-tools = 6.12.43
kernel-tools = 6.12.63
kernel-tools = 6.12.74
kernel-tools = 6.12.77

=== kernel-clk6.12-tools-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
kernel-tools-debuginfo = 6.12.15
kernel-tools-debuginfo = 6.12.30
kernel-tools-debuginfo = 6.12.43
kernel-tools-debuginfo = 6.12.63
kernel-tools-debuginfo = 6.12.74
kernel-tools-debuginfo = 6.12.77

=== kernel-clk6.12-tools-libs-6.12.78-1.1.el9.x86_64.rpm ===
kernel-tools-libs = 6.12.15
kernel-tools-libs = 6.12.30
kernel-tools-libs = 6.12.43
kernel-tools-libs = 6.12.63
kernel-tools-libs = 6.12.74
kernel-tools-libs = 6.12.77

=== kernel-clk6.12-tools-libs-devel-6.12.78-1.1.el9.x86_64.rpm ===
kernel-tools-libs-devel = 6.12.15
kernel-tools-libs-devel = 6.12.30
kernel-tools-libs-devel = 6.12.43
kernel-tools-libs-devel = 6.12.63
kernel-tools-libs-devel = 6.12.74
kernel-tools-libs-devel = 6.12.77

=== kernel-clk6.12-uki-virt-6.12.78-1.1.el9.x86_64.rpm ===
kernel-uki-virt = 6.12.15
kernel-uki-virt = 6.12.30
kernel-uki-virt = 6.12.43
kernel-uki-virt = 6.12.63
kernel-uki-virt = 6.12.74
kernel-uki-virt = 6.12.77

=== kernel-clk6.12-uki-virt-addons-6.12.78-1.1.el9.x86_64.rpm ===
kernel-uki-virt-addons = 6.12.15
kernel-uki-virt-addons = 6.12.30
kernel-uki-virt-addons = 6.12.43
kernel-uki-virt-addons = 6.12.63
kernel-uki-virt-addons = 6.12.74
kernel-uki-virt-addons = 6.12.77

=== libperf-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===
libperf = 6.12.15
libperf = 6.12.30
libperf = 6.12.43
libperf = 6.12.63
libperf = 6.12.74
libperf = 6.12.77

=== libperf-clk6.12-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
libperf-debuginfo = 6.12.15
libperf-debuginfo = 6.12.30
libperf-debuginfo = 6.12.43
libperf-debuginfo = 6.12.63
libperf-debuginfo = 6.12.74
libperf-debuginfo = 6.12.77

=== libperf-clk6.12-devel-6.12.78-1.1.el9.x86_64.rpm ===
libperf-devel = 6.12.15
libperf-devel = 6.12.30
libperf-devel = 6.12.43
libperf-devel = 6.12.63
libperf-devel = 6.12.74
libperf-devel = 6.12.77

=== perf-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===
perf = 6.12.15
perf = 6.12.30
perf = 6.12.43
perf = 6.12.63
perf = 6.12.74
perf = 6.12.77

=== perf-clk6.12-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
perf-debuginfo = 6.12.15
perf-debuginfo = 6.12.30
perf-debuginfo = 6.12.43
perf-debuginfo = 6.12.63
perf-debuginfo = 6.12.74
perf-debuginfo = 6.12.77

=== python3-perf-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===
python3-perf = 6.12.15
python3-perf = 6.12.30
python3-perf = 6.12.43
python3-perf = 6.12.63
python3-perf = 6.12.74
python3-perf = 6.12.77

=== python3-perf-clk6.12-debuginfo-6.12.78-1.1.el9.x86_64.rpm ===
python3-perf-debuginfo = 6.12.15
python3-perf-debuginfo = 6.12.30
python3-perf-debuginfo = 6.12.43
python3-perf-debuginfo = 6.12.63
python3-perf-debuginfo = 6.12.74
python3-perf-debuginfo = 6.12.77

=== rtla-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===
rtla = 6.12.15
rtla = 6.12.30
rtla = 6.12.43
rtla = 6.12.63
rtla = 6.12.74
rtla = 6.12.77

=== rv-clk6.12-6.12.78-1.1.el9.x86_64.rpm ===
rv = 6.12.15
rv = 6.12.30
rv = 6.12.43
rv = 6.12.63
rv = 6.12.74
rv = 6.12.77




Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I should have been clearer. We can have, at most, one obsolete for any particular package/version combination, otherwise dnf throws up its hands and complains that it doesn't know which package to obsolete with. So, in the above, the kernel-clk6.12 package should obsolete the old kernel, while kernel-clk6.12-core should obsolete the old kernel-core. kernel-clk6.12-debug should obsolete kernel-debug and kernel-clk6.12-debug-core should obsolete kernel-debug-core.

Please make sure each package is only obsoleted by one package here.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I'm finding some evidence that this is expected behavior:

https://dnf.readthedocs.io/en/latest/cli_vs_yum.html#promoting-package-to-install-to-a-package-that-obsoletes-it

DNF will not magically replace a request for installing package X to installing package Y if Y obsoletes X. YUM does this if its obsoletes config option is enabled but the behavior is not properly documented and can be harmful.

https://bugzilla.redhat.com/show_bug.cgi?id=1566070

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, there it is. I think we need to Provide the package too, but if we put in the version, our package will be treated as newer than all the previous kernel packages, and no default Rocky kernels will be able to be provided.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may be stuck creating a metapackage that just goes in the kernel-clk repo that does both the obsoletes and provides.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I'm not sure I follow.

Our kernel package already has Provides: kernel = %{specversion}-%{pkg_release} and obsoletes for the old kernel versions. So aren't we already providing something newer than all the previous kernel packages?

When you say we need to create "a metapackage that just goes in the kernel-clk repo that does both the obsoletes and provides." do you mean provides the old versions? Like this?:

  Requires:       kernel-clk6.12-default >= 6.12.78
  Provides:       kernel = 6.12.15
  Provides:       kernel = 6.12.30
  Provides:       kernel = 6.12.43
  Provides:       kernel = 6.12.63
  Provides:       kernel = 6.12.74
  Provides:       kernel = 6.12.77
  Obsoletes:      kernel = 6.12.15
  Obsoletes:      kernel = 6.12.30
  Obsoletes:      kernel = 6.12.43
  Obsoletes:      kernel = 6.12.63
  Obsoletes:      kernel = 6.12.74
  Obsoletes:      kernel = 6.12.77

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I didn't realize we were already providing kernel = 6.18.x-1.1foo. Let me look at this tomorrow.

Comment thread ciq/SPECS/kernel-clk6.12.spec
PlaidCat
PlaidCat previously approved these changes Apr 3, 2026
Copy link
Copy Markdown
Collaborator

@PlaidCat PlaidCat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Adds Obsoletes tags for kernel*-uki-virt and kernel*-uki-virt-addons packages
to ensure proper upgrade path from versions 6.12.15-77.
Adds Obsoletes tags for kernel-tools-debuginfo to ensure proper upgrade
path from versions 6.12.15-77.
Adds Obsoletes tags for kernel*-ipaclones-internal to ensure proper upgrade
path from versions 6.12.15-77.
Fixes issue where both kernel-core and kernel-debug-core were obsoleting
the 'kernel' metapackage, causing DNF conflicts.

Changes:
- Removed 'Obsoletes: kernel = ...' from kernel_reqprovconf macro
- Added 'Obsoletes: kernel = ...' to base metapackage (kernel-clk6.12)
- Added 'Obsoletes: kernel-%{1} = ...' to kernel_meta_package macro
  for variants (kernel-clk6.12-debug, etc.)

Now each old package is obsoleted by exactly one new package:
- kernel → kernel-clk6.12
- kernel-core → kernel-clk6.12-core
- kernel-debug → kernel-clk6.12-debug
- kernel-debug-core → kernel-clk6.12-debug-core
Move 'Obsoletes: kernel = ...' from the base metapackage to the
kernel-clk6.12-default package. This ensures that:

1. Users upgrading from old kernel-6.12.* packages will automatically get
   kernel-clk6.12-default installed (via Obsoletes)

2. kernel-clk6.12-default takes ownership of /etc/sysconfig/kernel to ensure
   kernel-clk6.12 variants remain the default kernel on the system

3. Without this, users with old CIQ kernels AND stock Rocky kernels might end
   up with stock Rocky kernels becoming the default after upgrade

The kernel-clk6.12-debug metapackage still keeps its Obsoletes since there
is no kernel-clk6.12-debug-default package.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants