CLK 6.12 Namespacing#1065
Conversation
|
|
||
| # 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.
89c8ded to
eeb9d3e
Compare
|
Ok, updated to remove obsoletes. We will be providing a separate package to do the obsoletes that can be used as a one time transition from the non-namespaced 6.12 kernels to the new namespaced ones. Also rebased on the latest ciq-6.12.y and pulled in the posttrans script fix from 6.18, so you'll see a couple other changes as well. |
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.
Adds 'Provides: kernel = version' to base package for compatibility with packages depending on generic kernel capability.
eeb9d3e to
cbbe3f7
Compare
|
Rebased on latest ciq-6.12.y to pull in the RPM Build workflow (which needs tweaks after the namespacing) |
cbbe3f7 to
21175b1
Compare
Stock kernel-headers from Rocky repos is always available to satisfy dependencies like glibc-devel. CLK headers are for users who explicitly want 6.12 kernel headers, not as a generic kernel-headers provider.
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".