Conversation
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
|
|
||
| # Pick the right kernel config file | ||
| Config=%{name}-%{_target_cpu}${Variant:+-${Variant}}.config | ||
| Config=kernel-%{_target_cpu}${Variant:+-${Variant}}.config |
There was a problem hiding this comment.
There was a problem hiding this comment.
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
| %define kernel_reqprovconf(o) \ | ||
| %if %{-o:0}%{!-o:1}\ | ||
| Provides: kernel = %{specversion}-%{pkg_release}\ | ||
| Obsoletes: kernel = 6.12.15\ |
There was a problem hiding this comment.
This is also missing : https://github.com/ctrliq/kernel-src-tree/pull/1009/changes#diff-face1c233097b07bb75d643ae2a9010a12475a0801e430206bcccd86da577ca8R1166
Provides: %{name} = %{specversion}-%{pkg_release}\
There was a problem hiding this comment.
Do these obsoletes show up anywhere except the kernel package? Are they in kernel-debug or any other variant we might build?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Hmm, I'm finding some evidence that this is expected behavior:
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
We may be stuck creating a metapackage that just goes in the kernel-clk repo that does both the obsoletes and provides.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
No, I didn't realize we were already providing kernel = 6.18.x-1.1foo. Let me look at this tomorrow.
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.
This PR brings CLK 6.12 in sync with CLK 6.18 with respect to namespacing
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".