Architecture specific change in rpms/bodhi-server.git
by githook-noreply@fedoraproject.org
The package rpms/bodhi-server.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/bodhi-server.git/commit/?id=673ab....
Change:
-ExclusiveArch: %{golang_arches_future}
Thanks.
Full change:
============
commit 673abae3a49d188a9cd4c7d8ea001d75f36a7aab
Author: Mattia Verga <mattia.verga(a)proton.me>
Date: Mon Jun 24 10:05:48 2024 +0200
Update to 8.1.1 and fix for python 3.13
diff --git a/.gitignore b/.gitignore
index bb75c3f..20dac77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
/bodhi_server-8.0.1.tar.gz
/bodhi_server-8.0.2.tar.gz
/bodhi_server-8.1.0.tar.gz
+/bodhi_server-8.1.1.tar.gz
diff --git a/bodhi-server.spec b/bodhi-server.spec
index 2b6a377..5c6d305 100644
--- a/bodhi-server.spec
+++ b/bodhi-server.spec
@@ -1,20 +1,17 @@
%global pypi_name bodhi-server
%global src_name bodhi_server
-%global pypi_version 8.1.0
+%global pypi_version 8.1.1
Name: %{pypi_name}
Version: %{pypi_version}
-Release: 2%{?dist}
+Release: 1%{?dist}
Summary: Bodhi server
License: GPL-2.0-or-later
URL: https://github.com/fedora-infra/bodhi
-Source0: %{pypi_source bodhi_server}
-BuildArch: noarch
+Source: %{pypi_source bodhi_server}
-# We must avoid using i686 builders, this should do the trick
-# see fedora-infra ticket #11163
-ExclusiveArch: %{golang_arches_future}
+BuildArch: noarch
BuildRequires: make
BuildRequires: pyproject-rpm-macros
@@ -76,7 +73,7 @@ repositories.
%prep
-%autosetup -n %{src_name}-%{pypi_version}
+%autosetup -p1 -n %{src_name}-%{pypi_version}
# Remove bundled egg-info
rm -rf %{pypi_name}.egg-info
@@ -106,6 +103,7 @@ make %{?_smp_mflags} -C docs man
install -m 644 apache/bodhi.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
sed -i -s 's/BODHI_VERSION/%{version}/g' %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
+sed -i -s 's/python3.7/python%{python3_version}/g' %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
install -m 640 production.ini %{buildroot}%{_sysconfdir}/bodhi/production.ini
install -m 640 alembic.ini %{buildroot}%{_sysconfdir}/bodhi/alembic.ini
install apache/bodhi.wsgi %{buildroot}%{_datadir}/bodhi/bodhi.wsgi
@@ -162,6 +160,10 @@ export BODHI_CONFIG=$(pwd)/tests/testing.ini
%pycached %{python3_sitelib}/bodhi/server/metadata.py
%changelog
+* Sun Jun 23 2024 Mattia Verga <mattia.verga(a)proton.me> - 8.1.1-1
+- Fix python version hardcoded in apache config
+- Upstream fix for Python 3.13 (Fedora#2291493)
+
* Tue Jun 18 2024 Python Maint <python-maint(a)redhat.com> - 8.1.0-2
- Rebuilt for Python 3.13
diff --git a/sources b/sources
index 37e08cd..52f537d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (bodhi_server-8.1.0.tar.gz) = 6e7471e2572039a940e752df189d44bb155d76223ce3af5fa2927ef3f7babb10245aa30d2dc0d66cf568c7019c3c3150f0cab64744a6e6a1726cb316607e4087
+SHA512 (bodhi_server-8.1.1.tar.gz) = 9914de3f2bcdd78be09b3d3dc1f98590102a2f0a5864ef19c8cce629c10bef4cba20ae9eec1a053271687d17b5bdd29e51101e96c45cd16f4a8e0c9424a0df1b
commit 336f37421032236694ca0eb20f7ef12cc7ee6ed5
Author: Python Maint <python-maint(a)redhat.com>
Date: Tue Jun 18 12:58:37 2024 +0200
Rebuilt for Python 3.13
diff --git a/bodhi-server.spec b/bodhi-server.spec
index 6bcad2f..2b6a377 100644
--- a/bodhi-server.spec
+++ b/bodhi-server.spec
@@ -4,7 +4,7 @@
Name: %{pypi_name}
Version: %{pypi_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Bodhi server
License: GPL-2.0-or-later
@@ -162,6 +162,9 @@ export BODHI_CONFIG=$(pwd)/tests/testing.ini
%pycached %{python3_sitelib}/bodhi/server/metadata.py
%changelog
+* Tue Jun 18 2024 Python Maint <python-maint(a)redhat.com> - 8.1.0-2
+- Rebuilt for Python 3.13
+
* Tue Apr 09 2024 Mattia Verga <mattia.verga(a)proton.me> - 8.1.0-1
- Update to 8.1.0
2 days, 9 hours
Architecture specific change in rpms/bodhi-server.git
by githook-noreply@fedoraproject.org
The package rpms/bodhi-server.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/bodhi-server.git/commit/?id=673ab....
Change:
-ExclusiveArch: %{golang_arches_future}
Thanks.
Full change:
============
commit 673abae3a49d188a9cd4c7d8ea001d75f36a7aab
Author: Mattia Verga <mattia.verga(a)proton.me>
Date: Mon Jun 24 10:05:48 2024 +0200
Update to 8.1.1 and fix for python 3.13
diff --git a/.gitignore b/.gitignore
index bb75c3f..20dac77 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
/bodhi_server-8.0.1.tar.gz
/bodhi_server-8.0.2.tar.gz
/bodhi_server-8.1.0.tar.gz
+/bodhi_server-8.1.1.tar.gz
diff --git a/bodhi-server.spec b/bodhi-server.spec
index 2b6a377..5c6d305 100644
--- a/bodhi-server.spec
+++ b/bodhi-server.spec
@@ -1,20 +1,17 @@
%global pypi_name bodhi-server
%global src_name bodhi_server
-%global pypi_version 8.1.0
+%global pypi_version 8.1.1
Name: %{pypi_name}
Version: %{pypi_version}
-Release: 2%{?dist}
+Release: 1%{?dist}
Summary: Bodhi server
License: GPL-2.0-or-later
URL: https://github.com/fedora-infra/bodhi
-Source0: %{pypi_source bodhi_server}
-BuildArch: noarch
+Source: %{pypi_source bodhi_server}
-# We must avoid using i686 builders, this should do the trick
-# see fedora-infra ticket #11163
-ExclusiveArch: %{golang_arches_future}
+BuildArch: noarch
BuildRequires: make
BuildRequires: pyproject-rpm-macros
@@ -76,7 +73,7 @@ repositories.
%prep
-%autosetup -n %{src_name}-%{pypi_version}
+%autosetup -p1 -n %{src_name}-%{pypi_version}
# Remove bundled egg-info
rm -rf %{pypi_name}.egg-info
@@ -106,6 +103,7 @@ make %{?_smp_mflags} -C docs man
install -m 644 apache/bodhi.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
sed -i -s 's/BODHI_VERSION/%{version}/g' %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
+sed -i -s 's/python3.7/python%{python3_version}/g' %{buildroot}%{_sysconfdir}/httpd/conf.d/bodhi.conf
install -m 640 production.ini %{buildroot}%{_sysconfdir}/bodhi/production.ini
install -m 640 alembic.ini %{buildroot}%{_sysconfdir}/bodhi/alembic.ini
install apache/bodhi.wsgi %{buildroot}%{_datadir}/bodhi/bodhi.wsgi
@@ -162,6 +160,10 @@ export BODHI_CONFIG=$(pwd)/tests/testing.ini
%pycached %{python3_sitelib}/bodhi/server/metadata.py
%changelog
+* Sun Jun 23 2024 Mattia Verga <mattia.verga(a)proton.me> - 8.1.1-1
+- Fix python version hardcoded in apache config
+- Upstream fix for Python 3.13 (Fedora#2291493)
+
* Tue Jun 18 2024 Python Maint <python-maint(a)redhat.com> - 8.1.0-2
- Rebuilt for Python 3.13
diff --git a/sources b/sources
index 37e08cd..52f537d 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (bodhi_server-8.1.0.tar.gz) = 6e7471e2572039a940e752df189d44bb155d76223ce3af5fa2927ef3f7babb10245aa30d2dc0d66cf568c7019c3c3150f0cab64744a6e6a1726cb316607e4087
+SHA512 (bodhi_server-8.1.1.tar.gz) = 9914de3f2bcdd78be09b3d3dc1f98590102a2f0a5864ef19c8cce629c10bef4cba20ae9eec1a053271687d17b5bdd29e51101e96c45cd16f4a8e0c9424a0df1b
commit 336f37421032236694ca0eb20f7ef12cc7ee6ed5
Author: Python Maint <python-maint(a)redhat.com>
Date: Tue Jun 18 12:58:37 2024 +0200
Rebuilt for Python 3.13
diff --git a/bodhi-server.spec b/bodhi-server.spec
index 6bcad2f..2b6a377 100644
--- a/bodhi-server.spec
+++ b/bodhi-server.spec
@@ -4,7 +4,7 @@
Name: %{pypi_name}
Version: %{pypi_version}
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Bodhi server
License: GPL-2.0-or-later
@@ -162,6 +162,9 @@ export BODHI_CONFIG=$(pwd)/tests/testing.ini
%pycached %{python3_sitelib}/bodhi/server/metadata.py
%changelog
+* Tue Jun 18 2024 Python Maint <python-maint(a)redhat.com> - 8.1.0-2
+- Rebuilt for Python 3.13
+
* Tue Apr 09 2024 Mattia Verga <mattia.verga(a)proton.me> - 8.1.0-1
- Update to 8.1.0
2 days, 9 hours
Architecture specific change in rpms/cockpit.git
by githook-noreply@fedoraproject.org
The package rpms/cockpit.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/cockpit.git/commit/?id=236d9d8764....
Change:
+ExcludeArch: %{ix86}
Thanks.
Full change:
============
commit 236d9d87645a886c0f6fd42a63c7e905413361d3
Author: Packit <hello(a)packit.dev>
Date: Wed Jun 12 09:32:55 2024 +0000
Update to 318 upstream release
Upstream tag: 318
Upstream commit: e46f7e02
Commit authored by Packit automation (https://packit.dev/)
diff --git a/.gitignore b/.gitignore
index 9f5ccd1..926ae50 100644
--- a/.gitignore
+++ b/.gitignore
@@ -289,3 +289,4 @@
/cockpit-315.tar.xz
/cockpit-316.tar.xz
/cockpit-317.tar.xz
+/cockpit-318.tar.xz
diff --git a/README.packit b/README.packit
index 2fa216c..d2b528d 100644
--- a/README.packit
+++ b/README.packit
@@ -1,3 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
-The file was generated using packit 0.97.1.post1.dev4+g1268842e.
+The file was generated using packit 0.97.1.post1.dev6+gc8c0314a.
diff --git a/cockpit.spec b/cockpit.spec
index a76ae42..f22c730 100644
--- a/cockpit.spec
+++ b/cockpit.spec
@@ -49,13 +49,17 @@ Summary: Web Console for Linux servers
License: LGPL-2.1-or-later
URL: https://cockpit-project.org/
-Version: 317
+Version: 318
Release: 1%{?dist}
Source0: https://github.com/cockpit-project/cockpit/releases/download/%{version}/c...
+%if 0%{?fedora} >= 41 || 0%{?rhel}
+ExcludeArch: %{ix86}
+%endif
+
# pcp stopped building on ix86
%define build_pcp 1
-%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
+%if 0%{?fedora} >= 39 || 0%{?rhel} >= 10
%ifarch %ix86
%define build_pcp 0
%endif
@@ -419,7 +423,7 @@ Provides: bundled(npm(sprintf-js)) = 1.0.3
Provides: bundled(npm(stop-iteration-iterator)) = 1.0.0
Provides: bundled(npm(tabbable)) = 6.2.0
Provides: bundled(npm(throttle-debounce)) = 5.0.0
-Provides: bundled(npm(tslib)) = 2.6.2
+Provides: bundled(npm(tslib)) = 2.6.3
Provides: bundled(npm(uuid)) = 9.0.1
Provides: bundled(npm(which-boxed-primitive)) = 1.0.2
Provides: bundled(npm(which-collection)) = 1.0.2
@@ -697,6 +701,11 @@ via PackageKit.
# The changelog is automatically generated and merged
%changelog
+* Wed Jun 12 2024 Packit <hello(a)packit.dev> - 318-1
+- Storage: Extra confirmation before deleting non-empty partitions in Anaconda's Web UI
+- Discontinue Intel 32-bit support in Fedora, CentOS, and RHEL
+- cockpit.js: Get user primary group ID
+
* Wed May 29 2024 Packit <hello(a)packit.dev> - 317-1
- webserver: System user changes
- metrics: Prefer valkey over redis on Fedora
diff --git a/packit.yaml b/packit.yaml
index 9043d51..2c26dc6 100644
--- a/packit.yaml
+++ b/packit.yaml
@@ -54,8 +54,6 @@ jobs:
- job: copr_build
trigger: pull_request
targets:
- # 32 bit
- - fedora-development-i386
# big-endian
- fedora-development-s390x
diff --git a/sources b/sources
index e5dce79..a2d9e7a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (cockpit-317.tar.xz) = 55dfa449fd77dcd71d5f27cfd72235daa50c1a3c2d19cac5bc43b933322b4ba353b35f5acfc9f119c1d03a20dbbb80736b9feaca12ae95accbd46e067bb0c558
+SHA512 (cockpit-318.tar.xz) = adfbb5b198e263c295d2538a709045c7e0ec814eaa461997f10fb5f332d333e3dc10968d01e7d3e338bf2ee5e929f358303691f59bdfcaa129fc7ce784779f50
2 days, 12 hours
[Report] Packages Restricting Arches
by root
New package excluding arches (1)
============================
- gdb-gef
ExclusiveArch: x86_64
Package no longer excluding arches (2)
==================================
- dotnet6.0
- golang-tinygo-x-llvm
List of packages currently excluding arches (2260)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 389-ds-base
ExcludeArch: i686
- 4ti2
ExcludeArch: %{ix86}
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le riscv64
- AcetoneISO
ExcludeArch: ppc %{power64} s390x
- Agda
ExcludeArch: %{ix86} armv7hl
- Agda-stdlib
ExcludeArch: armv7hl %{ix86}
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CFR
ExclusiveArch: %{java_arches} noarch
- COPASI
ExcludeArch: %{ix86}
- CardManager
ExclusiveArch: %{java_arches} noarch
- CuraEngine
ExcludeArch: %{ix86}
- E
ExcludeArch: %{ix86}
- GAPDoc
ExcludeArch: %{ix86}
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- HPCombi
ExclusiveArch: x86_64 %{arm64}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- IQmol
ExcludeArch: %{ix86}
- JUnitParams
ExclusiveArch: %{java_arches} noarch
- L-function
ExcludeArch: %{ix86}
- LabPlot
ExcludeArch: sparc64 s390 s390x
- MUSIC
ExcludeArch: %{ix86}
- Macaulay2
ExcludeArch: %{ix86} ppc64le
- Maelstrom
ExcludeArch: %{ix86}
- Mars
ExclusiveArch: %{java_arches} noarch
- NiaAML-GUI
ExcludeArch: %{ix86}
- OpenColorIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- Pencil2D
ExcludeArch: %{ix86}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- ProDy
ExcludeArch: ppc64 s390x
- R-IRkernel
ExcludeArch: %{ix86}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-ape
ExcludeArch: %{ix86}
- R-igraph
ExcludeArch: %{ix86}
- R-kernlab
ExcludeArch: %{ix86} s390x
- R-rJava
ExclusiveArch: %{java_arches}
- Random123
ExcludeArch: mips64r2 mips32r2 s390
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- Singular
ExcludeArch: %{ix86}
- TOPCOM
ExcludeArch: %{ix86}
- VulkanMemoryAllocator
ExcludeArch: %{ix86}
- WoeUSB
ExcludeArch: s390x
- YafaRay
ExclusiveArch: %{ix86} x86_64
- Zim
ExcludeArch: %{ix86}
- aardvark-dns
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- abiword
ExcludeArch: %{ix86}
- abrt-java-connector
ExcludeArch: %{ix86}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpica-tools
ExcludeArch: i686 armv7hl
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64 riscv64
- act
ExcludeArch: %{ix86}
- admeshgui
ExcludeArch: %{ix86}
- aemu
ExcludeArch: %{ix86} %{power64} s390x
- agenda
ExcludeArch: %{ix86}
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alienarena
ExcludeArch: s390x
- alizams
ExcludeArch: %{power64} %{ix86} s390x
- alt-ergo
ExcludeArch: %{ix86}
- american-fuzzy-lop
ExclusiveArch: x86_64
- amg4psblas
ExcludeArch: %{ix86}
- android-tools
ExcludeArch: ppc ppc64 s390x ppc64le
- anet
ExclusiveArch: %{GPRbuild_arches}
- ansible-collection-microsoft-sql
ExcludeArch: i686
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- ant-contrib
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr3
ExclusiveArch: %{java_arches}
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-configuration
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jexl
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-commons-vfs
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-logging-parent
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appeditor
ExcludeArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- apricots
ExcludeArch: ppc64le aarch64
- apron
ExcludeArch: %{ix86}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- arbor
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- arc-theme
ExcludeArch: %{ix86}
- args4j
ExclusiveArch: %{java_arches} noarch
- arianna
ExclusiveArch: %{qt6_qtwebengine_arches}
- arm-none-eabi-binutils-cs
ExcludeArch: %{ix86}
- arm-none-eabi-gcc-cs
ExcludeArch: %{ix86}
- arpwatch
ExcludeArch: %{ix86}
- asahi-installer
ExcludeArch: s390x
- asdcplib
ExcludeArch: %{ix86} %{arm}
- asmjit
ExclusiveArch: aarch64 x86_64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- astromenace
ExcludeArch: ppc64 s390x
- astrometry-tycho2
ExcludeArch: s390x
- asv
ExcludeArch: %{ix86}
- atinject
ExclusiveArch: %{java_arches} noarch
- atlantik
ExcludeArch: %{ix86}
- atomic-queue
ExcludeArch: %{ix86}
- aubit4gl
ExcludeArch: i686 s390x ppc64le
- audacity
ExcludeArch: %{ix86} s390x
- audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- aunit
ExclusiveArch: %{GPRbuild_arches}
- auryn
ExcludeArch: %{ix86}
- auto
ExclusiveArch: %{java_arches} noarch
- autolink-java
ExclusiveArch: noarch %{java_arches}
- avgtime
ExclusiveArch: %{ldc_arches}
- avr-gcc
ExcludeArch: %{ix86}
- aws
ExclusiveArch: %GPRbuild_arches
- aws-c-cal
ExcludeArch: s390x
- aws-c-common
ExcludeArch: s390x
- aws-c-compression
ExcludeArch: s390x
- aws-c-io
ExcludeArch: %{ix86}
ExcludeArch: s390x
- aws-c-sdkutils
ExcludeArch: s390x
- aws-checksums
ExcludeArch: s390x
- awscli2
ExcludeArch: s390x
- azove
ExcludeArch: %{ix86}
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x riscv64
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl riscv64
- bcel
ExclusiveArch: %{java_arches} noarch
- bcftools
ExcludeArch: s390x
- bcm283x-firmware
ExclusiveArch: aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- bear
ExcludeArch: %{ix86}
- bear-factory
ExcludeArch: ppc64le
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips} riscv64
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- bibletime
ExclusiveArch: %{java_arches}
- bigloo
ExcludeArch: %{ix86}
- binaryen
ExcludeArch: ppc64 s390x
- binutils
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
- biosdevname
ExclusiveArch: %{ix86} x86_64
- biosig4c++
ExcludeArch: %{ix86}
- blake3
ExcludeArch: %{ix86}
- blender
ExcludeArch: %{ix86} %{arm}
- bless
ExclusiveArch: %mono_arches
- bliss
ExcludeArch: %{ix86}
- blueprint-compiler
ExcludeArch: s390x
- bluez-hcidump
ExcludeArch: s390 s390x
- bochs
ExcludeArch: s390x i686
- bodhi-server
ExclusiveArch: %{golang_arches_future}
- boinc-client
ExcludeArch: s390x
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bootc
ExcludeArch: %{ix86}
- bottles
ExcludeArch: s390x
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bout++
ExcludeArch: %{ix86}
- bowtie
ExcludeArch: i686 armv7hl
- bowtie2
ExcludeArch: %{ix86} %{arm} s390x
- box64
ExclusiveArch: aarch64 riscv64 ppc64le x86_64
- boxes
ExcludeArch: %{ix86}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- breakid
ExcludeArch: %{ix86}
- brewtarget
ExcludeArch: %{ix86}
- brial
ExcludeArch: %{ix86}
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- build-helper-maven-plugin
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- busybox
ExcludeArch: i686 s390x
- bwping
ExcludeArch: %{ix86}
- byebyebios
ExclusiveArch: x86_64
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- caddy
ExclusiveArch: %{golang_arches}
ExclusiveArch: %{golang_arches_future}
- cadical
ExcludeArch: %{ix86}
- caffe
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64 riscv64
- calceph
ExcludeArch: %{ix86}
- calibre
ExclusiveArch: aarch64 x86_64
- calligra
ExcludeArch: %{ix86}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- cantera
ExcludeArch: %{ix86}
- carat
ExcludeArch: %{ix86}
- casc
ExcludeArch: %{ix86}
- cataclysm-dda
ExcludeArch: i686
- catatonit
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- ccdciel
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- ccluster
ExcludeArch: %{ix86}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- cdrdao
ExcludeArch: s390 s390x
- ceph
ExcludeArch: i686 armv7hl
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- ceres-solver
ExcludeArch: ppc64
- cfn-lint
ExcludeArch: %{ix86}
- cglib
ExclusiveArch: %{java_arches} noarch
- cgreen
ExcludeArch: s390x
- chatterino2
ExcludeArch: %{ix86}
- chatty
ExcludeArch: i686
- checkpointctl
ExclusiveArch: %{golang_arches_future}
- chromium
ExclusiveArch: x86_64
ExclusiveArch: x86_64 aarch64 ppc64le
ExclusiveArch: x86_64 aarch64
- cinnamon
ExcludeArch: %{ix86}
- cinnamon-control-center
ExcludeArch: %{ix86}
- cinnamon-desktop
ExcludeArch: %{ix86}
- cinnamon-menus
ExcludeArch: %{ix86}
- cinnamon-screensaver
ExcludeArch: %{ix86}
- cinnamon-session
ExcludeArch: %{ix86}
- cinnamon-settings-daemon
ExcludeArch: %{ix86}
- cjdns
ExclusiveArch: %{nodejs_arches}
- cjs
ExcludeArch: %{ix86}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- cld2
ExcludeArch: ppc64 s390x
- clibs-list
ExcludeArch: %{ix86}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cloudcompare
ExcludeArch: %{ix86}
- clover2
ExcludeArch: armv7hl
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coan
ExcludeArch: ppc64 s390x
- coccinelle
ExcludeArch: %{ix86}
- cockpit
ExcludeArch: %{ix86}
- cockpit-files
ExclusiveArch: %{nodejs_arches} noarch
- cocoalib
ExcludeArch: %{ix86}
- codeblocks
ExcludeArch: %{ix86}
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- cohomCalg
ExcludeArch: %{ix86}
- coin-or-Alps
ExcludeArch: %{ix86}
- coin-or-Bcp
ExcludeArch: %{ix86}
- coin-or-Bcps
ExcludeArch: %{ix86}
- coin-or-Blis
ExcludeArch: %{ix86}
- coin-or-Bonmin
ExcludeArch: %{ix86}
- coin-or-CoinMP
ExcludeArch: %{ix86}
- coin-or-Couenne
ExcludeArch: %{ix86}
- coin-or-Dip
ExcludeArch: %{ix86}
- coin-or-FlopC++
ExcludeArch: %{ix86}
- coin-or-HiGHS
ExcludeArch: %{ix86}
- coin-or-Ipopt
ExcludeArch: %{ix86}
- coin-or-OS
ExcludeArch: %{ix86}
- coin-or-SYMPHONY
ExcludeArch: %{ix86}
- coin-or-lemon
ExcludeArch: %{ix86}
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- compiz-plugins-experimental
ExcludeArch: s390 s390x
- conmon
ExclusiveArch: %{golang_arches_future}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- containers-common
ExclusiveArch: %{golang_arches} noarch
- contour-terminal
ExclusiveArch: x86_64 aarch64
- contractor
ExcludeArch: %{ix86}
- conu
ExcludeArch: ppc64
- coolreader
ExcludeArch: %{ix86}
- coq
ExclusiveArch: %{ocaml_native_compiler}
- corectrl
ExcludeArch: %{ix86}
- cortado
ExclusiveArch: %{java_arches} noarch
- cosmic-comp
ExcludeArch: %{ix86}
- coxeter
ExcludeArch: %{ix86}
- cp2k
ExcludeArch: s390x
- cpp-hocon
ExcludeArch: %{ix86}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cpuinfo
ExclusiveArch: x86_64 aarch64
- cqrlog
ExclusiveArch: %{fpc_arches}
- cramjam-cli
ExcludeArch: %{ix86}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- credentials-fetcher
ExclusiveArch: x86_64 aarch64 s390x
- crest
ExcludeArch: s390x
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le riscv64 s390x x86_64
- cryfs
ExcludeArch: i686
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- cryptominisat
ExcludeArch: %{ix86}
- csdp
ExcludeArch: %{ix86}
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cura
ExcludeArch: %{ix86}
- cura-fdm-materials
ExcludeArch: %{ix86}
- cvc5
ExcludeArch: %{ix86}
- cxsc
ExcludeArch: %{ix86}
- daggy
ExcludeArch: s390x
- dapl
ExcludeArch: s390, armv7hl
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExcludeArch: armv7hl i686 s390x
- dbus-parsec
ExcludeArch: ppc64le s390x
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- ddccontrol
ExcludeArch: s390 s390x
- ddcutil
ExcludeArch: s390 s390x
- ddd
ExcludeArch: %{ix86}
- ddnet
ExcludeArch: s390x
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dhall
ExcludeArch: %{ix86}
- dhall-json
ExcludeArch: %{ix86}
- dialect
ExcludeArch: s390x
- diffoscope
ExcludeArch: %{ix86}
- dippi
ExcludeArch: %{ix86}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dl_poly
ExcludeArch: i686
- dlib
ExcludeArch: %{ix86} s390x
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- dnsdist
ExcludeArch: %{ix86} #1994125
ExcludeArch: armv7hl #1994125
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dogtag-pki
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- dolfin
ExcludeArch: %{ix86}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dosbox-staging
ExcludeArch: %{ix86}
- dotnet8.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dovecot
ExcludeArch: %{ix86}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dragonbox
ExcludeArch: %{ix86}
- drat-trim
ExcludeArch: %{ix86}
- drat2er
ExcludeArch: %{ix86}
- dub
ExclusiveArch: %{ldc_arches}
- duperemove
ExcludeArch: %{ix86}
- dvdauthor
ExcludeArch: %{ix86}
- dvgrab
ExcludeArch: s390 s390x
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e-antic
ExcludeArch: %{ix86}
- e00compr
ExcludeArch: %{ix86}
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- eccodes
ExcludeArch: i686
- ecj
ExclusiveArch: %{java_arches} noarch
- eclib
ExcludeArch: %{ix86}
- eclipse-swt
ExclusiveArch: %{java_arches}
- ecryptfs-utils
ExcludeArch: %{ix86}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edac-utils
ExcludeArch: %{ix86}
- edflib
ExcludeArch: s390x %{ix86}
- edk2
ExclusiveArch: x86_64 aarch64 riscv64
- edwin-fonts
ExcludeArch: %{ix86}
- eegdev
ExcludeArch: %{ix86}
- eegview
ExcludeArch: %{ix86}
- efax
ExcludeArch: s390 s390x
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- electron-cash
ExcludeArch: %{ix86}
- electrum
ExcludeArch: %{ix86}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 aarch64 %{arm} %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-common-proofgeneral
ExcludeArch: %{ix86}
- emacs-company-mode
ExcludeArch: %{ix86}
- emacs-iedit
ExcludeArch: %{ix86}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- embree3
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- eot-utils
ExcludeArch: %{ix86}
- ergo
ExcludeArch: %{ix86}
- eric
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- erlang-riak_ensemble
ExcludeArch: ppc64le
- esmi_ib_library
ExclusiveArch: x86_64
- espresso
ExcludeArch: s390x i686 armv7hl
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- f3d
ExcludeArch: %{ix86}
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fbreader
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx5-mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- fcoe-utils
ExcludeArch: ppc s390
ExcludeArch: %{ix86}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- fido-device-onboard
ExcludeArch: %{ix86}
- filedrop
ExclusiveArch: %{java_arches} noarch
- filezilla
ExcludeArch: s390x
- firecracker
ExclusiveArch: aarch64 x86_64
- firefox
ExcludeArch: i686
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- flang
ExcludeArch: i686 s390x
- flashrom
ExcludeArch: s390 s390x
- flatbuffers
ExcludeArch: %{ix86}
- flatpak
ExcludeArch: %{ix86}
- flatpak-builder
ExcludeArch: %{ix86}
- flatpak-module-tools
ExcludeArch: i386 i686
- flexmark-java
ExclusiveArch: noarch %{java_arches}
- flickcurl
ExcludeArch: %{ix86}
- flint
ExcludeArch: %{ix86}
- flocq
ExclusiveArch: %{ocaml_native_compiler}
- floppy-support
ExcludeArch: %{arm} aarch64 s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- flterm
ExcludeArch: s390 s390x sparcv9
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- fmidi
ExcludeArch: %{ix86}
- folly
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fotocx
ExcludeArch: %{ix86}
- foxi
ExclusiveArch: x86_64 aarch64
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- fprintd
ExcludeArch: s390 s390x
- fractal
ExcludeArch: %{ix86}
- fragments
ExcludeArch: %{ix86}
- frama-c
ExclusiveArch: %{ocaml_native_compiler}
- free42
ExcludeArch: %{ix86}
- freecol
ExclusiveArch: %{java_arches} noarch
- freedink
ExcludeArch: s390x
- freedink-dfarc
ExcludeArch: s390x
- freefem++
ExcludeArch: %{ix86}
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- freetennis
ExcludeArch: sparc64 s390 s390x %{ix86}
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fuse-overlayfs
ExclusiveArch: %{arm64} ppc64le s390x x86_64 riscv64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExcludeArch: %{ix86}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le riscv64
- galera
ExcludeArch: %{ix86}
- gambas3
ExcludeArch: i686
- gap
ExcludeArch: %{ix86}
- gap-pkg-ace
ExcludeArch: %{ix86}
- gap-pkg-aclib
ExcludeArch: %{ix86}
- gap-pkg-alnuth
ExcludeArch: %{ix86}
- gap-pkg-anupq
ExcludeArch: %{ix86}
- gap-pkg-atlasrep
ExcludeArch: %{ix86}
- gap-pkg-autodoc
ExcludeArch: %{ix86}
- gap-pkg-automata
ExcludeArch: %{ix86}
- gap-pkg-autpgrp
ExcludeArch: %{ix86}
- gap-pkg-browse
ExcludeArch: %{ix86}
- gap-pkg-caratinterface
ExcludeArch: %{ix86}
- gap-pkg-circle
ExcludeArch: %{ix86}
- gap-pkg-cohomolo
ExcludeArch: %{ix86}
- gap-pkg-congruence
ExcludeArch: %{ix86}
- gap-pkg-corelg
ExcludeArch: %{ix86}
- gap-pkg-crime
ExcludeArch: %{ix86}
- gap-pkg-crisp
ExcludeArch: %{ix86}
- gap-pkg-crypting
ExcludeArch: %{ix86}
- gap-pkg-cryst
ExcludeArch: %{ix86}
- gap-pkg-crystcat
ExcludeArch: %{ix86}
- gap-pkg-ctbllib
ExcludeArch: %{ix86}
- gap-pkg-curlinterface
ExcludeArch: %{ix86}
- gap-pkg-cvec
ExcludeArch: %{ix86}
- gap-pkg-datastructures
ExcludeArch: %{ix86}
- gap-pkg-design
ExcludeArch: %{ix86}
- gap-pkg-digraphs
ExcludeArch: %{ix86}
- gap-pkg-edim
ExcludeArch: %{ix86}
- gap-pkg-factint
ExcludeArch: %{ix86}
- gap-pkg-ferret
ExcludeArch: %{ix86}
- gap-pkg-fga
ExcludeArch: %{ix86}
- gap-pkg-fining
ExcludeArch: %{ix86}
- gap-pkg-float
ExcludeArch: %{ix86}
- gap-pkg-format
ExcludeArch: %{ix86}
- gap-pkg-forms
ExcludeArch: %{ix86}
- gap-pkg-fplsa
ExcludeArch: %{ix86}
- gap-pkg-fr
ExcludeArch: %{ix86}
- gap-pkg-francy
ExcludeArch: %{ix86}
- gap-pkg-gbnp
ExcludeArch: %{ix86}
- gap-pkg-genss
ExcludeArch: %{ix86}
- gap-pkg-grape
ExcludeArch: %{ix86}
- gap-pkg-groupoids
ExcludeArch: %{ix86}
- gap-pkg-grpconst
ExcludeArch: %{ix86}
- gap-pkg-guava
ExcludeArch: %{ix86}
- gap-pkg-hap
ExcludeArch: %{ix86}
- gap-pkg-hapcryst
ExcludeArch: %{ix86}
- gap-pkg-hecke
ExcludeArch: %{ix86}
- gap-pkg-images
ExcludeArch: %{ix86}
- gap-pkg-io
ExcludeArch: %{ix86}
- gap-pkg-irredsol
ExcludeArch: %{ix86}
- gap-pkg-json
ExcludeArch: %{ix86}
- gap-pkg-jupyterkernel
ExcludeArch: %{ix86}
- gap-pkg-jupyterviz
ExcludeArch: %{ix86}
- gap-pkg-laguna
ExcludeArch: %{ix86}
- gap-pkg-liealgdb
ExcludeArch: %{ix86}
- gap-pkg-liepring
ExcludeArch: %{ix86}
- gap-pkg-liering
ExcludeArch: %{ix86}
- gap-pkg-loops
ExcludeArch: %{ix86}
- gap-pkg-lpres
ExcludeArch: %{ix86}
- gap-pkg-mapclass
ExcludeArch: %{ix86}
- gap-pkg-nautytracesinterface
ExcludeArch: %{ix86}
- gap-pkg-nq
ExcludeArch: %{ix86}
- gap-pkg-openmath
ExcludeArch: %{ix86}
- gap-pkg-orb
ExcludeArch: %{ix86}
- gap-pkg-permut
ExcludeArch: %{ix86}
- gap-pkg-polenta
ExcludeArch: %{ix86}
- gap-pkg-polycyclic
ExcludeArch: %{ix86}
- gap-pkg-polymaking
ExcludeArch: %{ix86}
- gap-pkg-primgrp
ExcludeArch: %{ix86}
- gap-pkg-profiling
ExcludeArch: %{ix86}
- gap-pkg-qpa
ExcludeArch: %{ix86}
- gap-pkg-quagroup
ExcludeArch: %{ix86}
- gap-pkg-radiroot
ExcludeArch: %{ix86}
- gap-pkg-recog
ExcludeArch: %{ix86}
- gap-pkg-repsn
ExcludeArch: %{ix86}
- gap-pkg-resclasses
ExcludeArch: %{ix86}
- gap-pkg-scscp
ExcludeArch: %{ix86}
- gap-pkg-semigroups
ExcludeArch: %{ix86}
- gap-pkg-singular
ExcludeArch: %{ix86}
- gap-pkg-sla
ExcludeArch: %{ix86}
- gap-pkg-smallgrp
ExcludeArch: %{ix86}
- gap-pkg-smallsemi
ExcludeArch: %{ix86}
- gap-pkg-sonata
ExcludeArch: %{ix86}
- gap-pkg-sophus
ExcludeArch: %{ix86}
- gap-pkg-spinsym
ExcludeArch: %{ix86}
- gap-pkg-standardff
ExcludeArch: %{ix86}
- gap-pkg-tomlib
ExcludeArch: %{ix86}
- gap-pkg-toric
ExcludeArch: %{ix86}
- gap-pkg-transgrp
ExcludeArch: %{ix86}
- gap-pkg-utils
ExcludeArch: %{ix86}
- gap-pkg-uuid
ExcludeArch: %{ix86}
- gap-pkg-xmod
ExcludeArch: %{ix86}
- gap-pkg-zeromqinterface
ExcludeArch: %{ix86}
- gappa
ExcludeArch: %{ix86}
- gappalib-coq
ExclusiveArch: %{ocaml_native_compiler}
- gauche
ExcludeArch: armv7hl
- gbrainy
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gdb-gef
ExclusiveArch: x86_64
- gdl
ExcludeArch: %{ix86}
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- gearmand
ExcludeArch: ppc
- geeqie
ExcludeArch: %{ix86}
- getdp
ExcludeArch: %{ix86}
- gfan
ExcludeArch: %{ix86}
- gfs2-utils
ExcludeArch: %{ix86}
- gfxstream
ExcludeArch: %{ix86} %{power64} s390x
- ghc
ExcludeArch: armv7hl
- ghc-cborg
ExcludeArch: %{ix86}
- ghc-cborg-json
ExcludeArch: %{ix86}
- ghc-gi-gtk
ExcludeArch: armv7hl
- ghc-serialise
ExcludeArch: %{ix86}
- ghc9.10
ExcludeArch: armv7hl
- ghc9.2
ExcludeArch: armv7hl
- ghc9.4
ExcludeArch: armv7hl
- ghc9.6
ExcludeArch: armv7hl
- ghdl
ExclusiveArch: %{GNAT_arches}
ExcludeArch: armv7hl %{ix86}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gimp-fourier-plugin
ExcludeArch: %{ix86}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-lfs
ExcludeArch: %{ix86}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gkrellm-wifi
ExcludeArch: s390 s390x
- glava
ExcludeArch: %{ix86}
- glibd
ExclusiveArch: %{ldc_arches}
- gloo
ExcludeArch: i686
- glycin-loaders
ExcludeArch: %{ix86}
- gmsh
ExcludeArch: %{ix86}
- gmult
ExcludeArch: %{ix86}
- gn
ExcludeArch: %{ix86}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnofract4d
ExcludeArch: %{ix86}
- gnome-applets
ExcludeArch: %{ix86}
- gnome-bluetooth
ExcludeArch: s390 s390x
- gnome-bluetooth3.34
ExcludeArch: s390 s390x
- gnome-boxes
ExclusiveArch: x86_64
- gnome-chemistry-utils
ExcludeArch: %{ix86}
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- gnome-flashback
ExcludeArch: %{ix86}
- gnome-hexgl
ExcludeArch: i686
- gnome-initial-setup
ExcludeArch: %{ix86}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-monitor-config
ExcludeArch: %{ix86}
- gnome-panel
ExcludeArch: %{ix86}
- gnome-rdp
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- gnome-session
ExcludeArch: %{ix86}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-shell
ExcludeArch: %{ix86}
- gnome-software
ExcludeArch: %{ix86}
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnome-terminal
ExcludeArch: %{ix86}
- gnu-efi
ExclusiveArch: %{efi}
- gnucash
ExcludeArch: %{ix86}
ExcludeArch: ppc64 s390x
- gnumeric
ExcludeArch: %{ix86}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godot
ExcludeArch: s390x
- godot3
ExcludeArch: ppc64 ppc64le s390x
- goffice
ExcludeArch: %{ix86}
- golang
ExclusiveArch: %{golang_arches}
- golang-entgo-ent
ExcludeArch: %{arm32} %{ix86}
- golang-github-ebitengine-purego
ExcludeArch: ppc64le s390x
- golang-github-elliotchance-orderedmap
ExcludeArch: aarch64
ExcludeArch: ppc64le
ExcludeArch: s390x
- golang-github-facebookincubator-nvdtools
ExcludeArch: i686 armv7hl
- golang-github-google-goterm
ExcludeArch: ppc64le s390x
- golang-helm-3
ExcludeArch: armv7hl aarch64
- goldendict-ng
ExclusiveArch: aarch64 x86_64
- google-compute-engine-guest-configs
ExcludeArch: %{ix86}
- google-cpu_features
ExcludeArch: s390x
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guest-agent
ExcludeArch: ppc64le s390x
- google-guice
ExclusiveArch: %{java_arches} noarch
- google-osconfig-agent
ExcludeArch: ppc64le s390x
- gotcha
ExcludeArch: %{ix86}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gource
ExcludeArch: ppc64le
- goverlay
ExclusiveArch: %{fpc_arches}
- gpaste
ExcludeArch: %{ix86}
- gpaw
ExcludeArch: ppc64
ExcludeArch: %{ix86}
- gperftools
ExcludeArch: s390
- gprbuild
ExclusiveArch: %{GPRbuild_arches}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- gr-air-modes
ExcludeArch: %{ix86}
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- greenboot
ExcludeArch: s390x
- gretl
ExcludeArch: %{ix86}
- gromacs
ExcludeArch: i686 armv7hl s390x
- grub-customizer
ExcludeArch: s390 s390x %{arm}
- grub2
ExcludeArch: s390 s390x %{ix86}
- grub2-breeze-theme
ExcludeArch: s390 s390x %{arm}
- grubby
ExcludeArch: %{ix86}
- gsequencer
ExcludeArch: i686
- gthree
ExcludeArch: i686
- gthumb
ExcludeArch: s390x
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gtkhash
ExcludeArch: %{ix86}
- gtkwave
ExcludeArch: s390x
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- gvisor-tap-vsock
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64 riscv64
- harmonyseq
ExcludeArch: %{ix86}
- harvey
ExcludeArch: %{ix86}
- hashcat
ExcludeArch: ppc64 s390x
- hawtjni
ExclusiveArch: %{java_arches} noarch
- haxe
ExcludeArch: %{ix86}
- hcloud
ExcludeArch: %{ix86}
- heaptrack
ExcludeArch: s390 s390x
- hedgewars
ExclusiveArch: %{fpc_arches}
ExcludeArch: ppc64le
- helix
ExcludeArch: %{ix86}
- hevea
ExcludeArch: %{ix86}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- highfive
ExcludeArch: %{ix86}
- hipblas
ExclusiveArch: x86_64
- hipcub
ExclusiveArch: x86_64
- hipfft
ExclusiveArch: x86_64
- hipify
ExclusiveArch: x86_64
- hiprand
ExclusiveArch: x86_64
- hipsolver
ExclusiveArch: x86_64
- hipsparse
ExclusiveArch: x86_64
- hmmer
ExcludeArch: aarch64 ppc64le s390x
- honggfuzz
ExcludeArch: %{arm} %{power64} s390 s390x
- howl
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- hpx
ExcludeArch: i686
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hydrapaper
ExcludeArch: s390x
- hyperhdr
ExcludeArch: %{ix86}
- hyperrogue
ExcludeArch: armv7hl
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- hyprcursor
ExcludeArch: %{ix86}
- hypridle
ExcludeArch: %{ix86}
- hyprland
ExcludeArch: %{ix86}
- hyprlang
ExcludeArch: %{ix86}
- hyprlock
ExcludeArch: %{ix86}
- hyprpaper
ExcludeArch: %{ix86}
- hyprutils
ExcludeArch: %{ix86}
- hyprwayland-scanner
ExcludeArch: %{ix86}
- i2c-tools
ExcludeArch: s390 s390x
- ibsim
ExcludeArch: s390 %{arm}
- ibus-typing-booster
ExcludeArch: ppc64 s390x
- icecat
ExcludeArch: %{ix86} %{arm}
- icedtea-web
ExclusiveArch: %{java_arches}
- icu4j
ExclusiveArch: %{java_arches} noarch
- ignition
ExcludeArch: %{ix86}
- iir1
ExcludeArch: %{ix86}
- ike-scan
ExcludeArch: %{ix86}
- ilua
ExcludeArch: %{ix86}
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64}
- iml
ExcludeArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indi-3rdparty-drivers
ExcludeArch: %{ix86}
- indi-3rdparty-libraries
ExcludeArch: %{ix86}
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExcludeArch: s390x ppc64le
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
- intel-lpmd
ExclusiveArch: x86_64
- intel-media-driver-free
ExclusiveArch: i686 x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-metee
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- intel-vpl-gpu-rt
ExclusiveArch: x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipe
ExcludeArch: %{ix86}
- ipmctl
ExclusiveArch: x86_64
- irda-utils
ExcludeArch: s390 s390x
- irqbalance
ExcludeArch: s390 s390x
- isa-l
ExcludeArch: %{ix86}
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jack-mixer
ExcludeArch: armv7hl
ExcludeArch: i686
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-mail1
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-1.8.0-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches}
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jblas
ExcludeArch: %{ix86}
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jedit
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetbrains-annotations
ExclusiveArch: noarch %{java_arches}
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches}
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jo
ExcludeArch: %{ix86}
- jol
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpilot
ExcludeArch: s390, s390x
- jpilot-backup
ExcludeArch: s390 s390x
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsoup
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jss
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- julia
ExclusiveArch: x86_64
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kaffeine
ExcludeArch: %{ix86}
- kaidan
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- kata-containers
ExcludeArch: %{arm} %{ix86} s390 s390x
ExcludeArch: ppc64le
- kawa
ExcludeArch: i686
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kcm_wacomtablet
ExcludeArch: s390 s390x
- kcov
ExcludeArch: s390 s390x
- kdenlive
ExcludeArch: %{ix86}
- keepass
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- keepassxc
ExcludeArch: s390x
- kernel
ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le
- kernelshark
ExcludeArch: %{ix86} %{arm}
- keydb
ExcludeArch: %{ix86}
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- khelpcenter
ExclusiveArch: %{qt6_qtwebengine_arches}
- kicad
ExclusiveArch: x86_64 aarch64 ppc64le
- kissat
ExcludeArch: %{ix86}
- kitty
ExcludeArch: %{ix86}
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kokkos
ExcludeArch: i686 armv7hl
- kpilot
ExcludeArch: s390 s390x
- krita
ExcludeArch: %{ix86}
- ksensors
ExcludeArch: s390 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- ladspa-autotalent-plugins
ExcludeArch: %{ix86}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- latte-integrale
ExcludeArch: %{ix86}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- lcd4linux
ExcludeArch: s390 s390x
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- ledmon
ExcludeArch: %{ix86}
- leland-fonts
ExcludeArch: %{ix86}
- lfortran
ExclusiveArch: x86_64
- lfsc
ExcludeArch: %{ix86}
- lib3mf
ExcludeArch: %{ix86}
- libCombine
ExcludeArch: %{ix86}
- libaiff
ExcludeArch: %{ix86}
- libarcus
ExcludeArch: %{ix86}
- libarrow
ExcludeArch: %{ix86} %{arm}
- libavc1394
ExcludeArch: s390 s390x
- libbase
ExclusiveArch: %{java_arches} noarch
- libcamera
ExcludeArch: s390x ppc64le
- libcamera-apps
ExcludeArch: %{power64} s390x
- libcint
ExcludeArch: %{power64}
ExcludeArch: x86_64
- libcircle
ExcludeArch: %{ix86}
- libcpuid
ExcludeArch: aarch64 %arm ppc64le ppc64 s390x
- libcrystalhd
ExcludeArch: s390 s390x
- libcxx
ExcludeArch: ppc64 ppc64le
- libdc1394
ExcludeArch: s390 s390x
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdigidocpp
ExcludeArch: %{ix86}
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libffado
ExcludeArch: s390 s390x
- libfilezilla
ExcludeArch: s390x
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libfprint
ExcludeArch: s390 s390x
- libguestfs
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- libhomfly
ExcludeArch: %{ix86}
- libibcommon
ExcludeArch: s390 s390x
- libica
ExclusiveArch: s390 s390x
- libiec61883
ExcludeArch: s390 s390x
- libinsane
ExcludeArch: %{ix86}
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libldac
ExcludeArch: s390x
- libloader
ExclusiveArch: %{java_arches} noarch
- libnuml
ExcludeArch: %{ix86}
- libnxz
ExclusiveArch: ppc64le
- libobjc2
ExcludeArch: armv7hl i686 ppc64le s390x
- libocxl
ExclusiveArch: ppc64le
- libomp17
ExcludeArch: s390x
- libopenshot
ExcludeArch: ppc64le
- libopenshot-audio
ExcludeArch: ppc64le
- liborc
ExcludeArch: i686 armv7hl
- libpoly
ExcludeArch: %{ix86}
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libraw1394
ExcludeArch: s390 s390x
- libreoffice
ExcludeArch: %{ix86}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
ExcludeArch: aarch64 s390x
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- libretro-pcsx-rearmed
ExcludeArch: armv7hl
- librtas
ExclusiveArch: %{power64}
- libsavitar
ExcludeArch: %{ix86}
- libsedml
ExcludeArch: %{ix86}
- libsemigroups
ExcludeArch: %{ix86}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libsonata
ExcludeArch: %{ix86}
- libstoragemgmt
ExcludeArch: %{ix86}
- libtracecmd
ExcludeArch: %{ix86} %{arm}
- libunibreak
ExcludeArch: %{ix86}
- libunicode
ExclusiveArch: x86_64 aarch64
- libunifex
ExcludeArch: i686
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64 riscv64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libva-nvidia-driver
ExclusiveArch: %{x86_64} %{ix86} %{arm64} ppc64le
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libvpl
ExclusiveArch: x86_64
- libvpl-tools
ExclusiveArch: x86_64
- libx86
ExcludeArch: ppc %{power64} s390 s390x %{sparc} aarch64 armv7hl
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- liferea
ExcludeArch: %{ix86}
- linbox
ExcludeArch: %{ix86}
- linux-system-roles
ExcludeArch: i686
- liquidctl
ExcludeArch: s390 s390x
- lite-xl
ExcludeArch: %{ix86}
- llama-cpp
ExclusiveArch: x86_64 aarch64
- lld13
ExcludeArch: s390x
- lld15
ExcludeArch: s390x
- lld16
ExcludeArch: s390x
- lld17
ExcludeArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- llvm-bolt
ExcludeArch: s390x ppc64le i686
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- loguru
ExcludeArch: %{ix86}
- loupe
ExcludeArch: %{ix86}
- love
ExcludeArch: ppc ppc64 s390x
- lrmi
ExclusiveArch: %{ix86}
- lrslib
ExcludeArch: %{ix86}
- lsp-plugins
ExcludeArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExcludeArch: riscv64 ppc64 ppc64le
- lucene
ExclusiveArch: %{java_arches} noarch
- luckybackup
ExcludeArch: %{ix86}
- lujavrite
ExclusiveArch: %{java_arches}
- luminance-hdr
ExcludeArch: %{ix86}
- lusol
ExcludeArch: %{ix86}
- luxcorerender
ExclusiveArch: x86_64
- lzfse
ExcludeArch: s390x
- m4rie
ExcludeArch: %{ix86}
- mactel-boot
ExclusiveArch: x86_64
- magicmirror
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-airnow
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-onthisday
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-singlestock
ExclusiveArch: %{nodejs_arches} noarch
- makemusic-finale-fonts
ExcludeArch: %{ix86}
- mame
ExcludeArch: %{arm} %{ix86}
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mapnik
ExcludeArch: ppc ppc64 s390 s390x
- marcsabatella-campania-fonts
ExcludeArch: %{ix86}
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- mate-applets
ExcludeArch: i386 i686
- mathicgb
ExcludeArch: %{ix86}
- matrix-synapse
ExclusiveArch: %{rust_arches}
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-bundle-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcqd
ExcludeArch: %{ix86}
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: x86_64 %{ix86}
- merkuro
ExclusiveArch: %{qt6_qtwebengine_arches}
- meshlab
ExclusiveArch: aarch64 x86_64
ExcludeArch: %{ix86}
- metamath
ExcludeArch: %{ix86}
- mfem
ExcludeArch: %{ix86}
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64 riscv64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-qt6-qtlocation
ExcludeArch: s390x
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- miopen
ExclusiveArch: x86_64
- mirrormanager2
ExcludeArch: %{ix86}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mlir
ExcludeArch: i686
- mlir17
ExcludeArch: i686
- mlpack
ExcludeArch: %{ix86}
ExcludeArch: s390
- mmapper
ExcludeArch: %{ix86}
- mmlib
ExcludeArch: %{ix86}
- mmtests
ExcludeArch: s390x
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_gnutls
ExcludeArch: %{ix86} %{arm}
- mod_mono
ExclusiveArch: %mono_arches
- mod_proxy_cluster
ExcludeArch: i686 i386
- modello
ExclusiveArch: %{java_arches} noarch
- moditect
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- modulemaker-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mold
ExcludeArch: %{ix86}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- moose
ExcludeArch: s390x
- morphio
ExcludeArch: %{ix86}
- mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- mozilla-ublock-origin
ExcludeArch: ppc64 s390x
- mp
ExcludeArch: %{ix86}
- mpark-patterns
ExcludeArch: %{ix86}
- mpi4py
ExcludeArch: %{ix86}
- mpibash
ExcludeArch: %{ix86}
- mpsolve
ExcludeArch: %{ix86}
- mrchem
ExcludeArch: s390x
- mrcpp
ExcludeArch: s390x
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msolve
ExcludeArch: %{ix86}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mstflint
ExcludeArch: s390 s390x %{arm}
- msv
ExclusiveArch: %{java_arches} noarch
- mt32emu
ExcludeArch: %{ix86}
- muffin
ExcludeArch: %{ix86}
- mumble
ExcludeArch: %{ix86}
- mupen64plus
ExcludeArch: s390x
- musescore
ExcludeArch: %{ix86}
- musl
ExcludeArch: s390
- mvfst
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExcludeArch: %{ix86}
- naga
ExclusiveArch: %{java_arches} noarch
- nagios-plugins-check-updates
ExcludeArch: %{ix86}
- nant
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExcludeArch: i686
- ncl
ExcludeArch: %{ix86}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- nemo
ExcludeArch: %{ix86}
- nemo-extensions
ExcludeArch: %{ix86}
- nest
ExcludeArch: %{ix86}
- netatalk
ExcludeArch: aarch64 s390x
- netavark
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- netcdf-fortran
ExcludeArch: %{ix86}
- netdata
ExcludeArch: s390x
- netgen-mesher
ExcludeArch: %{ix86}
- neuron
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{ix86}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nextcloud-client
ExcludeArch: %{ix86}
ExcludeArch: ppc64 ppc64le s390x
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aw-webui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjs-module-lexer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-undici
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nodejs20
ExclusiveArch: %{nodejs_arches}
- nodejs22
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- normaliz
ExcludeArch: %{ix86}
- not-ocamlfind
ExcludeArch: %{ix86}
- notejot
ExcludeArch: %{ix86}
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- ntfs2btrfs
ExcludeArch: ppc64 s390x
- nuget
ExclusiveArch: %{mono_arches}
- numactl
ExcludeArch: s390 %{arm}
- numatop
ExclusiveArch: x86_64 ppc64le
- numptyphysics
ExcludeArch: ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nut
ExcludeArch: s390 s390x
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExcludeArch: %{ix86} s390x
ExcludeArch: s390x
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-cef
ExclusiveArch: x86_64 aarch64
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- obs-studio-plugin-vkcapture
ExcludeArch: s390x
- ocaml
ExcludeArch: %{ix86}
- ocaml-SDL
ExcludeArch: %{ix86}
- ocaml-alcotest
ExcludeArch: %{ix86}
- ocaml-astring
ExcludeArch: %{ix86}
- ocaml-atd
ExcludeArch: %{ix86}
- ocaml-augeas
ExcludeArch: %{ix86}
- ocaml-autoconf
ExcludeArch: %{ix86}
- ocaml-base
ExcludeArch: %{ix86}
- ocaml-base64
ExcludeArch: %{ix86}
- ocaml-benchmark
ExcludeArch: %{ix86}
- ocaml-bigarray-compat
ExcludeArch: %{ix86}
- ocaml-bin-prot
ExcludeArch: %{ix86}
- ocaml-biniou
ExcludeArch: %{ix86}
- ocaml-bisect-ppx
ExcludeArch: %{ix86}
- ocaml-bos
ExcludeArch: %{ix86}
- ocaml-cairo
ExcludeArch: %{ix86}
- ocaml-calendar
ExcludeArch: %{ix86}
- ocaml-camlbz2
ExcludeArch: %{ix86}
- ocaml-camlidl
ExcludeArch: %{ix86}
- ocaml-camlimages
ExcludeArch: %{ix86}
- ocaml-camlp-streams
ExcludeArch: %{ix86}
- ocaml-camlp5
ExcludeArch: %{ix86}
- ocaml-camlp5-buildscripts
ExcludeArch: %{ix86}
- ocaml-camomile
ExcludeArch: %{ix86}
- ocaml-cinaps
ExcludeArch: %{ix86}
- ocaml-cmdliner
ExcludeArch: %{ix86}
- ocaml-compiler-libs-janestreet
ExcludeArch: %{ix86}
- ocaml-cppo
ExcludeArch: %{ix86}
- ocaml-crunch
ExcludeArch: %{ix86}
- ocaml-cryptokit
ExcludeArch: %{ix86}
- ocaml-csexp
ExcludeArch: %{ix86}
- ocaml-csv
ExcludeArch: %{ix86}
- ocaml-ctypes
ExcludeArch: %{ix86}
- ocaml-cudf
ExcludeArch: %{ix86}
- ocaml-curl
ExcludeArch: %{ix86}
- ocaml-curses
ExcludeArch: %{ix86}
- ocaml-dbus
ExcludeArch: %{ix86}
- ocaml-dose3
ExcludeArch: %{ix86}
- ocaml-dune
ExcludeArch: %{ix86}
- ocaml-easy-format
ExcludeArch: %{ix86}
- ocaml-expat
ExcludeArch: %{ix86}
- ocaml-extlib
ExcludeArch: %{ix86}
- ocaml-facile
ExcludeArch: %{ix86}
- ocaml-fieldslib
ExcludeArch: %{ix86}
- ocaml-fileutils
ExcludeArch: %{ix86}
- ocaml-findlib
ExcludeArch: %{ix86}
- ocaml-fmt
ExcludeArch: %{ix86}
- ocaml-fpath
ExcludeArch: %{ix86}
- ocaml-gen
ExcludeArch: %{ix86}
- ocaml-gettext
ExcludeArch: %{ix86}
- ocaml-graphics
ExcludeArch: %{ix86}
- ocaml-gsl
ExcludeArch: %{arm} %{ix86}
- ocaml-integers
ExcludeArch: %{ix86}
- ocaml-jane-street-headers
ExcludeArch: %{ix86}
- ocaml-jst-config
ExcludeArch: %{ix86}
- ocaml-lablgl
ExcludeArch: %{ix86}
- ocaml-lablgtk
ExcludeArch: %{ix86}
- ocaml-lablgtk3
ExcludeArch: %{ix86}
- ocaml-labltk
ExcludeArch: %{ix86}
- ocaml-lacaml
ExcludeArch: %{ix86}
- ocaml-lambda-term
ExcludeArch: %{ix86}
- ocaml-libvirt
ExcludeArch: %{ix86}
- ocaml-logs
ExcludeArch: %{ix86}
- ocaml-luv
ExcludeArch: %{ix86}
- ocaml-lwt
ExcludeArch: %{ix86}
- ocaml-markup
ExcludeArch: %{ix86}
- ocaml-mccs
ExcludeArch: %{ix86}
- ocaml-mdx
ExcludeArch: %{ix86}
- ocaml-menhir
ExcludeArch: %{ix86}
- ocaml-merlin
ExcludeArch: %{ix86}
- ocaml-mew
ExcludeArch: %{ix86}
- ocaml-mew-vi
ExcludeArch: %{ix86}
- ocaml-mlgmpidl
ExcludeArch: %{ix86}
- ocaml-mlmpfr
ExcludeArch: %{ix86}
- ocaml-mtime
ExcludeArch: %{ix86}
- ocaml-mysql
ExcludeArch: %{ix86}
- ocaml-num
ExcludeArch: %{ix86}
- ocaml-obuild
ExcludeArch: %{ix86}
- ocaml-ocamlbuild
ExcludeArch: %{ix86}
- ocaml-ocamlgraph
ExcludeArch: %{ix86}
- ocaml-ocamlnet
ExcludeArch: %{ix86}
- ocaml-ocp-indent
ExcludeArch: %{ix86}
- ocaml-ocplib-endian
ExcludeArch: %{ix86}
- ocaml-ocplib-simplex
ExcludeArch: %{ix86}
- ocaml-octavius
ExcludeArch: %{ix86}
- ocaml-odoc
ExcludeArch: %{ix86}
- ocaml-omake
ExcludeArch: %{ix86}
- ocaml-opam-file-format
ExcludeArch: %{ix86}
- ocaml-ounit
ExcludeArch: %{ix86}
- ocaml-parmap
ExcludeArch: %{ix86}
- ocaml-parsexp
ExcludeArch: %{ix86}
- ocaml-pcre
ExcludeArch: %{ix86}
- ocaml-pcre2
ExcludeArch: %{ix86}
- ocaml-perl4caml
ExcludeArch: %{ix86}
- ocaml-postgresql
ExcludeArch: %{ix86}
- ocaml-pp
ExcludeArch: %{ix86}
- ocaml-ppx-assert
ExcludeArch: %{ix86}
- ocaml-ppx-base
ExcludeArch: %{ix86}
- ocaml-ppx-cold
ExcludeArch: %{ix86}
- ocaml-ppx-compare
ExcludeArch: %{ix86}
- ocaml-ppx-custom-printf
ExcludeArch: %{ix86}
- ocaml-ppx-derivers
ExcludeArch: %{ix86}
- ocaml-ppx-deriving
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yaml
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yojson
ExcludeArch: %{ix86}
- ocaml-ppx-enumerate
ExcludeArch: %{ix86}
- ocaml-ppx-expect
ExcludeArch: %{ix86}
- ocaml-ppx-fields-conv
ExcludeArch: %{ix86}
- ocaml-ppx-globalize
ExcludeArch: %{ix86}
- ocaml-ppx-hash
ExcludeArch: %{ix86}
- ocaml-ppx-here
ExcludeArch: %{ix86}
- ocaml-ppx-import
ExcludeArch: %{ix86}
- ocaml-ppx-inline-test
ExcludeArch: %{ix86}
- ocaml-ppx-js-style
ExcludeArch: %{ix86}
- ocaml-ppx-let
ExcludeArch: %{ix86}
- ocaml-ppx-optcomp
ExcludeArch: %{ix86}
- ocaml-ppx-sexp-conv
ExcludeArch: %{ix86}
- ocaml-ppx-stable-witness
ExcludeArch: %{ix86}
- ocaml-ppx-variants-conv
ExcludeArch: %{ix86}
- ocaml-ppxlib
ExcludeArch: %{ix86}
- ocaml-psmt2-frontend
ExcludeArch: %{ix86}
- ocaml-ptime
ExcludeArch: %{ix86}
- ocaml-ptmap
ExcludeArch: %{ix86}
- ocaml-pyml
ExcludeArch: %{ix86}
- ocaml-qcheck
ExcludeArch: %{ix86}
- ocaml-qtest
ExcludeArch: %{ix86}
- ocaml-re
ExcludeArch: %{ix86}
- ocaml-react
ExcludeArch: %{ix86}
- ocaml-res
ExcludeArch: %{ix86}
- ocaml-result
ExcludeArch: %{ix86}
- ocaml-rresult
ExcludeArch: %{ix86}
- ocaml-sedlex
ExcludeArch: %{ix86}
- ocaml-sexplib
ExcludeArch: %{ix86}
- ocaml-sexplib0
ExcludeArch: %{ix86}
- ocaml-sha
ExcludeArch: %{ix86}
- ocaml-sqlite
ExcludeArch: %{ix86}
- ocaml-ssl
ExcludeArch: %{ix86}
- ocaml-stdcompat
ExcludeArch: %{ix86}
- ocaml-stdio
ExcludeArch: %{ix86}
- ocaml-stdlib-random
ExcludeArch: %{ix86}
- ocaml-time-now
ExcludeArch: %{ix86}
- ocaml-topkg
ExcludeArch: %{ix86}
- ocaml-trie
ExcludeArch: %{ix86}
- ocaml-tyxml
ExcludeArch: %{ix86}
- ocaml-unionfind
ExcludeArch: %{ix86}
- ocaml-uucd
ExcludeArch: %{ix86}
- ocaml-uucp
ExcludeArch: %{ix86}
- ocaml-uunf
ExcludeArch: %{ix86}
- ocaml-uuseg
ExcludeArch: %{ix86}
- ocaml-uutf
ExcludeArch: %{ix86}
- ocaml-variantslib
ExcludeArch: %{ix86}
- ocaml-version
ExcludeArch: %{ix86}
- ocaml-xml-light
ExcludeArch: %{ix86}
- ocaml-xmlm
ExcludeArch: %{ix86}
- ocaml-xmlrpc-light
ExcludeArch: %{ix86}
- ocaml-yaml
ExcludeArch: %{ix86}
- ocaml-yojson
ExcludeArch: %{ix86}
- ocaml-zarith
ExcludeArch: %{ix86}
- ocaml-zed
ExcludeArch: %{ix86}
- ocaml-zip
ExcludeArch: %{ix86}
- ocaml-zmq
ExcludeArch: %{ix86}
- ocamlify
ExcludeArch: %{ix86}
- ocamlmod
ExcludeArch: %{ix86}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
ExclusiveArch: %{golang_arches_future}
- ocrmypdf
ExcludeArch: %{ix86}
- octave-communications
ExcludeArch: s390x
- octave-iso2mesh
ExcludeArch: armv7hl
- octave-signal
ExcludeArch: s390x
- oidc-agent
ExcludeArch: %{ix86}
- oidn
ExclusiveArch: x86_64
- oneVPL
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- onnx
ExcludeArch: s390x
- onnxruntime
ExcludeArch: s390x %{arm} %{ix86}
- oomd
ExcludeArch: i686 armv7hl
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- opam
ExcludeArch: %{ix86}
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- opencsg
ExcludeArch: %{ix86}
- opengrm-ngram
ExcludeArch: %{ix86}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmeeg
ExcludeArch: s390x
- openmpi
ExcludeArch: %{ix86}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- openni
ExclusiveArch: x86_64 %{arm}
- openni-primesense
ExclusiveArch: x86_64 %{arm}
- openobex
ExcludeArch: s390 s390x
- openoffice.org-diafilter
ExclusiveArch: %{java_arches}
- openpgl
ExclusiveArch: aarch64 x86_64
- openrgb
ExcludeArch: %{ix86}
- openscad
ExcludeArch: %{ix86}
- openshadinglanguage
ExcludeArch: %{ix86} %{arm}
- openshot
ExcludeArch: ppc64le
- opensm
ExcludeArch: s390 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- opentype-sanitizer
ExcludeArch: %{ix86}
- openvdb
ExcludeArch: i686
- openvkl
ExclusiveArch: aarch64 x86_64
- openxr-simple-playground
ExcludeArch: %{ix86}
- optee_client
ExclusiveArch: aarch64
- optee_os
ExclusiveArch: aarch64
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- os-autoinst
ExcludeArch: %{arm}
- osbuild-composer
ExcludeArch: i686 armv7hl
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- osm2pgsql
ExcludeArch: %{ix86}
- osslsigncode
ExcludeArch: i686
- ostree
ExcludeArch: %{ix86}
- otf2
ExcludeArch: i686 s390x
- oz
ExcludeArch: %{ix86}
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- paperwork
ExcludeArch: %{ix86}
- papi
ExcludeArch: s390 s390x
- papilo
ExcludeArch: %{ix86}
- paraview
ExcludeArch: %{ix86}
- pari-nftables
ExcludeArch: %{ix86}
- parlaylib
ExcludeArch: aarch64 s390x arm-hfp ppc64le i686
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcem
ExcludeArch: armv7hl i686 ppc64le s390x
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcg-cpp
ExcludeArch: %{ix86}
- pcm
ExclusiveArch: %{ix86} x86_64
- pcp
ExcludeArch: %{ix86}
- pcp2pdf
ExcludeArch: %{ix86}
- pdbg
ExclusiveArch: ppc64le
- pdfarranger
ExcludeArch: %{ix86}
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pdns
ExcludeArch: %{arm} %{ix86}
- pdns-recursor
ExcludeArch: %{arm} %{ix86}
- pdqsort
ExcludeArch: %{ix86}
- pengupop
ExcludeArch: s390x
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perftest
ExcludeArch: s390 %{arm}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-LMDB_File
ExcludeArch: armv7hl i686
- perl-Math-Int128
ExcludeArch: %{arm32} %{ix86}
- perl-MaxMind-DB-Reader-XS
ExcludeArch: %{arm} %{ix86}
- perl-MongoDB
ExcludeArch: ppc %{sparc} s390
- perl-Net-Works
ExcludeArch: %{arm32} %{ix86}
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- perl-Task-Catalyst
ExcludeArch: %{ix86}
- perl-threads-lite
ExcludeArch: aarch64 ppc ppc64 ppc64le
- permlib
ExcludeArch: %{ix86}
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
- pesign-test-app
ExclusiveArch: x86_64
- petpvc
ExcludeArch: %{ix86}
- pf-bb-config
ExcludeArch: s390x
- pgadmin4
ExcludeArch: i686 armv7hl s390x ppc64le
- phd2
ExcludeArch: %{ix86}
- phosh
ExcludeArch: i686
- phosh-mobile-settings
ExcludeArch: i686
- php
ExcludeArch: %{ix86}
- php-ast
ExcludeArch: %{ix86}
- php-facedetect
ExcludeArch: %{ix86}
- php-geos
ExcludeArch: %{ix86}
- php-libvirt
ExcludeArch: %{ix86}
- php-maxminddb
ExcludeArch: %{ix86}
- php-pecl-amqp
ExcludeArch: %{ix86}
- php-pecl-apcu
ExcludeArch: %{ix86}
- php-pecl-apfd
ExcludeArch: %{ix86}
- php-pecl-dio
ExcludeArch: %{ix86}
- php-pecl-ds
ExcludeArch: %{ix86}
- php-pecl-event
ExcludeArch: %{ix86}
- php-pecl-fann
ExcludeArch: %{ix86}
- php-pecl-gearman
ExcludeArch: %{ix86}
- php-pecl-geoip
ExcludeArch: %{ix86}
- php-pecl-gmagick
ExcludeArch: %{ix86}
- php-pecl-http
ExcludeArch: %{ix86}
- php-pecl-igbinary
ExcludeArch: %{ix86}
- php-pecl-imagick
ExcludeArch: %{ix86}
- php-pecl-inotify
ExcludeArch: %{ix86}
- php-pecl-ip2location
ExcludeArch: %{ix86}
- php-pecl-json-post
ExcludeArch: %{ix86}
- php-pecl-krb5
ExcludeArch: %{ix86}
- php-pecl-lzf
ExcludeArch: %{ix86}
- php-pecl-mailparse
ExcludeArch: %{ix86}
- php-pecl-mcrypt
ExcludeArch: %{ix86}
- php-pecl-memcache
ExcludeArch: %{ix86}
- php-pecl-memcached
ExcludeArch: %{ix86}
- php-pecl-mongodb
ExcludeArch: %{ix86}
- php-pecl-msgpack
ExcludeArch: %{ix86}
- php-pecl-oauth
ExcludeArch: %{ix86}
- php-pecl-pcov
ExcludeArch: %{ix86}
- php-pecl-pq
ExcludeArch: %{ix86}
- php-pecl-raphf
ExcludeArch: %{ix86}
- php-pecl-redis5
ExcludeArch: %{ix86}
- php-pecl-rpminfo
ExcludeArch: %{ix86}
- php-pecl-rrd
ExcludeArch: %{ix86}
- php-pecl-selinux
ExcludeArch: %{ix86}
- php-pecl-ssdeep
ExcludeArch: %{ix86}
- php-pecl-ssh2
ExcludeArch: %{ix86}
- php-pecl-uopz
ExcludeArch: %{ix86}
- php-pecl-uuid
ExcludeArch: %{ix86}
- php-pecl-var-representation
ExcludeArch: %{ix86}
- php-pecl-xattr
ExcludeArch: %{ix86}
- php-pecl-xdebug3
ExcludeArch: %{ix86}
- php-pecl-xmldiff
ExcludeArch: %{ix86}
- php-pecl-xmlrpc
ExcludeArch: %{ix86}
- php-pecl-yac
ExcludeArch: %{ix86}
- php-pecl-zip
ExcludeArch: %{ix86}
- php-phpiredis
ExcludeArch: %{ix86}
- php-smbclient
ExcludeArch: %{ix86}
- php-zmq
ExcludeArch: %{ix86}
- php-zstd
ExcludeArch: %{ix86}
- picard
ExcludeArch: ppc64
- picocli
ExclusiveArch: %{java_arches} noarch
- pigeonascent
ExcludeArch: ppc64le
ExcludeArch: s390x
- pilot-link
ExcludeArch: s390 s390x
- pinta
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- pioneer
ExclusiveArch: %{ix86} x86_64
- pl
ExcludeArch: %{ix86}
- planets
ExcludeArch: %{ix86}
- plantri
ExcludeArch: %{ix86}
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- plasma-disks
ExcludeArch: %{ix86}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plee-the-bear
ExcludeArch: %{power64}
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-build-api0
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-testing
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- plexus-xml
ExclusiveArch: %{java_arches} noarch
- pmix
ExcludeArch: %{ix86}
- pngcheck
ExcludeArch: %{ix86}
- podman
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- polymake
ExcludeArch: %{ix86}
- polyml
ExcludeArch: %{ix86}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- postgresql-pgpool-II
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- powerstat
ExclusiveArch: %{ix86} x86_64
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppl
ExcludeArch: %{ix86}
- pplite
ExcludeArch: %{ix86}
- prestopalette
ExcludeArch: i686
- printer-driver-brlaser
ExcludeArch: %{ix86}
- procdump
ExcludeArch: ppc64le
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prooftree
ExcludeArch: %{ix86}
- proxmark3
ExcludeArch: ppc64le s390x
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- proxysql
ExcludeArch: %{power64} s390x %{ix86}
- prrte
ExcludeArch: %{ix86}
- prusa-slicer
ExcludeArch: %{ix86}
- psblas3
ExcludeArch: %{ix86}
- pveclib
ExclusiveArch: ppc %{power64}
- pygrib
ExcludeArch: i686
ExcludeArch: armv7hl
- pygsl
ExcludeArch: %{ix86}
- pyosmium
ExcludeArch: %{ix86}
- pypy
ExcludeArch: %{ix86}
- pypy3.10
ExcludeArch: %{ix86}
- pypy3.9
ExcludeArch: %{ix86}
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ZEO
ExcludeArch: %{ix86}
- python-ZODB3
ExcludeArch: %{ix86}
- python-aioresponses
ExcludeArch: s390x
- python-annarchy
ExcludeArch: %{ix86} ppc64le
- python-ast-monitor
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- python-astroplan
ExcludeArch: %{ix86}
- python-astropy
ExcludeArch: %{ix86}
- python-astroscrappy
ExcludeArch: %{ix86}
- python-asyncmy
ExcludeArch: %{ix86}
- python-aws-sam-translator
ExcludeArch: %{ix86}
- python-awscrt
ExcludeArch: s390x
- python-bitstruct
ExcludeArch: s390x
- python-blosc2
ExcludeArch: %{ix86}
- python-bluepyopt
ExcludeArch: s390x %{ix86} %{power64}
- python-calcephpy
ExcludeArch: %{ix86}
- python-colorthief
ExcludeArch: %{ix86}
- python-compreffor
ExcludeArch: %{ix86}
- python-contextualbandits
ExcludeArch: %{ix86}
- python-cradox
ExcludeArch: i686 armv7hl
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-cvxopt
ExcludeArch: %{ix86}
- python-cyipopt
ExcludeArch: %{ix86}
- python-dask
ExcludeArch: %{ix86}
- python-databases
ExcludeArch: %{ix86}
- python-devicely
ExcludeArch: s390x
- python-dijitso
ExcludeArch: i686
- python-dipy
ExcludeArch: %{ix86} s390x
- python-distributed
ExcludeArch: %{ix86}
- python-ducc0
ExcludeArch: %{ix86}
- python-earthpy
ExcludeArch: %{ix86}
- python-eccodes
ExcludeArch: i686
ExcludeArch: armv7hl
- python-efel
ExcludeArch: s390x
- python-elephant
ExcludeArch: s390x
ExcludeArch: %{ix86}
- python-ephyviewer
ExcludeArch: s390x %{ix86}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x riscv64
- python-fastavro
ExcludeArch: %{arm32} %{ix86}
- python-folium
ExcludeArch: %{ix86}
- python-formulaic
ExcludeArch: %{ix86}
- python-fsleyes
ExcludeArch: %{ix86}
- python-fsleyes-props
ExcludeArch: %{ix86}
- python-fslpy
ExcludeArch: %{ix86}
- python-gbinder
ExcludeArch: %{ix86}
- python-giacpy
ExcludeArch: aarch64 %{power64} s390x
- python-graph-tool
ExcludeArch: %{ix86}
- python-hdfs
ExcludeArch: %{ix86}
- python-healpy
ExcludeArch: %{ix86} %{arm}
- python-heapdict
ExcludeArch: %{ix86}
- python-imagecodecs
ExcludeArch: %{ix86}
- python-img2pdf
ExcludeArch: s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jnius
ExclusiveArch: %{java_arches}
ExclusiveArch: %{java_arches}
- python-json-minify
ExcludeArch: %{ix86}
- python-jupymake
ExcludeArch: %{ix86}
- python-jupyter-c-kernel
ExcludeArch: %{ix86}
- python-jupyter-kernel-singular
ExcludeArch: %{ix86}
- python-jupyter-polymake
ExcludeArch: %{ix86}
- python-jupyter-sphinx
ExcludeArch: %{ix86}
- python-jupytext
ExcludeArch: s390x
- python-lazy-ops
ExcludeArch: %{ix86}
- python-lfpy
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{power64} %{ix86} armv7hl
- python-llama-cpp-python
ExclusiveArch: x86_64 aarch64
- python-logdetective
ExclusiveArch: x86_64 aarch64
- python-mapnik
ExcludeArch: ppc ppc64 s390 s390x
- python-missingno
ExcludeArch: %{ix86}
- python-mne
ExcludeArch: %{ix86}
- python-mne-bids
ExcludeArch: %{ix86}
- python-mplcairo
ExcludeArch: %{ix86}
- python-mplcursors
ExcludeArch: %{ix86}
- python-music21
ExcludeArch: %{ix86}
- python-nbdime
ExclusiveArch: x86_64 aarch64
- python-ndindex
ExcludeArch: %{ix86}
- python-neatdend
ExcludeArch: %{ix86}
- python-neo
ExcludeArch: s390x
- python-netpyne
ExcludeArch: %{ix86}
- python-neurom
ExcludeArch: %{ix86}
- python-neurotune
ExcludeArch: %{ix86}
- python-nifti-mrs
ExcludeArch: %{ix86}
- python-nilearn
ExcludeArch: %{ix86}
- python-nipy
ExcludeArch: %{ix86}
- python-octave-kernel
ExcludeArch: %{ix86}
- python-openpaperwork-core
ExcludeArch: %{ix86}
- python-openpaperwork-gtk
ExcludeArch: %{ix86}
- python-opentype-sanitizer
ExcludeArch: %{ix86}
- python-pandas
ExcludeArch: %{ix86}
- python-pandas-flavor
ExcludeArch: %{ix86}
- python-papermill
ExcludeArch: %{ix86}
- python-paperwork-backend
ExcludeArch: %{ix86}
- python-pari-jupyter
ExcludeArch: %{ix86}
- python-phyghtmap
ExcludeArch: %{ix86}
- python-pingouin
ExcludeArch: %{ix86}
- python-plotnine
ExcludeArch: %{ix86}
- python-pplpy
ExcludeArch: %{ix86}
- python-primecountpy
ExcludeArch: %{ix86}
- python-psycopg3
ExcludeArch: %{ix86}
- python-pyahocorasick
ExclusiveArch: x86_64 %{arm64} ppc64le riscv64
- python-pybbi
ExcludeArch: %{ix86}
- python-pybids
ExcludeArch: %{ix86}
- python-pybv
ExcludeArch: %{ix86}
- python-pyedflib
ExcludeArch: s390x
- python-pyfastnoisesimd
ExcludeArch: %{ix86}
- python-pyfiglet
ExcludeArch: %{ix86}
- python-pykdtree
ExcludeArch: %{ix86}
- python-pyliblzfse
ExcludeArch: s390x
- python-pymapvbvd
ExcludeArch: s390x
- python-pymatreader
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pynn
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- python-pyocr
ExcludeArch: %{ix86}
- python-pypet
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pyphi
ExcludeArch: %{ix86} s390x
- python-pypillowfight
ExcludeArch: %{ix86}
- python-pyqt6-webengine
ExclusiveArch: %{qt6_qtwebengine_arches}
- python-pyriemann
ExcludeArch: %{ix86}
- python-pyroaring
ExcludeArch: %{ix86}
- python-pyscf
ExcludeArch: %{power64}
- python-pyshtools
ExcludeArch: %{ix86}
- python-pysingular
ExcludeArch: %{ix86}
- python-pyswarms
ExcludeArch: %{ix86}
- python-pyswip
ExcludeArch: %{ix86}
- python-pytest-arraydiff
ExcludeArch: %{ix86}
- python-pytest-tornado
ExcludeArch: %{ix86}
- python-python-fcl
ExcludeArch: %{ix86}
- python-pyunicorn
ExcludeArch: %{ix86}
- python-pyvat
ExcludeArch: %{ix86}
- python-ratinabox
ExcludeArch: %{ix86}
- python-recordclass
ExcludeArch: %{ix86}
- python-reproject
ExcludeArch: %{ix86}
- python-ruffus
ExcludeArch: %{ix86}
- python-scikit-learn
ExcludeArch: %{ix86}
- python-scikit-misc
ExcludeArch: %{ix86}
- python-sgp4
ExcludeArch: %{ix86}
- python-simplebayes
ExcludeArch: %{ix86}
- python-sklearn-genetic-opt
ExcludeArch: %{ix86}
- python-statsmodels
ExcludeArch: %{ix86}
- python-steps
ExcludeArch: %{ix86}
- python-tables
ExcludeArch: %{ix86}
- python-tdlib
ExcludeArch: %{ix86}
- python-tensile
ExclusiveArch: x86_64
- python-tensordict
ExclusiveArch: x86_64 aarch64
- python-tkrzw
ExcludeArch: i686
- python-torch
ExclusiveArch: x86_64 aarch64
- python-torchaudio
ExclusiveArch: x86_64 aarch64
- python-torchdata
ExclusiveArch: x86_64 aarch64
- python-torchtext
ExclusiveArch: x86_64 aarch64
- python-torchvision
ExclusiveArch: x86_64 aarch64
- python-traitsui
ExcludeArch: ppc64le
- python-trimesh
ExcludeArch: %{ix86}
- python-uranium
ExcludeArch: %{ix86}
- python-willow
ExcludeArch: %{ix86}
- python-xattr
ExcludeArch: %{ix86}
- python-xbout
ExcludeArch: %{ix86}
- python-xmp-toolkit
ExcludeArch: %{ix86}
- python-zeep
ExcludeArch: s390x
- python-zict
ExcludeArch: %{ix86}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qalculate-qt
ExcludeArch: %{ix86}
- qat-zstd-plugin
ExclusiveArch: x86_64
- qatengine
ExclusiveArch: x86_64
- qatlib
ExcludeArch: %{arm} aarch64 %{power64} s390x i686
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64 riscv64
- qbittorrent
ExcludeArch: %{ix86}
- qbs
ExcludeArch: i686
- qcas
ExcludeArch: aarch64 %{power64} s390x
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdigidoc
ExcludeArch: %{ix86}
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qflipper
ExcludeArch: %{ix86}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmplay2
ExcludeArch: %{ix86}
- qoauth
ExcludeArch: ppc64
- qownnotes
ExcludeArch: %{ix86}
- qpdfview
ExcludeArch: s390x
- qperf
ExcludeArch: %{arm}
- qsopt-ex
ExcludeArch: %{ix86}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt6-qtquick3dphysics
ExclusiveArch: aarch64 i686 x86_64
- qt6-qtwebengine
ExclusiveArch: aarch64 x86_64
- qt6-qtwebview
ExclusiveArch: aarch64 x86_64
- qt6ct
ExcludeArch: s390x
- qtile
ExcludeArch: %{ix86}
- quantum-espresso
ExclusiveArch: x86_64 aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
ExcludeArch: %{arm32}
- rasdaemon
ExcludeArch: s390 s390x
- rccl
ExclusiveArch: x86_64
- rdma-core
ExcludeArch: %{arm}
- realtime-tests
ExcludeArch: %{arm}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64 s390x
- redeclipse
ExcludeArch: %{ix86}
- redict
ExcludeArch: %{ix86}
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- relaxng-datatype-java
ExclusiveArch: %{java_arches} noarch
- remake
ExcludeArch: %{ix86}
- renderdoc
ExclusiveArch: x86_64 aarch64
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- retroarch
ExcludeArch: %{ix86}
ExcludeArch: s390x
- retsnoop
ExclusiveArch: %{rust_arches}
ExcludeArch: armv7hl
- rhino
ExclusiveArch: %{java_arches} noarch
ExcludeArch: %{ix86}
- rhythmbox
ExcludeArch: s390 s390x
- rhythmbox-alternative-toolbar
ExcludeArch: s390 s390x
- rhythmbox-ampache
ExcludeArch: s390 s390x
- river
ExclusiveArch: %{zig_arches}
- rkcommon
ExclusiveArch: x86_64 aarch64
- rocalution
ExclusiveArch: x86_64
- rocblas
ExclusiveArch: x86_64
- rocclr
ExclusiveArch: x86_64
- rocfft
ExclusiveArch: x86_64
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-core
ExclusiveArch: x86_64
- rocm-rpm-macros
ExclusiveArch: x86_64
- rocm-runtime
ExclusiveArch: x86_64
- rocm-smi
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rocminfo
ExclusiveArch: x86_64
- rocprim
ExclusiveArch: x86_64
- rocrand
ExclusiveArch: x86_64
- rocsolver
ExclusiveArch: x86_64
- rocsparse
ExclusiveArch: x86_64
- rocthrust
ExclusiveArch: x86_64
- roctracer
ExclusiveArch: x86_64
- rpi-imager
ExcludeArch: s390x
- rpm-ostree
ExclusiveArch: %{rust_arches}
ExcludeArch: %{ix86}
- rpy
ExcludeArch: %{ix86}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt6_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubiks
ExcludeArch: %{ix86}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- ruff
ExcludeArch: %{ix86}
- ruff-lsp
ExcludeArch: %{ix86}
- runc
ExclusiveArch: %{golang_arches_future}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-bankstown-lv2
ExcludeArch: ppc64le s390x
- rust-below
ExcludeArch: %{arm32} %{ix86}
- rust-below-btrfs
ExcludeArch: %{arm32} %{ix86}
- rust-below-config
ExcludeArch: %{arm32} %{ix86}
- rust-below-dump
ExcludeArch: %{arm32} %{ix86}
- rust-below-ethtool
ExcludeArch: %{arm32} %{ix86}
- rust-below-model
ExcludeArch: %{arm32} %{ix86}
- rust-below-render
ExcludeArch: %{arm32} %{ix86}
- rust-below-store
ExcludeArch: %{arm32} %{ix86}
- rust-below-view
ExcludeArch: %{arm32} %{ix86}
- rust-cgroupfs
ExcludeArch: %{arm32} %{ix86}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-crypto-auditing-agent
ExcludeArch: i386 i686
- rust-ct-logs
ExcludeArch: ppc64le s390x
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExcludeArch: %{ix86}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lv2
ExcludeArch: ppc64le s390x
- rust-lv2-atom
ExcludeArch: ppc64le s390x
- rust-lv2-core
ExcludeArch: ppc64le s390x
- rust-lv2-midi
ExcludeArch: ppc64le s390x
- rust-lv2-state
ExcludeArch: ppc64le s390x
- rust-lv2-sys
ExcludeArch: ppc64le s390x
- rust-lv2-time
ExcludeArch: ppc64le s390x
- rust-lv2-units
ExcludeArch: ppc64le s390x
- rust-lv2-urid
ExcludeArch: ppc64le s390x
- rust-lv2-worker
ExcludeArch: ppc64le s390x
- rust-msru
ExclusiveArch: x86_64
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nu
ExcludeArch: %{ix86}
- rust-oci-spec
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-prefixdevname
ExcludeArch: %{ix86}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-probe
ExcludeArch: ppc64le s390x
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-resctrlfs
ExcludeArch: %{arm32} %{ix86}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scx_layered
ExcludeArch: %{ix86}
- rust-scx_rustland
ExcludeArch: %{ix86}
- rust-scx_rusty
ExcludeArch: %{ix86}
- rust-scx_utils
ExcludeArch: %{ix86}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExcludeArch: %{ix86} %{arm} s390x
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-snphost
ExclusiveArch: x86_64
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-tiny-dfr
ExcludeArch: %{ix86}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-vhost-device-scmi
ExcludeArch: s390x
- rust-vhost-device-sound
ExcludeArch: %{ix86} s390x
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-virtio-queue
ExcludeArch: i686
- rust-vm-memory
ExcludeArch: %{ix86}
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zincati
ExcludeArch: armv7hl i686
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- rustup
ExcludeArch: %{ix86}
- rutabaga-gfx-ffi
ExclusiveArch: x86_64 aarch64
- s2n-tls
ExcludeArch: %{ix86}
ExcludeArch: s390x
- s390utils
ExcludeArch: %{ix86}
- sac
ExclusiveArch: %{java_arches} noarch
- safeint
ExcludeArch: %{ix86}
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sandia-omega-h
ExcludeArch: %{ix86} s390x
- sat4j
ExclusiveArch: %{java_arches} noarch
- sayonara
ExcludeArch: %{ix86}
- sbcl
ExclusiveArch: %{ix86} x86_64 aarch64 %{power64}
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalasca
ExcludeArch: s390 s390x armv7hl i686
- scannotation
ExclusiveArch: %{java_arches} noarch
- scip
ExcludeArch: %{ix86}
- scorep
ExcludeArch: s390 s390x armv7hl i686
- scx_c_schedulers
ExcludeArch: %{ix86}
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- sdubby
ExclusiveArch: %{efi}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt6_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- sedutil
ExcludeArch: ppc ppc64 s390 s390x
- sentencepiece
ExcludeArch: s390x
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequeler
ExcludeArch: %{ix86}
- sequence-library
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- setserial
ExcludeArch: s390 s390x
- sfnt2woff-zopfli
ExcludeArch: %{ix86}
- sharedmeataxe
ExcludeArch: %{ix86}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
ExcludeArch: %{ix86}
ExcludeArch: %{arm}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigil
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- sigul
ExclusiveArch: x86_64
ExcludeArch: %{ix86}
- simdutf
ExcludeArch: s390 s390x
- singularity-ce
ExclusiveArch: %{go_arches}
ExcludeArch: %{ix86}
- siril
ExcludeArch: %{ix86}
- sirocco
ExcludeArch: %{ix86}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skanpage
ExclusiveArch: %{qt6_qtwebengine_arches}
- ski
ExcludeArch: %{ix86}
ExcludeArch: aarch64
- skopeo
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- skychart
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- slapi-nis
ExcludeArch: %{ix86}
- sleef
ExcludeArch: %{ix86}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slic3r
ExcludeArch: %{ix86}
ExcludeArch: ppc ppc64 s390 s390x %{ix86}
ExcludeArch: ppc ppc64 s390 s390x
- slick-greeter
ExcludeArch: %{ix86}
- slimdata
ExcludeArch: ppc64 ppc sparcv9 sparc64
- slirp4netns
ExclusiveArch: %{golang_arches_future}
- slurm
ExcludeArch: armv7hl
ExcludeArch: i686
- smartmontools
ExcludeArch: %{ix86}
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snapshot
ExcludeArch: %{ix86}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soplex
ExcludeArch: %{ix86}
- sound-juicer
ExcludeArch: s390 s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sourcextractor++
ExcludeArch: %{ix86}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- spasm
ExcludeArch: %{ix86}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- speed-dreams
ExcludeArch: s390x
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- spyder
ExcludeArch: %{ix86}
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
ExcludeArch: ppc64le
ExcludeArch: s390x
- squirrel
ExcludeArch: %{ix86}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- stats-collect
ExclusiveArch: %{ix86} x86_64 noarch
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- statserial
ExcludeArch: s390 s390x
- steinberg-bravura-fonts
ExcludeArch: %{ix86}
- steinberg-petaluma-fonts
ExcludeArch: %{ix86}
- stellarium
ExcludeArch: armv7hl
- stlsplit
ExcludeArch: %{ix86}
- stp
ExcludeArch: %{ix86}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
ExcludeArch: i686
- stratisd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- supertux
ExcludeArch: s390x
- suricata
ExcludeArch: ppc64le i686
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swiftlint
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- symfpu
ExcludeArch: %{ix86}
- symmetrica
ExcludeArch: %{ix86}
- sympol
ExcludeArch: %{ix86}
- sympow
ExcludeArch: %{ix86}
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tcmu-runner
ExcludeArch: i686 armv7hl
- tdlib
ExclusiveArch: x86_64 aarch64
- teem
ExcludeArch: %{ix86}
- templates_parser
ExclusiveArch: %GPRbuild_arches
- terminology
ExcludeArch: s390x
- terminus-fonts
ExcludeArch: %{grub2_exclude_arches}
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- texmaker
ExclusiveArch: %{qt6_qtwebengine_arches}
ExcludeArch: ppc64 ppc64le s390x
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird
ExcludeArch: armv7hl
ExcludeArch: s390x
- tiled
ExcludeArch: %{ix86}
- tilix
ExclusiveArch: %{ldc_arches}
- tinygo
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- tokodon
ExclusiveArch: %{qt6_qtwebengine_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-jakartaee-migration
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- trace-cmd
ExcludeArch: %{ix86} %{arm}
- trafficserver
ExcludeArch: %{arm} %{ix86} s390x
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- trojita
ExcludeArch: ppc64 ppc64le s390x
- trunk
ExcludeArch: %{ix86}
- truth
ExclusiveArch: %{java_arches} noarch
- tth
ExcludeArch: %{ix86}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- tuxguitar
ExcludeArch: s390 %{arm} %{ix86}
- tvtime
ExcludeArch: s390 s390x
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- tzdata
ExcludeArch: i686
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- uboot-tools
ExcludeArch: s390x
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- ugrep
ExcludeArch: %{ix86}
- umr
ExclusiveArch: x86_64 aarch64 ppc64le
- unetbootin
ExclusiveArch: %{ix86} x86_64
- unicorn
ExcludeArch: s390x
- unison
ExcludeArch: %{ix86}
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usbip
ExcludeArch: s390x
- usd
ExclusiveArch: aarch64 x86_64
- usnic-tools
ExcludeArch: %{arm}
- utop
ExcludeArch: %{ix86}
- uwsgi
ExcludeArch: %{ix86}
- v-hacd
ExcludeArch: %{ix86}
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- valkey
ExcludeArch: %{ix86}
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdo
ExcludeArch: %{ix86}
- vdr-tvscraper
ExcludeArch: armv7hl
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- vectorscan
ExcludeArch: s390x
- velocity
ExclusiveArch: %{java_arches} noarch
- viking
ExcludeArch: s390 s390x
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-perl-support
ExcludeArch: %{ix86}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- vinci
ExcludeArch: %{ix86}
- virt-p2v
ExclusiveArch: x86_64
- virt-top
ExcludeArch: %{ix86}
ExcludeArch: %{power64}
- virt-v2v
ExcludeArch: %{ix86}
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- visidata
ExcludeArch: %{ix86}
- visualboyadvance-m
ExcludeArch: %{ix86}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vkmark
ExcludeArch: s390x
- vmaf
ExclusiveArch: x86_64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- votca
ExcludeArch: %{ix86}
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- warzone2100
ExcludeArch: %{ix86}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- whatip
ExcludeArch: s390x
- whipper
ExcludeArch: s390x
- whisper-cpp
ExclusiveArch: x86_64 aarch64 ppc64le
- why3
ExclusiveArch: %{ocaml_native_compiler}
- widevine-installer
ExclusiveArch: aarch64
- wildcard
ExcludeArch: %{ix86} s390x
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- wine-mono
ExcludeArch: %{power64} s390x s390
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExcludeArch: ppc64 ppc64le
- wlmaker
ExcludeArch: %{ix86} ppc64le
- woff
ExcludeArch: %{ix86}
- workrave
ExcludeArch: %{ix86}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wult
ExclusiveArch: x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x2gokdrive
ExcludeArch: %{ix86}
- x86-simd-sort
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xapps
ExcludeArch: %{ix86}
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xdg-desktop-portal
ExcludeArch: %{ix86}
- xdg-desktop-portal-gnome
ExcludeArch: %{ix86}
- xdg-desktop-portal-gtk
ExcludeArch: %{ix86}
- xdg-desktop-portal-hyprland
ExcludeArch: %{ix86}
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xed
ExcludeArch: %{ix86}
- xen
ExclusiveArch: x86_64 aarch64
- xephem
ExcludeArch: %{ix86}
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xeus
ExcludeArch: %{ix86}
- xeus-zmq
ExcludeArch: %{ix86}
- xfce4-sensors-plugin
ExcludeArch: s390 s390x
- xgap
ExcludeArch: %{ix86}
- xiphos
ExcludeArch: ppc64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xmvn-generator
ExclusiveArch: %{java_arches}
- xnnpack
ExclusiveArch: x86_64 aarch64
- xnvme
ExcludeArch: %{ix86}
- xorg-x11-drv-amdgpu
ExcludeArch: s390 s390x
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-ati
ExcludeArch: s390 s390x
- xorg-x11-drv-fbdev
ExcludeArch: s390 s390x
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-nouveau
ExcludeArch: s390 s390x
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-qxl
ExcludeArch: s390 s390x
- xorg-x11-drv-synaptics
ExcludeArch: s390 s390x
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xreader
ExcludeArch: %{ix86}
- xrgears
ExcludeArch: %{ix86}
- xsensors
ExcludeArch: %{ix86}
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xtb
ExcludeArch: s390x
- xtensor-python
ExcludeArch: armv7hl ppc64le s390x
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches}
- yices
ExcludeArch: %{ix86}
- yle-dl
ExcludeArch: %{ix86}
- yosys
ExcludeArch: %{ix86}
ExcludeArch: s390x
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: aarch64 x86_64
- zenon
ExclusiveArch: %{ocaml_native_compiler}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zfs-fuse
ExcludeArch: s390 s390x aarch64
- zig
ExclusiveArch: %{zig_arches}
- zile
ExcludeArch: ppc64le
- zimpl
ExcludeArch: %{ix86}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
- zstr
ExcludeArch: %{ix86}
- zxcvbn-c
ExcludeArch: %{ix86}
- zycore-c
ExcludeArch: s390x
- zydis
ExcludeArch: s390x
2 days, 12 hours
Architecture specific change in rpms/kdump-utils.git
by githook-noreply@fedoraproject.org
The package rpms/kdump-utils.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kdump-utils.git/commit/?id=8ce7a6....
Change:
+%ifnarch s390x
Thanks.
Full change:
============
commit 8ce7a67359d656a29236bcb569105f6cd43cf6ad
Author: Coiby Xu <coxu(a)redhat.com>
Date: Fri Jun 21 14:50:56 2024 +0800
Initial import
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4c9e939
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/kdump-utils-1.0.42.tar.gz
diff --git a/kdump-utils.spec b/kdump-utils.spec
new file mode 100644
index 0000000..5103075
--- /dev/null
+++ b/kdump-utils.spec
@@ -0,0 +1,136 @@
+# kdump-utils has no debug source
+%global debug_package %{nil}
+Name: kdump-utils
+Version: 1.0.42
+Release: 10%{?dist}
+Summary: Kernel crash dump collection utilities
+
+License: GPL-2.0-only
+URL: https://github.com/rhkdump/kdump-utils
+Source0: https://github.com/rhkdump/kdump-utils/archive/v%{version}/%{name}-%{vers...
+
+%ifarch ppc64 ppc64le
+Requires(post): servicelog
+Recommends: keyutils
+%endif
+Requires(pre): coreutils
+Requires(pre): sed
+Requires: kexec-tools >= 2.0.28-8
+Requires: makedumpfile
+Requires: dracut >= 058
+Requires: dracut-network >= 058
+Requires: dracut-squash >= 058
+Requires: ethtool
+Requires: util-linux
+# Needed for UKI support
+Recommends: binutils
+Recommends: grubby
+Recommends: hostname
+BuildRequires: make
+BuildRequires: systemd-rpm-macros
+
+%ifnarch s390x
+Requires: systemd-udev%{?_isa}
+%endif
+%description
+kdump-utils is responsible for collecting the crash kernel dump. It builds and
+loads the kdump initramfs so when a kernel crashes, the system will boot the
+kdump kernel and initramfs to save the collected crash kernel dump to specified
+target.
+
+%prep
+%autosetup
+
+%install
+%make_install sbindir=%_sbindir
+
+
+%post
+# don't try to systemctl preset the kdump service for old kexec-tools
+#
+# when the old kexec-tools gets removed, this trigger will be excuted to
+# create a file. So later the posttrans scriptlet will know there is no need to
+# systemctl preset the kdump service.
+# This solution can be dropped in F41 when we assume no users will use old
+# version of kexec-tools.
+%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
+%triggerun -- kexec-tools
+touch %{kexec_tools_no_preset}
+
+touch /etc/kdump.conf
+
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh 2>/dev/null
+servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match='refcode="#MIGRATE" and serviceable=0' --type=EVENT --method=pairs_stdin >/dev/null
+%endif
+
+
+%postun
+%systemd_postun_with_restart kdump.service
+
+%preun
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
+%endif
+%systemd_preun kdump.service
+
+%posttrans
+# don't try to systemctl preset the kdump service for old kexec-tools
+if [[ -f %{kexec_tools_no_preset} ]]; then
+ # this if branch can be removed in F41 when we assume no users will use the old kexec-tools
+ rm %{kexec_tools_no_preset}
+else
+ # Initial installation
+ %systemd_post kdump.service
+fi
+# Try to reset kernel crashkernel value to new default value or set up
+# crasherkernel value for new install
+#
+# Note
+# 1. Skip ostree systems as they are not supported.
+# 2. For Fedora 36 and RHEL9, "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade;
+# For Fedora > 36, "[ $1 == 1 ]" only means install and "[ $1 == 2 ]" means upgrade
+if [ ! -f /run/ostree-booted ] && [ $1 == 1 -o $1 == 2 ]; then
+ kdumpctl _reset-crashkernel-after-update
+ :
+fi
+
+%files
+%ifarch ppc64 ppc64le
+%{_sbindir}/mkfadumprd
+%{_prefix}/lib/kernel/install.d/60-fadump.install
+%endif
+%{_bindir}/kdumpctl
+%{_sbindir}/mkdumprd
+%{_prefix}/lib/kdump
+%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
+%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
+%ifnarch s390x
+%{_udevrulesdir}
+%{_udevrulesdir}/../kdump-udev-throttler
+%endif
+%{_prefix}/lib/dracut/modules.d/*
+%dir %{_localstatedir}/crash
+%dir %{_sysconfdir}/kdump
+%dir %{_sysconfdir}/kdump/pre.d
+%dir %{_sysconfdir}/kdump/post.d
+%dir %{_sharedstatedir}/kdump
+%{_mandir}/man8/kdumpctl.8*
+%{_mandir}/man8/mkdumprd.8*
+%{_mandir}/man5/kdump.conf.5*
+%{_unitdir}/kdump.service
+%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
+%{_prefix}/lib/kernel/install.d/60-kdump.install
+%{_prefix}/lib/kernel/install.d/92-crashkernel.install
+%license COPYING
+%doc kexec-kdump-howto.txt
+%doc early-kdump-howto.txt
+%doc fadump-howto.txt
+%doc kdump-in-cluster-environment.txt
+%doc live-image-kdump-howto.txt
+%doc crashkernel-howto.txt
+%doc supported-kdump-targets.txt
+
+%changelog
+* Tue Oct 24 2023 Coiby <coxu(a)redhat.com> - 1.0.42-10
+- split from kexec-tools
diff --git a/sources b/sources
new file mode 100644
index 0000000..df9256b
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (kdump-utils-1.0.42.tar.gz) = 2d8717a010bfbffd4410ef57ade1402316cda07faa1063631b8665ac273fac618bff0afd9bdc02292c859d956790e06a51d81b141db158957ef97eb8408111c4
2 days, 16 hours
Architecture specific change in rpms/kexec-tools.git
by githook-noreply@fedoraproject.org
The package rpms/kexec-tools.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/kexec-tools.git/commit/?id=de0600...
https://src.fedoraproject.org/cgit/rpms/kexec-tools.git/commit/?id=28ced7...
https://src.fedoraproject.org/cgit/rpms/kexec-tools.git/commit/?id=fe372a...
https://src.fedoraproject.org/cgit/rpms/kexec-tools.git/commit/?id=372b4c...
https://src.fedoraproject.org/cgit/rpms/kexec-tools.git/commit/?id=ec3bcc....
Change:
-%ifnarch s390x
-%ifnarch s390x
-%ifarch ppc64 ppc64le
-%ifarch ppc64 ppc64le
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
Thanks.
Full change:
============
commit de0600ec045a8d106faf9efde2713bdf1a5a16e7
Author: Coiby Xu <coxu(a)redhat.com>
Date: Mon Jun 24 09:30:19 2024 +0800
rm makedumpfile.spec kdump-utils.spec
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kdump-utils.spec b/kdump-utils.spec
deleted file mode 100644
index 5103075..0000000
--- a/kdump-utils.spec
+++ /dev/null
@@ -1,136 +0,0 @@
-# kdump-utils has no debug source
-%global debug_package %{nil}
-Name: kdump-utils
-Version: 1.0.42
-Release: 10%{?dist}
-Summary: Kernel crash dump collection utilities
-
-License: GPL-2.0-only
-URL: https://github.com/rhkdump/kdump-utils
-Source0: https://github.com/rhkdump/kdump-utils/archive/v%{version}/%{name}-%{vers...
-
-%ifarch ppc64 ppc64le
-Requires(post): servicelog
-Recommends: keyutils
-%endif
-Requires(pre): coreutils
-Requires(pre): sed
-Requires: kexec-tools >= 2.0.28-8
-Requires: makedumpfile
-Requires: dracut >= 058
-Requires: dracut-network >= 058
-Requires: dracut-squash >= 058
-Requires: ethtool
-Requires: util-linux
-# Needed for UKI support
-Recommends: binutils
-Recommends: grubby
-Recommends: hostname
-BuildRequires: make
-BuildRequires: systemd-rpm-macros
-
-%ifnarch s390x
-Requires: systemd-udev%{?_isa}
-%endif
-%description
-kdump-utils is responsible for collecting the crash kernel dump. It builds and
-loads the kdump initramfs so when a kernel crashes, the system will boot the
-kdump kernel and initramfs to save the collected crash kernel dump to specified
-target.
-
-%prep
-%autosetup
-
-%install
-%make_install sbindir=%_sbindir
-
-
-%post
-# don't try to systemctl preset the kdump service for old kexec-tools
-#
-# when the old kexec-tools gets removed, this trigger will be excuted to
-# create a file. So later the posttrans scriptlet will know there is no need to
-# systemctl preset the kdump service.
-# This solution can be dropped in F41 when we assume no users will use old
-# version of kexec-tools.
-%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
-%triggerun -- kexec-tools
-touch %{kexec_tools_no_preset}
-
-touch /etc/kdump.conf
-
-%ifarch ppc64 ppc64le
-servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh 2>/dev/null
-servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match='refcode="#MIGRATE" and serviceable=0' --type=EVENT --method=pairs_stdin >/dev/null
-%endif
-
-
-%postun
-%systemd_postun_with_restart kdump.service
-
-%preun
-%ifarch ppc64 ppc64le
-servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
-%endif
-%systemd_preun kdump.service
-
-%posttrans
-# don't try to systemctl preset the kdump service for old kexec-tools
-if [[ -f %{kexec_tools_no_preset} ]]; then
- # this if branch can be removed in F41 when we assume no users will use the old kexec-tools
- rm %{kexec_tools_no_preset}
-else
- # Initial installation
- %systemd_post kdump.service
-fi
-# Try to reset kernel crashkernel value to new default value or set up
-# crasherkernel value for new install
-#
-# Note
-# 1. Skip ostree systems as they are not supported.
-# 2. For Fedora 36 and RHEL9, "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade;
-# For Fedora > 36, "[ $1 == 1 ]" only means install and "[ $1 == 2 ]" means upgrade
-if [ ! -f /run/ostree-booted ] && [ $1 == 1 -o $1 == 2 ]; then
- kdumpctl _reset-crashkernel-after-update
- :
-fi
-
-%files
-%ifarch ppc64 ppc64le
-%{_sbindir}/mkfadumprd
-%{_prefix}/lib/kernel/install.d/60-fadump.install
-%endif
-%{_bindir}/kdumpctl
-%{_sbindir}/mkdumprd
-%{_prefix}/lib/kdump
-%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
-%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
-%ifnarch s390x
-%{_udevrulesdir}
-%{_udevrulesdir}/../kdump-udev-throttler
-%endif
-%{_prefix}/lib/dracut/modules.d/*
-%dir %{_localstatedir}/crash
-%dir %{_sysconfdir}/kdump
-%dir %{_sysconfdir}/kdump/pre.d
-%dir %{_sysconfdir}/kdump/post.d
-%dir %{_sharedstatedir}/kdump
-%{_mandir}/man8/kdumpctl.8*
-%{_mandir}/man8/mkdumprd.8*
-%{_mandir}/man5/kdump.conf.5*
-%{_unitdir}/kdump.service
-%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
-%{_prefix}/lib/kernel/install.d/60-kdump.install
-%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-%license COPYING
-%doc kexec-kdump-howto.txt
-%doc early-kdump-howto.txt
-%doc fadump-howto.txt
-%doc kdump-in-cluster-environment.txt
-%doc live-image-kdump-howto.txt
-%doc crashkernel-howto.txt
-%doc supported-kdump-targets.txt
-
-%changelog
-* Tue Oct 24 2023 Coiby <coxu(a)redhat.com> - 1.0.42-10
-- split from kexec-tools
diff --git a/makedumpfile.spec b/makedumpfile.spec
deleted file mode 100644
index 144d6e2..0000000
--- a/makedumpfile.spec
+++ /dev/null
@@ -1,62 +0,0 @@
-%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
-%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
-Name: makedumpfile
-Version: 1.7.5
-Summary: make a small dumpfile of kdump
-Release: 10%{?dist}
-
-License: GPL-2.0-only
-URL: https://github.com/makedumpfile/makedumpfile
-Source0: https://github.com/makedumpfile/makedumpfile/archive/%{version}/%{name}-%...
-Source1: https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_sh...
-
-Conflicts: kexec-tools < 2.0.28-5
-BuildRequires: make
-BuildRequires: gcc
-BuildRequires: zlib-devel
-BuildRequires: elfutils-devel
-BuildRequires: glib2-devel
-BuildRequires: bzip2-devel
-BuildRequires: ncurses-devel
-BuildRequires: bison
-BuildRequires: flex
-BuildRequires: lzo-devel
-BuildRequires: snappy-devel
-BuildRequires: libzstd-devel
-BuildRequires: pkgconfig
-BuildRequires: intltool
-BuildRequires: gettext
-
-%description
-makedumpfile is a tool to compress and filter out unneeded data from kernel
-dumps to reduce its file size. It is typically used with the kdump mechanism.
-
-%prep
-%autosetup -p1
-tar -z -x -v -f %{SOURCE1}
-sed -r -i 's|/usr/sbin|%_sbindir|g' Makefile
-
-%build
-%make_build LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
-%make_build -C eppic-%{eppic_ver}/libeppic
-%make_build LDFLAGS="$LDFLAGS -Ieppic-%{eppic_ver}/libeppic -Leppic-%{eppic_ver}/libeppic" eppic_makedumpfile.so
-
-%install
-%make_install
-install -m 644 -D makedumpfile.conf %{buildroot}/%{_sysconfdir}/makedumpfile.conf.sample
-rm %{buildroot}/%{_sbindir}/makedumpfile-R.pl
-
-install -m 755 -D eppic_makedumpfile.so %{buildroot}/%{_libdir}/eppic_makedumpfile.so
-
-%files
-%{_sbindir}/makedumpfile
-%{_mandir}/man5/makedumpfile.conf.5*
-%{_mandir}/man8/makedumpfile.8*
-%{_sysconfdir}/makedumpfile.conf.sample
-%{_libdir}/eppic_makedumpfile.so
-%{_datadir}/makedumpfile/
-%license COPYING
-
-%changelog
-* Thu Nov 23 2023 Coiby Xu <coxu(a)redhat.com> - 1.7.5-1
-- split from kexec-tools
commit 318c6e61a66ee93a8586276418bca480e3902f9b
Author: Coiby Xu <coxu(a)redhat.com>
Date: Fri Jun 21 13:44:35 2024 +0800
kdump-utils: no debuginfo for this package
Fix the follow mockbuild error,
Processing files: kdump-utils-debugsource-1.0.42-10.fc41.x86_64
RPM build errors:
error: Empty %files file /builddir/build/BUILD/kdump-utils-1.0.42-build/kdump-utils-1.0.42/debugsourcefiles.list
Empty %files file /builddir/build/BUILD/kdump-utils-1.0.42-build/kdump-utils-1.0.42/debugsourcefiles.list
Suggested-by: Lichen Liu <lichliu(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Lichen Liu <lichliu(a)redhat.com>
diff --git a/kdump-utils.spec b/kdump-utils.spec
index b718a70..5103075 100644
--- a/kdump-utils.spec
+++ b/kdump-utils.spec
@@ -1,3 +1,5 @@
+# kdump-utils has no debug source
+%global debug_package %{nil}
Name: kdump-utils
Version: 1.0.42
Release: 10%{?dist}
commit 8a8882c3b81a9590d54b26e6c680935789200663
Author: Coiby Xu <coxu(a)redhat.com>
Date: Fri Jun 21 13:40:56 2024 +0800
kdump-utils: Remove LGPL-2.1-or-later
As suggested by Richard [1],
> Given the trivial nature of these files I think `LGPL-2.1-or-later` can be omitted from the license tag.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2239566#c7
Suggested-by: Richard Fontana <rfontana(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Lichen Liu <lichliu(a)redhat.com>
diff --git a/kdump-utils.spec b/kdump-utils.spec
index cce671e..b718a70 100644
--- a/kdump-utils.spec
+++ b/kdump-utils.spec
@@ -3,7 +3,7 @@ Version: 1.0.42
Release: 10%{?dist}
Summary: Kernel crash dump collection utilities
-License: GPL-2.0-only AND LGPL-2.1-or-later
+License: GPL-2.0-only
URL: https://github.com/rhkdump/kdump-utils
Source0: https://github.com/rhkdump/kdump-utils/archive/v%{version}/%{name}-%{vers...
commit 28ced791b470d06edce85bcf81d3a9f1f19bb65d
Author: Coiby Xu <coxu(a)redhat.com>
Date: Thu Apr 25 13:18:23 2024 +0800
Split out kdump-utils and makedumpfile
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kdump-utils.spec b/kdump-utils.spec
new file mode 100644
index 0000000..cce671e
--- /dev/null
+++ b/kdump-utils.spec
@@ -0,0 +1,134 @@
+Name: kdump-utils
+Version: 1.0.42
+Release: 10%{?dist}
+Summary: Kernel crash dump collection utilities
+
+License: GPL-2.0-only AND LGPL-2.1-or-later
+URL: https://github.com/rhkdump/kdump-utils
+Source0: https://github.com/rhkdump/kdump-utils/archive/v%{version}/%{name}-%{vers...
+
+%ifarch ppc64 ppc64le
+Requires(post): servicelog
+Recommends: keyutils
+%endif
+Requires(pre): coreutils
+Requires(pre): sed
+Requires: kexec-tools >= 2.0.28-8
+Requires: makedumpfile
+Requires: dracut >= 058
+Requires: dracut-network >= 058
+Requires: dracut-squash >= 058
+Requires: ethtool
+Requires: util-linux
+# Needed for UKI support
+Recommends: binutils
+Recommends: grubby
+Recommends: hostname
+BuildRequires: make
+BuildRequires: systemd-rpm-macros
+
+%ifnarch s390x
+Requires: systemd-udev%{?_isa}
+%endif
+%description
+kdump-utils is responsible for collecting the crash kernel dump. It builds and
+loads the kdump initramfs so when a kernel crashes, the system will boot the
+kdump kernel and initramfs to save the collected crash kernel dump to specified
+target.
+
+%prep
+%autosetup
+
+%install
+%make_install sbindir=%_sbindir
+
+
+%post
+# don't try to systemctl preset the kdump service for old kexec-tools
+#
+# when the old kexec-tools gets removed, this trigger will be excuted to
+# create a file. So later the posttrans scriptlet will know there is no need to
+# systemctl preset the kdump service.
+# This solution can be dropped in F41 when we assume no users will use old
+# version of kexec-tools.
+%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
+%triggerun -- kexec-tools
+touch %{kexec_tools_no_preset}
+
+touch /etc/kdump.conf
+
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh 2>/dev/null
+servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match='refcode="#MIGRATE" and serviceable=0' --type=EVENT --method=pairs_stdin >/dev/null
+%endif
+
+
+%postun
+%systemd_postun_with_restart kdump.service
+
+%preun
+%ifarch ppc64 ppc64le
+servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
+%endif
+%systemd_preun kdump.service
+
+%posttrans
+# don't try to systemctl preset the kdump service for old kexec-tools
+if [[ -f %{kexec_tools_no_preset} ]]; then
+ # this if branch can be removed in F41 when we assume no users will use the old kexec-tools
+ rm %{kexec_tools_no_preset}
+else
+ # Initial installation
+ %systemd_post kdump.service
+fi
+# Try to reset kernel crashkernel value to new default value or set up
+# crasherkernel value for new install
+#
+# Note
+# 1. Skip ostree systems as they are not supported.
+# 2. For Fedora 36 and RHEL9, "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade;
+# For Fedora > 36, "[ $1 == 1 ]" only means install and "[ $1 == 2 ]" means upgrade
+if [ ! -f /run/ostree-booted ] && [ $1 == 1 -o $1 == 2 ]; then
+ kdumpctl _reset-crashkernel-after-update
+ :
+fi
+
+%files
+%ifarch ppc64 ppc64le
+%{_sbindir}/mkfadumprd
+%{_prefix}/lib/kernel/install.d/60-fadump.install
+%endif
+%{_bindir}/kdumpctl
+%{_sbindir}/mkdumprd
+%{_prefix}/lib/kdump
+%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
+%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
+%ifnarch s390x
+%{_udevrulesdir}
+%{_udevrulesdir}/../kdump-udev-throttler
+%endif
+%{_prefix}/lib/dracut/modules.d/*
+%dir %{_localstatedir}/crash
+%dir %{_sysconfdir}/kdump
+%dir %{_sysconfdir}/kdump/pre.d
+%dir %{_sysconfdir}/kdump/post.d
+%dir %{_sharedstatedir}/kdump
+%{_mandir}/man8/kdumpctl.8*
+%{_mandir}/man8/mkdumprd.8*
+%{_mandir}/man5/kdump.conf.5*
+%{_unitdir}/kdump.service
+%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
+%{_prefix}/lib/kernel/install.d/60-kdump.install
+%{_prefix}/lib/kernel/install.d/92-crashkernel.install
+%license COPYING
+%doc kexec-kdump-howto.txt
+%doc early-kdump-howto.txt
+%doc fadump-howto.txt
+%doc kdump-in-cluster-environment.txt
+%doc live-image-kdump-howto.txt
+%doc crashkernel-howto.txt
+%doc supported-kdump-targets.txt
+
+%changelog
+* Tue Oct 24 2023 Coiby <coxu(a)redhat.com> - 1.0.42-10
+- split from kexec-tools
diff --git a/kexec-tools.spec b/kexec-tools.spec
index d5458bc..f880cfe 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -1,21 +1,12 @@
-%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
-%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
-%global mkdf_ver 1.7.5
-%global kdump_utils_ver 1.0.42
-%global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
-
Name: kexec-tools
Version: 2.0.28
-Release: 9%{?dist}
+Release: 10%{?dist}
URL: https://kernel.org/pub/linux/utils/kernel/kexec
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.xz
Recommends: kdump-utils
-Source1: https://github.com/rhkdump/kdump-utils/archive/v%{kdump_utils_ver}/kdump-...
-Source9: https://github.com/makedumpfile/makedumpfile/archive/%{mkdf_ver}/makedump...
-Source19: https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_sh...
BuildRequires: automake
BuildRequires: autoconf
@@ -61,79 +52,10 @@ normal or a panic reboot. This package contains the /sbin/kexec
binary and ancillary utilities that together form the userspace
component of the kernel's kexec feature.
-
-%package -n makedumpfile
-Version: %{mkdf_ver}
-Summary: make a small dumpfile of kdump
-License: GPL-2.0-only
-URL: https://github.com/makedumpfile/makedumpfile
-
-Conflicts: kexec-tools < 2.0.28-5
-BuildRequires: make
-BuildRequires: gcc
-BuildRequires: zlib-devel
-BuildRequires: elfutils-devel
-BuildRequires: glib2-devel
-BuildRequires: bzip2-devel
-BuildRequires: ncurses-devel
-BuildRequires: bison
-BuildRequires: flex
-BuildRequires: lzo-devel
-BuildRequires: snappy-devel
-BuildRequires: libzstd-devel
-BuildRequires: pkgconfig
-BuildRequires: intltool
-BuildRequires: gettext
-
-
-%description -n makedumpfile
-makedumpfile is a tool to compress and filter out unneeded data from kernel
-dumps to reduce its file size. It is typically used with the kdump mechanism.
-
-
-%package -n kdump-utils
-Version: 1.0.42
-License: GPL-2.0-only AND LGPL-2.1-or-later
-URL: https://github.com/rhkdump/kdump-utils
-Summary: Kernel crash dump collection utilities
-
-%ifarch ppc64 ppc64le
-Requires(post): servicelog
-Recommends: keyutils
-%endif
-Requires(pre): coreutils
-Requires(pre): sed
-Requires: kexec-tools >= 2.0.28-8
-Requires: makedumpfile
-Requires: dracut >= 058
-Requires: dracut-network >= 058
-Requires: dracut-squash >= 058
-Requires: ethtool
-Requires: util-linux
-# Needed for UKI support
-Recommends: binutils
-Recommends: grubby
-Recommends: hostname
-BuildRequires: systemd-rpm-macros
-
-%ifnarch s390x
-Requires: systemd-udev%{?_isa}
-%endif
-%description -n kdump-utils
-kdump-utils is responsible for collecting the crash kernel dump. It builds and
-loads the kdump initramfs so when a kernel crashes, the system will boot the
-kdump kernel and initramfs to save the collected crash kernel dump to specified
-target.
-
-
%prep
%setup -q
-tar -z -x -v -f %{SOURCE1}
-
mkdir -p -m755 kcp
-tar -z -x -v -f %{SOURCE9}
-tar -z -x -v -f %{SOURCE19}
%patch 101 -p1
%patch 601 -p1
@@ -142,8 +64,6 @@ tar -z -x -v -f %{SOURCE19}
%define archdef ARCH=ppc
%endif
-sed -r -i 's|/usr/sbin|%_sbindir|g' makedumpfile-*/Makefile
-
%build
autoreconf
%configure \
@@ -159,80 +79,10 @@ autoreconf
rm -f kexec-tools.spec.in
%make_build
-# makedumpfile
-make -C eppic-%{eppic_ver}/libeppic
-make -C makedumpfile-%{mkdf_ver} LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
-make -C makedumpfile-%{mkdf_ver} LDFLAGS="$LDFLAGS -I../eppic-%{eppic_ver}/libeppic -L../eppic-%{eppic_ver}/libeppic" eppic_makedumpfile.so
-
-
%install
%make_install
rm -f %{buildroot}/%{_libdir}/kexec-tools/kexec_test
-# kdump-utils
-%define kdump_utils_dir kdump-utils-%{kdump_utils_ver}
-%make_install -C %kdump_utils_dir sbindir=%_sbindir
-
-# makedumpfile
-
-make DESTDIR=%{buildroot} -C makedumpfile-%{mkdf_ver} install
-install -m 644 -D makedumpfile-%{mkdf_ver}/makedumpfile.conf %{buildroot}/%{_sysconfdir}/makedumpfile.conf.sample
-rm %{buildroot}/%{_sbindir}/makedumpfile-R.pl
-
-install -m 755 -D makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so %{buildroot}/%{_libdir}/eppic_makedumpfile.so
-
-%post -n kdump-utils
-# don't try to systemctl preset the kdump service for old kexec-tools
-#
-# when the old kexec-tools gets removed, this trigger will be excuted to
-# create a file. So later the posttrans scriptlet will know there is no need to
-# systemctl preset the kdump service.
-# This solution can be dropped in F41 when we assume no users will use old
-# version of kexec-tools.
-%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
-%triggerun -- kexec-tools
-touch %{kexec_tools_no_preset}
-
-touch /etc/kdump.conf
-
-%ifarch ppc64 ppc64le
-servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh 2>/dev/null
-servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match='refcode="#MIGRATE" and serviceable=0' --type=EVENT --method=pairs_stdin >/dev/null
-%endif
-:
-
-
-%postun -n kdump-utils
-%systemd_postun_with_restart kdump.service
-
-%preun -n kdump-utils
-%ifarch ppc64 ppc64le
-servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
-%endif
-%systemd_preun kdump.service
-
-
-%posttrans -n kdump-utils
-# don't try to systemctl preset the kdump service for old kexec-tools
-if [[ -f %{kexec_tools_no_preset} ]]; then
- # this if branch can be removed in F41 when we assume no users will use the old kexec-tools
- rm %{kexec_tools_no_preset}
-else
- # Initial installation
- %systemd_post kdump.service
-fi
-# Try to reset kernel crashkernel value to new default value or set up
-# crasherkernel value for new install
-#
-# Note
-# 1. Skip ostree systems as they are not supported.
-# 2. For Fedora 36 and RHEL9, "[ $1 == 1 ]" in posttrans scriptlet means both install and upgrade;
-# For Fedora > 36, "[ $1 == 1 ]" only means install and "[ $1 == 2 ]" means upgrade
-if [ ! -f /run/ostree-booted ] && [ $1 == 1 -o $1 == 2 ]; then
- kdumpctl _reset-crashkernel-after-update
- :
-fi
-
%files
%{_sbindir}/kexec
@@ -243,55 +93,10 @@ fi
%license COPYING
%doc TODO
-%files -n kdump-utils
-%ifarch ppc64 ppc64le
-%{_sbindir}/mkfadumprd
-%{_prefix}/lib/kernel/install.d/60-fadump.install
-%endif
-%{_bindir}/kdumpctl
-%{_sbindir}/mkdumprd
-%{_sbindir}/vmcore-dmesg
-%{_prefix}/lib/kdump
-%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
-%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
-%ifnarch s390x
-%{_udevrulesdir}
-%{_udevrulesdir}/../kdump-udev-throttler
-%endif
-%{_prefix}/lib/dracut/modules.d/*
-%dir %{_localstatedir}/crash
-%dir %{_sysconfdir}/kdump
-%dir %{_sysconfdir}/kdump/pre.d
-%dir %{_sysconfdir}/kdump/post.d
-%dir %{_sharedstatedir}/kdump
-%{_mandir}/man8/kdumpctl.8*
-%{_mandir}/man8/mkdumprd.8*
-%{_mandir}/man5/kdump.conf.5*
-%{_unitdir}/kdump.service
-%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
-%{_prefix}/lib/kernel/install.d/60-kdump.install
-%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-%license %kdump_utils_dir/COPYING
-%doc %kdump_utils_dir/kexec-kdump-howto.txt
-%doc %kdump_utils_dir/early-kdump-howto.txt
-%doc %kdump_utils_dir/fadump-howto.txt
-%doc %kdump_utils_dir/kdump-in-cluster-environment.txt
-%doc %kdump_utils_dir/live-image-kdump-howto.txt
-%doc %kdump_utils_dir/crashkernel-howto.txt
-%doc %kdump_utils_dir/supported-kdump-targets.txt
-
-
-%files -n makedumpfile
-%license makedumpfile-%{mkdf_ver}/COPYING
-%{_sbindir}/makedumpfile
-%{_mandir}/man5/makedumpfile.conf.5.*
-%{_mandir}/man8/makedumpfile.8.*
-%{_sysconfdir}/makedumpfile.conf.sample
-%{_libdir}/eppic_makedumpfile.so
-%{_datadir}/makedumpfile/
-
-
%changelog
+* Thu Apr 25 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-10
+- Split out kdump-utils and makedumpfile
+
* Thu Apr 25 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-9
- Update to makedumpfile-1.7.5
diff --git a/makedumpfile.spec b/makedumpfile.spec
new file mode 100644
index 0000000..144d6e2
--- /dev/null
+++ b/makedumpfile.spec
@@ -0,0 +1,62 @@
+%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
+%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
+Name: makedumpfile
+Version: 1.7.5
+Summary: make a small dumpfile of kdump
+Release: 10%{?dist}
+
+License: GPL-2.0-only
+URL: https://github.com/makedumpfile/makedumpfile
+Source0: https://github.com/makedumpfile/makedumpfile/archive/%{version}/%{name}-%...
+Source1: https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_sh...
+
+Conflicts: kexec-tools < 2.0.28-5
+BuildRequires: make
+BuildRequires: gcc
+BuildRequires: zlib-devel
+BuildRequires: elfutils-devel
+BuildRequires: glib2-devel
+BuildRequires: bzip2-devel
+BuildRequires: ncurses-devel
+BuildRequires: bison
+BuildRequires: flex
+BuildRequires: lzo-devel
+BuildRequires: snappy-devel
+BuildRequires: libzstd-devel
+BuildRequires: pkgconfig
+BuildRequires: intltool
+BuildRequires: gettext
+
+%description
+makedumpfile is a tool to compress and filter out unneeded data from kernel
+dumps to reduce its file size. It is typically used with the kdump mechanism.
+
+%prep
+%autosetup -p1
+tar -z -x -v -f %{SOURCE1}
+sed -r -i 's|/usr/sbin|%_sbindir|g' Makefile
+
+%build
+%make_build LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
+%make_build -C eppic-%{eppic_ver}/libeppic
+%make_build LDFLAGS="$LDFLAGS -Ieppic-%{eppic_ver}/libeppic -Leppic-%{eppic_ver}/libeppic" eppic_makedumpfile.so
+
+%install
+%make_install
+install -m 644 -D makedumpfile.conf %{buildroot}/%{_sysconfdir}/makedumpfile.conf.sample
+rm %{buildroot}/%{_sbindir}/makedumpfile-R.pl
+
+install -m 755 -D eppic_makedumpfile.so %{buildroot}/%{_libdir}/eppic_makedumpfile.so
+
+%files
+%{_sbindir}/makedumpfile
+%{_mandir}/man5/makedumpfile.conf.5*
+%{_mandir}/man8/makedumpfile.8*
+%{_sysconfdir}/makedumpfile.conf.sample
+%{_libdir}/eppic_makedumpfile.so
+%{_datadir}/makedumpfile/
+%license COPYING
+
+%changelog
+* Thu Nov 23 2023 Coiby Xu <coxu(a)redhat.com> - 1.7.5-1
+- split from kexec-tools
commit 6902d149d3f795658cfbd614e6caa0bc788d2f4b
Author: Coiby Xu <coxu(a)redhat.com>
Date: Thu Apr 25 12:45:05 2024 +0800
Update to makedumpfile-1.7.5
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch b/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
deleted file mode 100644
index 1ee904a..0000000
--- a/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From: Coiby Xu <coxu(a)redhat.com>
-
-Subject: [PATCH] ppc64: get vmalloc start address from vmcoreinfo
-
-Bugzilla: https://bugzilla.redhat.com/2269991
-
-commit 94241fd2feed059227a243618f2acc6aabf366e8
-Author: Aditya Gupta <adityag(a)linux.ibm.com>
-Date: Sat Feb 24 00:33:42 2024 +0530
-
- [PATCH] ppc64: get vmalloc start address from vmcoreinfo
-
- Below error was noticed when running makedumpfile on linux-next kernel
- crash (linux-next tag next-20240121):
-
- Checking for memory holes : [100.0 %] | readpage_elf: Attempt to read non-existent page at 0xc000000000000.
- [ 17.551718] kdump.sh[404]: readmem: type_addr: 0, addr:c00c000000000000, size:16384
- [ 17.551793] kdump.sh[404]: __exclude_unnecessary_pages: Can't read the buffer of struct page.
- [ 17.551864] kdump.sh[404]: create_2nd_bitmap: Can't exclude unnecessary pages.
- [ 17.562632] kdump.sh[404]: The kernel version is not supported.
- [ 17.562708] kdump.sh[404]: The makedumpfile operation may be incomplete.
- [ 17.562773] kdump.sh[404]: makedumpfile Failed.
- [ 17.564335] kdump[406]: saving vmcore failed, _exitcode:1
-
- Above error was due to 'vmap_area_list' and 'vmlist' symbols missing
- from the vmcore. 'vmap_area_list' was removed in the linux kernel
- 6.9-rc1 by the commit below:
-
- commit 55c49fee57af99f3c663e69dedc5b85e691bbe50
- mm/vmalloc: remove vmap_area_list
-
- Subsequently the commit also introduced 'VMALLOC_START' in vmcoreinfo to
- get base address of vmalloc area, instead of depending on 'vmap_area_list'
-
- Hence if 'VMALLOC_START' symbol is there in vmcoreinfo:
- 1. Set vmalloc_start based on 'VMALLOC_START'
- 2. Don't error if vmap_area_list/vmlist are not defined
-
- Reported-by: Sachin Sant <sachinp(a)linux.ibm.com>
- Signed-off-by: Aditya Gupta <adityag(a)linux.ibm.com>
-
-Signed-off-by: Coiby Xu <coxu(a)redhat.com>
-
-diff --git a/makedumpfile-1.7.4/arch/ppc64.c b/makedumpfile-1.7.4/arch/ppc64.c
-index 3b4f91981f71d035b94282f6c7e33323a4e4c1fd..a54f9a04db7f26eac2f1bd065b134a7e2fdaeb67 100644
---- a/makedumpfile-1.7.4/arch/ppc64.c
-+++ b/makedumpfile-1.7.4/arch/ppc64.c
-@@ -568,7 +568,9 @@ get_machdep_info_ppc64(void)
- /*
- * Get vmalloc_start value from either vmap_area_list or vmlist.
- */
-- if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
-+ if (NUMBER(vmalloc_start) != NOT_FOUND_NUMBER) {
-+ vmalloc_start = NUMBER(vmalloc_start);
-+ } else if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
- && (OFFSET(vmap_area.va_start) != NOT_FOUND_STRUCTURE)
- && (OFFSET(vmap_area.list) != NOT_FOUND_STRUCTURE)) {
- if (!readmem(VADDR, SYMBOL(vmap_area_list) + OFFSET(list_head.next),
-@@ -689,11 +691,16 @@ vaddr_to_paddr_ppc64(unsigned long vaddr)
- if ((SYMBOL(vmap_area_list) == NOT_FOUND_SYMBOL)
- || (OFFSET(vmap_area.va_start) == NOT_FOUND_STRUCTURE)
- || (OFFSET(vmap_area.list) == NOT_FOUND_STRUCTURE)) {
-- if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
-- || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
-- ERRMSG("Can't get info for vmalloc translation.\n");
-- return NOT_PADDR;
-- }
-+ /*
-+ * Don't depend on vmap_area_list/vmlist if vmalloc_start is set in
-+ * vmcoreinfo, in that case proceed without error
-+ */
-+ if (NUMBER(vmalloc_start) == NOT_FOUND_NUMBER)
-+ if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
-+ || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
-+ ERRMSG("Can't get info for vmalloc translation.\n");
-+ return NOT_PADDR;
-+ }
- }
-
- return ppc64_vtop_level4(vaddr);
-diff --git a/makedumpfile-1.7.4/makedumpfile.c b/makedumpfile-1.7.4/makedumpfile.c
-index 58c6639f289f19cdbf39ed3899be9893fdc317fe..d7f1dd41d2cab526d7d40e809ddccf656c586811 100644
---- a/makedumpfile-1.7.4/makedumpfile.c
-+++ b/makedumpfile-1.7.4/makedumpfile.c
-@@ -2978,6 +2978,8 @@ read_vmcoreinfo(void)
- READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
- READ_NUMBER("phys_base", phys_base);
- READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
-+
-+ READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
- #ifdef __aarch64__
- READ_NUMBER("VA_BITS", VA_BITS);
- READ_NUMBER("TCR_EL1_T1SZ", TCR_EL1_T1SZ);
-@@ -2989,7 +2991,6 @@ read_vmcoreinfo(void)
- READ_NUMBER("VA_BITS", va_bits);
- READ_NUMBER_UNSIGNED("phys_ram_base", phys_ram_base);
- READ_NUMBER_UNSIGNED("PAGE_OFFSET", page_offset);
-- READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
- READ_NUMBER_UNSIGNED("VMALLOC_END", vmalloc_end);
- READ_NUMBER_UNSIGNED("VMEMMAP_START", vmemmap_start);
- READ_NUMBER_UNSIGNED("VMEMMAP_END", vmemmap_end);
-diff --git a/makedumpfile-1.7.4/makedumpfile.h b/makedumpfile-1.7.4/makedumpfile.h
-index c04c330b69ecbe5fb232a2eabbd2d71f14b60cc0..c31f3a4371af8aae38dcba8cac4d6de1012b4cfd 100644
---- a/makedumpfile-1.7.4/makedumpfile.h
-+++ b/makedumpfile-1.7.4/makedumpfile.h
-@@ -541,8 +541,6 @@ do { \
- * The value of dependence on machine
- */
- #define PAGE_OFFSET (info->page_offset)
--#define VMALLOC_START (info->vmalloc_start)
--#define VMALLOC_END (info->vmalloc_end)
- #define VMEMMAP_START (info->vmemmap_start)
- #define VMEMMAP_END (info->vmemmap_end)
- #define PMASK (0x7ffffffffffff000UL)
-@@ -2263,6 +2261,9 @@ struct number_table {
- long HUGETLB_PAGE_DTOR;
- long phys_base;
- long KERNEL_IMAGE_SIZE;
-+
-+ unsigned long vmalloc_start;
-+
- #ifdef __aarch64__
- long VA_BITS;
- long TCR_EL1_T1SZ;
-@@ -2273,7 +2274,6 @@ struct number_table {
- long va_bits;
- unsigned long phys_ram_base;
- unsigned long page_offset;
-- unsigned long vmalloc_start;
- unsigned long vmalloc_end;
- unsigned long vmemmap_start;
- unsigned long vmemmap_end;
diff --git a/kexec-tools.spec b/kexec-tools.spec
index f29f96e..d5458bc 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -1,12 +1,12 @@
%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
-%global mkdf_ver 1.7.4
+%global mkdf_ver 1.7.5
%global kdump_utils_ver 1.0.42
%global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
Name: kexec-tools
Version: 2.0.28
-Release: 8%{?dist}
+Release: 9%{?dist}
URL: https://kernel.org/pub/linux/utils/kernel/kexec
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -54,8 +54,6 @@ Patch101: kexec-tools-2.0.28-Fix-building-on-x86_64-with-binutils-2.41.patch
# Author: Jiri Bohac <jbohac(a)suse.cz>
Patch601: kexec-tools-2.0.28-kexec-don-t-use-kexec_file_load-on-XEN.patch
-Patch602: kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
-
%description
kexec-tools provides /sbin/kexec binary that facilitates a new
kernel to boot using the kernel's kexec feature either on a
@@ -139,7 +137,6 @@ tar -z -x -v -f %{SOURCE19}
%patch 101 -p1
%patch 601 -p1
-%patch 602 -p1
%ifarch ppc
%define archdef ARCH=ppc
@@ -295,6 +292,9 @@ fi
%changelog
+* Thu Apr 25 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-9
+- Update to makedumpfile-1.7.5
+
* Tue Apr 09 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-8
- Add a kdump-utils subpackage
diff --git a/sources b/sources
index 5fc0aed..44a704a 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
SHA512 (kexec-tools-2.0.28.tar.xz) = 889a7bf1d26bb309e4ff7ce1c8dbcf48c01e47221ea3acf1c4ef2a98a652c496e31bddcdb627d3adebd85f7541d1fb9122c60e741e10b3726e31a9733cadc753
SHA512 (eppic-e8844d3.tar.gz) = d86b9f90c57e694107272d8f71b87f66a30743b9530480fb6f665026bbada4c6b0205a83e40b5383663a945681cfbfcf1ee79469fc219ddf679473c4b2290763
-SHA512 (makedumpfile-1.7.4.tar.gz) = 6c3455b711bd4e120173ee07fcc5ff708ae6d34eaee0f4c135eca7ee0e0475b4d391429c23cf68e848b156ee3edeab956e693a390d67ccc634c43224c7129a96
+SHA512 (makedumpfile-1.7.5.tar.gz) = 6bb84a87959d2aa530f952acacacc669e888b6a0ae5fe3c6c627647a0e2566a73f05c70ba7b2428f9c740bfe40a773792bb302039ab62c0fa646e148c69f7c6f
SHA512 (kdump-utils-1.0.42.tar.gz) = 2d8717a010bfbffd4410ef57ade1402316cda07faa1063631b8665ac273fac618bff0afd9bdc02292c859d956790e06a51d81b141db158957ef97eb8408111c4
commit e3a1eb06ac40d0d3c83ac15bb78c0094f8dc2b1a
Author: Zbigniew Jędrzejewski-Szmek <zbyszek(a)in.waw.pl>
Date: Sun Apr 14 19:06:17 2024 +0200
Fix build when %_bindir==%_sbindir
Preparation for https://fedoraproject.org/wiki/Changes/Unify_bin_and_sbin.
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 254d88a..f29f96e 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -145,6 +145,8 @@ tar -z -x -v -f %{SOURCE19}
%define archdef ARCH=ppc
%endif
+sed -r -i 's|/usr/sbin|%_sbindir|g' makedumpfile-*/Makefile
+
%build
autoreconf
%configure \
@@ -156,7 +158,7 @@ autoreconf
--host=powerpc64le-redhat-linux-gnu \
--build=powerpc64le-redhat-linux-gnu \
%endif
- --sbindir=/usr/sbin
+ --sbindir=%{_sbindir}
rm -f kexec-tools.spec.in
%make_build
@@ -172,7 +174,7 @@ rm -f %{buildroot}/%{_libdir}/kexec-tools/kexec_test
# kdump-utils
%define kdump_utils_dir kdump-utils-%{kdump_utils_ver}
-make DESTDIR=%{buildroot} -C %kdump_utils_dir install
+%make_install -C %kdump_utils_dir sbindir=%_sbindir
# makedumpfile
@@ -249,8 +251,9 @@ fi
%{_sbindir}/mkfadumprd
%{_prefix}/lib/kernel/install.d/60-fadump.install
%endif
+%{_bindir}/kdumpctl
%{_sbindir}/mkdumprd
-%{_bindir}/*
+%{_sbindir}/vmcore-dmesg
%{_prefix}/lib/kdump
%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
commit 5be9c9af09b8d883861707f07c344dfbfde993da
Author: Coiby Xu <coxu(a)redhat.com>
Date: Sat Apr 13 09:59:41 2024 +0800
Use upstream source
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/60-fadump.install b/60-fadump.install
deleted file mode 100755
index 75318ff..0000000
--- a/60-fadump.install
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/bash
-
-COMMAND="$1"
-KERNEL_VERSION="$2"
-
-if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then
- exit 0
-fi
-
-# Currently, fadump is supported only in environments with
-# writable /boot directory.
-if [[ ! -w "/boot" ]]; then
- exit 0
-fi
-
-FADUMP_INITRD="/boot/.initramfs-${KERNEL_VERSION}.img.default"
-FADUMP_INITRD_CHECKSUM="$FADUMP_INITRD.checksum"
-
-ret=0
-case "$COMMAND" in
- add)
- # Do nothing, fadump initramfs is strictly host only
- # and managed by kdump service
- ;;
- remove)
- rm -f -- "$FADUMP_INITRD"
- rm -f -- "$FADUMP_INITRD_CHECKSUM"
- ret=$?
- ;;
-esac
-exit $ret
diff --git a/60-kdump.install b/60-kdump.install
deleted file mode 100755
index 5b0e021..0000000
--- a/60-kdump.install
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/bash
-
-COMMAND="$1"
-KERNEL_VERSION="$2"
-KDUMP_INITRD_DIR_ABS="$3"
-KERNEL_IMAGE="$4"
-
-if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then
- exit 0
-fi
-
-if [[ -d "$KDUMP_INITRD_DIR_ABS" ]]; then
- KDUMP_INITRD="initrdkdump"
-else
- # If `KDUMP_BOOTDIR` is not writable, then the kdump
- # initrd must have been placed at `/var/lib/kdump`
- if [[ ! -w "/boot" ]]; then
- KDUMP_INITRD_DIR_ABS="/var/lib/kdump"
- else
- KDUMP_INITRD_DIR_ABS="/boot"
- fi
- KDUMP_INITRD="initramfs-${KERNEL_VERSION}kdump.img"
-fi
-
-ret=0
-case "$COMMAND" in
- add)
- # Do nothing, kdump initramfs is strictly host only
- # and managed by kdump service
- ;;
- remove)
- rm -f -- "$KDUMP_INITRD_DIR_ABS/$KDUMP_INITRD"
- ret=$?
- ;;
-esac
-exit $ret
diff --git a/92-crashkernel.install b/92-crashkernel.install
deleted file mode 100755
index 19bd078..0000000
--- a/92-crashkernel.install
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/bash
-
-COMMAND="$1"
-KERNEL_VERSION="$2"
-KDUMP_INITRD_DIR_ABS="$3"
-KERNEL_IMAGE="$4"
-
-case "$COMMAND" in
-add)
- kdumpctl _reset-crashkernel-for-installed_kernel "$KERNEL_VERSION"
- exit 0
- ;;
-esac
diff --git a/98-kexec.rules b/98-kexec.rules
deleted file mode 100644
index b73b701..0000000
--- a/98-kexec.rules
+++ /dev/null
@@ -1,16 +0,0 @@
-SUBSYSTEM=="cpu", ACTION=="add", GOTO="kdump_reload"
-SUBSYSTEM=="cpu", ACTION=="remove", GOTO="kdump_reload"
-SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload"
-SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload"
-
-GOTO="kdump_reload_end"
-
-LABEL="kdump_reload"
-
-# If kdump is not loaded, calling kdump-udev-throttle will end up
-# doing nothing, but systemd-run will always generate extra logs for
-# each call, so trigger the kdump-udev-throttler only if kdump
-# service is active to avoid unnecessary logs
-RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"
-
-LABEL="kdump_reload_end"
diff --git a/98-kexec.rules.ppc64 b/98-kexec.rules.ppc64
deleted file mode 100644
index e9db276..0000000
--- a/98-kexec.rules.ppc64
+++ /dev/null
@@ -1,22 +0,0 @@
-SUBSYSTEM=="cpu", ACTION=="online", GOTO="kdump_reload_cpu"
-SUBSYSTEM=="memory", ACTION=="online", GOTO="kdump_reload_mem"
-SUBSYSTEM=="memory", ACTION=="offline", GOTO="kdump_reload_mem"
-
-GOTO="kdump_reload_end"
-
-# If kdump is not loaded, calling kdump-udev-throttle will end up
-# doing nothing, but systemd-run will always generate extra logs for
-# each call, so trigger the kdump-udev-throttler only if kdump
-# service is active to avoid unnecessary logs
-
-LABEL="kdump_reload_mem"
-
-RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"
-
-GOTO="kdump_reload_end"
-
-LABEL="kdump_reload_cpu"
-
-RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; ! test -f /sys/kernel/fadump/enabled || cat /sys/kernel/fadump/enabled | grep 0 || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'"
-
-LABEL="kdump_reload_end"
diff --git a/COPYING b/COPYING
deleted file mode 100644
index d159169..0000000
--- a/COPYING
+++ /dev/null
@@ -1,339 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index e1a511c..0000000
--- a/Makefile
+++ /dev/null
@@ -1,83 +0,0 @@
-prefix ?= /usr
-libdir ?= ${prefix}/lib
-datadir ?= ${prefix}/share
-pkglibdir ?= ${libdir}/kdump
-sysconfdir ?= /etc
-bindir ?= ${prefix}/bin
-sbindir ?= ${prefix}/sbin
-mandir ?= ${prefix}/share/man
-localstatedir ?= /var
-sharedstatedir ?= /var/lib
-udevrulesdir ?= ${libdir}/udev/rules.d
-systemdsystemunitdir ?= ${libdir}/systemd/system/
-ARCH ?= $(shell uname -m)
-dracutmoddir = $(DESTDIR)${libdir}/dracut/modules.d
-kdumpbasemoddir = $(dracutmoddir)/99kdumpbase
-
-dracut-modules:
- mkdir -p $(dracutmoddir)
- mkdir -p -m755 $(kdumpbasemoddir)
-
- install -m 755 dracut-kdump.sh $(kdumpbasemoddir)/kdump.sh
- install -m 755 dracut-module-setup.sh $(kdumpbasemoddir)/module-setup.sh
- install -m 755 dracut-monitor_dd_progress.sh $(kdumpbasemoddir)/monitor_dd_progress.sh
- install -m 644 dracut-kdump-emergency.service $(kdumpbasemoddir)/kdump-emergency.service
- install -m 644 dracut-kdump-capture.service $(kdumpbasemoddir)/kdump-capture.service
- install -m 644 dracut-kdump-emergency.target $(kdumpbasemoddir)/kdump-emergency.target
-
- mkdir -p -m755 $(dracutmoddir)/99earlykdump
- install -m 755 dracut-early-kdump.sh $(dracutmoddir)/99earlykdump/kdump.sh
- install -m 755 dracut-early-kdump-module-setup.sh $(dracutmoddir)/99earlykdump/kdump-module-setup.sh
-
-ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
- mkdir -p -m755 $(dracutmoddir)/99zz-fadumpinit
- install -m 755 dracut-fadump-init-fadump.sh $(dracutmoddir)/99zz-fadumpinit/init-fadump.sh
- install -m 755 dracut-fadump-module-setup.sh $(dracutmoddir)/99zz-fadumpinit/module-setup.sh
-endif
-
-kdump-conf: gen-kdump-conf.sh
- ./gen-kdump-conf.sh $(ARCH) > kdump.conf
-
-kdump-sysconfig: gen-kdump-sysconfig.sh
- ./gen-kdump-sysconfig.sh $(ARCH) > kdump.sysconfig
-
-manpages:
- install -D -m 644 mkdumprd.8 kdumpctl.8 -t $(DESTDIR)$(mandir)/man8
- install -D -m 644 kdump.conf.5 $(DESTDIR)$(mandir)/man5/kdump.conf.5
-
-install: dracut-modules kdump-conf kdump-sysconfig manpages
- mkdir -p $(DESTDIR)$(pkglibdir)
- mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/pre.d
- mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/post.d
- mkdir -p -m755 $(DESTDIR)$(localstatedir)/crash
- mkdir -p -m755 $(DESTDIR)$(udevrulesdir)
- mkdir -p -m755 $(DESTDIR)$(sharedstatedir)/kdump
- mkdir -p -m755 $(DESTDIR)$(libdir)/kernel/install.d/
-
- install -D -m 755 kdumpctl $(DESTDIR)$(bindir)/kdumpctl
- install -D -m 755 mkdumprd $(DESTDIR)$(sbindir)/mkdumprd
- install -D -m 644 kdump.conf $(DESTDIR)$(sysconfdir)
- install -D -m 644 kdump.sysconfig $(DESTDIR)$(sysconfdir)/sysconfig/kdump
- install -D -m 755 kdump-lib.sh kdump-lib-initramfs.sh kdump-logger.sh -t $(DESTDIR)$(pkglibdir)
-
-ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
- install -m 755 mkfadumprd $(DESTDIR)$(sbindir)
- install -m 755 kdump-migrate-action.sh kdump-restart.sh -t $(DESTDIR)$(pkglibdir)
- install -m 755 60-fadump.install $(DESTDIR)$(libdir)/kernel/install.d/
-endif
-
-ifneq ($(ARCH),s390x)
- install -m 755 kdump-udev-throttler $(DESTDIR)$(udevrulesdir)/../kdump-udev-throttler
- # For s390x the ELF header is created in the kdump kernel and therefore kexec
- # udev rules are not required
-ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
- install -m 644 98-kexec.rules.ppc64 $(DESTDIR)$(udevrulesdir)/98-kexec.rules
-else
- install -m 644 98-kexec.rules $(DESTDIR)$(udevrulesdir)/98-kexec.rules
-endif
-endif
-
- install -D -m 644 kdump.service $(DESTDIR)$(systemdsystemunitdir)/kdump.service
- install -m 755 -D kdump-dep-generator.sh $(DESTDIR)$(libdir)/systemd/system-generators/kdump-dep-generator.sh
- install -m 755 60-kdump.install $(DESTDIR)$(libdir)/kernel/install.d/
- install -m 755 92-crashkernel.install $(DESTDIR)$(libdir)/kernel/install.d/
diff --git a/crashkernel-howto.txt b/crashkernel-howto.txt
deleted file mode 100644
index 54e1141..0000000
--- a/crashkernel-howto.txt
+++ /dev/null
@@ -1,120 +0,0 @@
-Introduction
-============
-
-This document describes features the kexec-tools package provides for setting
-and estimating the crashkernel value.
-
-Kdump lives in a pre-reserved chunk of memory, and the size of the reserved
-memory is specified by the `crashkernel=` kernel parameter. It's hard to
-estimate an accurate `crashkernel=` value, so it's always recommended to test
-kdump after you updated the `crashkernel=` value or changed the dump target.
-
-
-Default crashkernel value
-=========================
-
-Latest kexec-tools provides "kdumpctl get-default-crashkernel" to retrieve
-the default crashkernel value,
-
- $ echo $(kdumpctl get-default-crashkernel)
- 1G-4G:192M,4G-64G:256M,64G-:512M
-
-It will be taken as the default value of 'crashkernel=', you can use
-this value as a reference for setting crashkernel value manually.
-
-
-New installed system
-====================
-
-Anaconda is the OS installer which sets all the kernel boot cmdline on a newly
-installed system. If kdump is enabled during Anaconda installation, Anaconda
-will use the default crashkernel value as the default `crashkernel=` value on
-the newly installed system.
-
-Users can override the value during Anaconda installation manually.
-
-
-Auto update of crashkernel boot parameter
-=========================================
-
-A new release of kexec-tools could update the default crashkernel value. By
-default, kexec-tools would reset crashkernel to the new default value if it
-detects the old default crashkernel value is used by installed kernels. If you
-don't want kexec-tools to update the old default crashkernel to the new default
-crashkernel, you can change auto_reset_crashkernel to no in kdump.conf.
-
-Supported Bootloaders
----------------------
-
-This auto update only works with GRUB2 and ZIPL, as kexec-tools heavily depends
-on `grubby`. If other boot loaders are used, the user will have to update the
-`crashkernel=` value manually.
-
-
-Reset crashkernel to default value
-==================================
-
-kexec-tools only perform the auto update of crashkernel value when it can
-confirm the boot kernel's crashkernel value is using its corresponding default
-value and auto_reset_crashkernel=yes in kdump.conf. In other cases, the user
-can reset the crashkernel value by themselves.
-
-Reset using kdumpctl
---------------------
-
-To make it easier to reset the `crashkernel=` kernel cmdline to this default
-value properly, `kdumpctl` also provides a sub-command:
-
- `kdumpctl reset-crashkernel [--kernel=path_to_kernel] [--reboot]`
-
-This command will reset the bootloader's kernel cmdline to the default value.
-It will also update bootloader config if the bootloader has a standalone config
-file. User will have to reboot the machine after this command to make it take
-effect if --reboot is not specified. For more details, please refer to the
-reset-crashkernel command in `man kdumpctl`.
-
-Reset manually
---------------
-
-To reset the crashkernel value manually, it's recommended to use utils like
-`grubby`. A one liner script for resetting `crashkernel=` value of all installed
-kernels to the default value is:
-
- grubby --update-kernel ALL --args "crashkernel=$(kdumpctl get-default-crashkernel)"
-
-NOTE: On s390x you also need to run zipl for the change to take effect.
-
-Estimate crashkernel
-====================
-
-The best way to estimate a usable crashkernel value is by testing kdump
-manually. And you can set crashkernel to a large value, then adjust the
-crashkernel value to an acceptable value gradually.
-
-`kdumpctl` also provides a sub-command for doing rough estimating without
-triggering kdump:
-
- `kdumpctl estimate`
-
-The output will be like this:
-
-```
- Encrypted kdump target requires extra memory, assuming using the keyslot with minimum memory requirement
-
- Reserved crashkernel: 256M
- Recommended crashkernel: 655M
-
- Kernel image size: 47M
- Kernel modules size: 12M
- Initramfs size: 19M
- Runtime reservation: 64M
- LUKS required size: 512M
- Large modules:
- xfs: 1892352
- nouveau: 2318336
- WARNING: Current crashkernel size is lower than recommended size 655M.
-```
-
-It will generate a summary report about the estimated memory consumption
-of each component of kdump. The value may not be accurate enough, but
-would be a good start for finding a suitable crashkernel value.
diff --git a/dracut-early-kdump-module-setup.sh b/dracut-early-kdump-module-setup.sh
deleted file mode 100755
index 0451118..0000000
--- a/dracut-early-kdump-module-setup.sh
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/bin/bash
-
-. /etc/sysconfig/kdump
-
-KDUMP_KERNEL=""
-KDUMP_INITRD=""
-
-check() {
- if [[ ! -f /etc/sysconfig/kdump ]] || [[ ! -f /lib/kdump/kdump-lib.sh ]] \
- || [[ -n ${IN_KDUMP} ]]; then
- return 1
- fi
- return 255
-}
-
-depends() {
- echo "base shutdown"
- return 0
-}
-
-prepare_kernel_initrd() {
- . /lib/kdump/kdump-lib.sh
-
- prepare_kdump_bootinfo
-
- # $kernel is a variable from dracut
- if [[ $KDUMP_KERNELVER != "$kernel" ]]; then
- dwarn "Using kernel version '$KDUMP_KERNELVER' for early kdump," \
- "but the initramfs is generated for kernel version '$kernel'"
- fi
-}
-
-install() {
- prepare_kernel_initrd
- if [[ ! -f $KDUMP_KERNEL ]]; then
- derror "Could not find required kernel for earlykdump," \
- "earlykdump will not work!"
- return 1
- fi
- if [[ ! -f $KDUMP_INITRD ]]; then
- derror "Could not find required kdump initramfs for earlykdump," \
- "please ensure kdump initramfs is generated first," \
- "earlykdump will not work!"
- return 1
- fi
-
- inst_multiple tail find cut dirname hexdump
- inst_simple "/etc/sysconfig/kdump"
- inst_binary "/usr/sbin/kexec"
- inst_binary "/usr/bin/gawk" "/usr/bin/awk"
- inst_binary "/usr/bin/logger" "/usr/bin/logger"
- inst_binary "/usr/bin/printf" "/usr/bin/printf"
- inst_binary "/usr/bin/xargs" "/usr/bin/xargs"
- inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh"
- inst_script "/lib/kdump/kdump-lib-initramfs.sh" "/lib/kdump/kdump-lib-initramfs.sh"
- inst_script "/lib/kdump/kdump-logger.sh" "/lib/kdump-logger.sh"
- inst_hook cmdline 00 "$moddir/early-kdump.sh"
- inst_binary "$KDUMP_KERNEL"
- inst_binary "$KDUMP_INITRD"
-
- ln_r "$KDUMP_KERNEL" "/boot/kernel-earlykdump"
- ln_r "$KDUMP_INITRD" "/boot/initramfs-earlykdump"
-
- chmod -x "${initdir}/$KDUMP_KERNEL"
-}
diff --git a/dracut-early-kdump.sh b/dracut-early-kdump.sh
deleted file mode 100755
index 4fd8e90..0000000
--- a/dracut-early-kdump.sh
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/bash
-
-KEXEC=/sbin/kexec
-standard_kexec_args="-p"
-
-EARLY_KDUMP_INITRD=""
-EARLY_KDUMP_KERNEL=""
-EARLY_KDUMP_CMDLINE=""
-EARLY_KEXEC_ARGS=""
-
-. /etc/sysconfig/kdump
-. /lib/dracut-lib.sh
-. /lib/kdump-lib.sh
-. /lib/kdump-logger.sh
-
-# initiate the kdump logger
-if ! dlog_init; then
- echo "failed to initiate the kdump logger."
- exit 1
-fi
-
-prepare_parameters()
-{
- EARLY_KDUMP_CMDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}")
- EARLY_KDUMP_KERNEL="/boot/kernel-earlykdump"
- EARLY_KDUMP_INITRD="/boot/initramfs-earlykdump"
-}
-
-early_kdump_load()
-{
- if ! check_kdump_feasibility; then
- return 1
- fi
-
- if is_fadump_capable; then
- dwarn "WARNING: early kdump doesn't support fadump."
- return 1
- fi
-
- if is_kernel_loaded "kdump"; then
- return 1
- fi
-
- prepare_parameters
-
- EARLY_KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")
-
- # Here, only output the messages, but do not save these messages
- # to a file because the target disk may not be mounted yet, the
- # earlykdump is too early.
- ddebug "earlykdump: $KEXEC ${EARLY_KEXEC_ARGS} $standard_kexec_args \
- --command-line=$EARLY_KDUMP_CMDLINE --initrd=$EARLY_KDUMP_INITRD \
- $EARLY_KDUMP_KERNEL"
-
- # shellcheck disable=SC2086
- if $KEXEC $EARLY_KEXEC_ARGS $standard_kexec_args \
- --command-line="$EARLY_KDUMP_CMDLINE" \
- --initrd=$EARLY_KDUMP_INITRD $EARLY_KDUMP_KERNEL; then
- dinfo "kexec: loaded early-kdump kernel"
- return 0
- else
- derror "kexec: failed to load early-kdump kernel"
- return 1
- fi
-}
-
-set_early_kdump()
-{
- if getargbool 0 rd.earlykdump; then
- dinfo "early-kdump is enabled."
- early_kdump_load
- else
- dinfo "early-kdump is disabled."
- fi
-
- return 0
-}
-
-set_early_kdump
diff --git a/dracut-fadump-init-fadump.sh b/dracut-fadump-init-fadump.sh
deleted file mode 100755
index 94a3751..0000000
--- a/dracut-fadump-init-fadump.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh
-export PATH=/usr/bin:/usr/sbin
-export SYSTEMD_IN_INITRD=lenient
-
-[ -e /proc/mounts ] ||
- (mkdir -p /proc && mount -t proc -o nosuid,noexec,nodev proc /proc)
-
-grep -q '^sysfs /sys sysfs' /proc/mounts ||
- (mkdir -p /sys && mount -t sysfs -o nosuid,noexec,nodev sysfs /sys)
-
-grep -q '^none / ' /proc/mounts || grep -q '^rootfs / ' /proc/mounts && ROOTFS_IS_RAMFS=1
-
-if [ -f /proc/device-tree/rtas/ibm,kernel-dump ] || [ -f /proc/device-tree/ibm,opal/dump/mpipl-boot ]; then
- mkdir /newroot
- mount -t ramfs ramfs /newroot
-
- if [ $ROOTFS_IS_RAMFS ]; then
- for FILE in $(ls -A /fadumproot/); do
- mv /fadumproot/$FILE /newroot/
- done
- exec switch_root /newroot /init
- else
- mkdir /newroot/sys /newroot/proc /newroot/dev /newroot/run /newroot/oldroot
-
- grep -q '^devtmpfs /dev devtmpfs' /proc/mounts && mount --move /dev /newroot/dev
- grep -q '^tmpfs /run tmpfs' /proc/mounts && mount --move /run /newroot/run
- mount --move /sys /newroot/sys
- mount --move /proc /newroot/proc
-
- cp --reflink=auto --sparse=auto --preserve=mode,timestamps,links -dfr /fadumproot/. /newroot/
- cd /newroot && pivot_root . oldroot
-
- loop=1
- while [ $loop ]; do
- unset loop
- while read -r _ mp _; do
- case $mp in
- /oldroot/*) umount -d "$mp" && loop=1 ;;
- esac
- done </proc/mounts
- done
- umount -d -l oldroot
-
- exec /init
- fi
-else
- exec /init.dracut
-fi
diff --git a/dracut-fadump-module-setup.sh b/dracut-fadump-module-setup.sh
deleted file mode 100644
index f062486..0000000
--- a/dracut-fadump-module-setup.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-check() {
- return 255
-}
-
-depends() {
- return 0
-}
-
-install() {
- mv -f "$initdir/init" "$initdir/init.dracut"
- inst_script "$moddir/init-fadump.sh" /init
- chmod a+x "$initdir/init"
-
- # Install required binaries for the init script (init-fadump.sh)
- inst_multiple sh modprobe grep mkdir mount
- if dracut_module_included "squash"; then
- inst_multiple cp pivot_root umount
- else
- inst_multiple ls mv switch_root
- fi
-}
diff --git a/dracut-kdump-capture.service b/dracut-kdump-capture.service
deleted file mode 100644
index 7109169..0000000
--- a/dracut-kdump-capture.service
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is part of systemd.
-#
-# systemd is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-
-[Unit]
-Description=Kdump Vmcore Save Service
-After=initrd.target initrd-parse-etc.service sysroot.mount
-After=dracut-initqueue.service dracut-pre-mount.service dracut-mount.service dracut-pre-pivot.service
-Before=initrd-cleanup.service
-ConditionPathExists=/etc/initrd-release
-OnFailure=emergency.target
-OnFailureJobMode=isolate
-
-[Service]
-Environment=DRACUT_SYSTEMD=1
-Environment=NEWROOT=/sysroot
-Type=oneshot
-ExecStart=/bin/kdump.sh
-StandardInput=null
-StandardOutput=journal
-StandardError=journal+console
-KillMode=process
-RemainAfterExit=yes
-
-# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
-# terminates cleanly.
-KillSignal=SIGHUP
diff --git a/dracut-kdump-emergency.service b/dracut-kdump-emergency.service
deleted file mode 100644
index 0cf7051..0000000
--- a/dracut-kdump-emergency.service
+++ /dev/null
@@ -1,27 +0,0 @@
-# This service will run the real kdump error handler code. Executing the
-# failure action configured in kdump.conf
-
-[Unit]
-Description=Kdump Error Handler
-DefaultDependencies=no
-After=systemd-vconsole-setup.service
-Wants=systemd-vconsole-setup.service
-
-[Service]
-Environment=HOME=/
-Environment=DRACUT_SYSTEMD=1
-Environment=NEWROOT=/sysroot
-WorkingDirectory=/
-ExecStart=/bin/kdump.sh --error-handler
-ExecStopPost=-/bin/rm -f -- /.console_lock
-Type=oneshot
-StandardInput=tty-force
-StandardOutput=inherit
-StandardError=inherit
-KillMode=process
-IgnoreSIGPIPE=no
-TasksMax=infinity
-
-# Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash
-# terminates cleanly.
-KillSignal=SIGHUP
diff --git a/dracut-kdump-emergency.target b/dracut-kdump-emergency.target
deleted file mode 100644
index a1bb493..0000000
--- a/dracut-kdump-emergency.target
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is part of systemd.
-#
-# systemd is free software; you can redistribute it and/or modify it
-# under the terms of the GNU Lesser General Public License as published by
-# the Free Software Foundation; either version 2.1 of the License, or
-# (at your option) any later version.
-
-[Unit]
-Description=Emergency Mode
-Documentation=man:systemd.special(7)
-Requires=emergency.service
-After=emergency.service
-AllowIsolate=yes
-IgnoreOnIsolate=yes
diff --git a/dracut-kdump.sh b/dracut-kdump.sh
deleted file mode 100755
index 7b3ad7a..0000000
--- a/dracut-kdump.sh
+++ /dev/null
@@ -1,624 +0,0 @@
-#!/bin/sh
-#
-# The main kdump routine in capture kernel, bash may not be the
-# default shell. Any code added must be POSIX compliant.
-
-. /lib/dracut-lib.sh
-. /lib/kdump-logger.sh
-. /lib/kdump-lib-initramfs.sh
-
-#initiate the kdump logger
-if ! dlog_init; then
- echo "failed to initiate the kdump logger."
- exit 1
-fi
-
-KDUMP_PATH="/var/crash"
-KDUMP_LOG_FILE="/run/initramfs/kexec-dmesg.log"
-KDUMP_LOG_DEST=""
-KDUMP_LOG_OP=""
-CORE_COLLECTOR=""
-DEFAULT_CORE_COLLECTOR="makedumpfile -l --message-level 7 -d 31"
-DMESG_COLLECTOR="/sbin/vmcore-dmesg"
-FAILURE_ACTION="systemctl reboot -f"
-DATEDIR=$(date +%Y-%m-%d-%T)
-HOST_IP='127.0.0.1'
-DUMP_INSTRUCTION=""
-SSH_KEY_LOCATION=$DEFAULT_SSHKEY
-DD_BLKSIZE=512
-FINAL_ACTION="systemctl reboot -f"
-KDUMP_PRE=""
-KDUMP_POST=""
-NEWROOT="/sysroot"
-OPALCORE="/sys/firmware/opal/mpipl/core"
-KDUMP_CONF_PARSED="/tmp/kdump.conf.$$"
-
-# POSIX doesn't have pipefail, only apply when using bash
-# shellcheck disable=SC3040
-[ -n "$BASH" ] && set -o pipefail
-
-DUMP_RETVAL=0
-
-kdump_read_conf > $KDUMP_CONF_PARSED
-
-get_kdump_confs()
-{
- while read -r config_opt config_val; do
- # remove inline comments after the end of a directive.
- case "$config_opt" in
- path)
- KDUMP_PATH="$config_val"
- ;;
- core_collector)
- [ -n "$config_val" ] && CORE_COLLECTOR="$config_val"
- ;;
- sshkey)
- if [ -f "$config_val" ]; then
- SSH_KEY_LOCATION=$config_val
- fi
- ;;
- kdump_pre)
- KDUMP_PRE="$config_val"
- ;;
- kdump_post)
- KDUMP_POST="$config_val"
- ;;
- fence_kdump_args)
- FENCE_KDUMP_ARGS="$config_val"
- ;;
- fence_kdump_nodes)
- FENCE_KDUMP_NODES="$config_val"
- ;;
- failure_action | default)
- case $config_val in
- shell)
- FAILURE_ACTION="kdump_emergency_shell"
- ;;
- reboot)
- FAILURE_ACTION="systemctl reboot -f && exit"
- ;;
- halt)
- FAILURE_ACTION="halt && exit"
- ;;
- poweroff)
- FAILURE_ACTION="systemctl poweroff -f && exit"
- ;;
- dump_to_rootfs)
- FAILURE_ACTION="dump_to_rootfs"
- ;;
- esac
- ;;
- final_action)
- case $config_val in
- reboot)
- FINAL_ACTION="systemctl reboot -f"
- ;;
- halt)
- FINAL_ACTION="halt"
- ;;
- poweroff)
- FINAL_ACTION="systemctl poweroff -f"
- ;;
- esac
- ;;
- esac
- done < "$KDUMP_CONF_PARSED"
-
- if [ -z "$CORE_COLLECTOR" ]; then
- CORE_COLLECTOR="$DEFAULT_CORE_COLLECTOR"
- if is_ssh_dump_target || is_raw_dump_target; then
- CORE_COLLECTOR="$CORE_COLLECTOR -F"
- fi
- fi
-}
-
-# store the kexec kernel log to a file.
-save_log()
-{
- # LOG_OP is empty when log can't be saved, eg. raw target
- [ -n "$KDUMP_LOG_OP" ] || return
-
- dmesg -T > $KDUMP_LOG_FILE
-
- if command -v journalctl > /dev/null; then
- journalctl -ab >> $KDUMP_LOG_FILE
- fi
- chmod 600 $KDUMP_LOG_FILE
-
- dinfo "saving the $KDUMP_LOG_FILE to $KDUMP_LOG_DEST/"
-
- eval "$KDUMP_LOG_OP"
-}
-
-# $1: dump path, must be a mount point
-dump_fs()
-{
- ddebug "dump_fs _mp=$1"
-
- if ! is_mounted "$1"; then
- dinfo "dump path '$1' is not mounted, trying to mount..."
- if ! mount --target "$1"; then
- derror "failed to dump to '$1', it's not a mount point!"
- return 1
- fi
- fi
-
- # Remove -F in makedumpfile case. We don't want a flat format dump here.
- case $CORE_COLLECTOR in
- *makedumpfile*)
- CORE_COLLECTOR=$(echo "$CORE_COLLECTOR" | sed -e "s/-F//g")
- ;;
- esac
-
- _dump_fs_path=$(echo "$1/$KDUMP_PATH/$HOST_IP-$DATEDIR/" | tr -s /)
- dinfo "saving to $_dump_fs_path"
-
- # Only remount to read-write mode if the dump target is mounted read-only.
- _dump_mnt_op=$(get_mount_info OPTIONS target "$1" -f)
- case $_dump_mnt_op in
- ro*)
- dinfo "Remounting the dump target in rw mode."
- mount -o remount,rw "$1" || return 1
- ;;
- esac
-
- mkdir -p "$_dump_fs_path" || return 1
-
- save_vmcore_dmesg_fs ${DMESG_COLLECTOR} "$_dump_fs_path"
- save_opalcore_fs "$_dump_fs_path"
-
- dinfo "saving vmcore"
- KDUMP_LOG_DEST=$_dump_fs_path/
- KDUMP_LOG_OP="mv '$KDUMP_LOG_FILE' '$KDUMP_LOG_DEST/'"
-
- $CORE_COLLECTOR /proc/vmcore "$_dump_fs_path/vmcore-incomplete"
- _dump_exitcode=$?
- if [ $_dump_exitcode -eq 0 ]; then
- sync -f "$_dump_fs_path/vmcore-incomplete"
- _sync_exitcode=$?
- if [ $_sync_exitcode -eq 0 ]; then
- mv "$_dump_fs_path/vmcore-incomplete" "$_dump_fs_path/vmcore"
- dinfo "saving vmcore complete"
- else
- derror "sync vmcore failed, exitcode:$_sync_exitcode"
- return 1
- fi
- else
- derror "saving vmcore failed, exitcode:$_dump_exitcode"
- return 1
- fi
-
- # improper kernel cmdline can cause the failure of echo, we can ignore this kind of failure
- return 0
-}
-
-# $1: dmesg collector
-# $2: dump path
-save_vmcore_dmesg_fs()
-{
- dinfo "saving vmcore-dmesg.txt to $2"
- if $1 /proc/vmcore > "$2/vmcore-dmesg-incomplete.txt"; then
- mv "$2/vmcore-dmesg-incomplete.txt" "$2/vmcore-dmesg.txt"
- chmod 600 "$2/vmcore-dmesg.txt"
-
- # Make sure file is on disk. There have been instances where later
- # saving vmcore failed and system rebooted without sync and there
- # was no vmcore-dmesg.txt available.
- sync
- dinfo "saving vmcore-dmesg.txt complete"
- else
- if [ -f "$2/vmcore-dmesg-incomplete.txt" ]; then
- chmod 600 "$2/vmcore-dmesg-incomplete.txt"
- fi
- derror "saving vmcore-dmesg.txt failed"
- fi
-}
-
-# $1: dump path
-save_opalcore_fs()
-{
- if [ ! -f $OPALCORE ]; then
- # Check if we are on an old kernel that uses a different path
- if [ -f /sys/firmware/opal/core ]; then
- OPALCORE="/sys/firmware/opal/core"
- else
- return 0
- fi
- fi
-
- dinfo "saving opalcore:$OPALCORE to $1/opalcore"
- if ! cp $OPALCORE "$1/opalcore"; then
- derror "saving opalcore failed"
- return 1
- fi
-
- sync
- dinfo "saving opalcore complete"
- return 0
-}
-
-dump_to_rootfs()
-{
-
- if [ "$(systemctl status dracut-initqueue | sed -n "s/^\s*Active: \(\S*\)\s.*$/\1/p")" = "inactive" ]; then
- dinfo "Trying to bring up initqueue for rootfs mount"
- systemctl start dracut-initqueue
- fi
-
- dinfo "Clean up dead systemd services"
- systemctl cancel
- dinfo "Waiting for rootfs mount, will timeout after 90 seconds"
- systemctl start --no-block sysroot.mount
-
- _loop=0
- while [ $_loop -lt 90 ] && ! is_mounted /sysroot; do
- sleep 1
- _loop=$((_loop + 1))
- done
-
- if ! is_mounted /sysroot; then
- derror "Failed to mount rootfs"
- return
- fi
-
- ddebug "NEWROOT=$NEWROOT"
- dump_fs $NEWROOT
-}
-
-kdump_emergency_shell()
-{
- ddebug "Switching to kdump emergency shell..."
-
- [ -f /etc/profile ] && . /etc/profile
- export PS1='kdump:${PWD}# '
-
- . /lib/dracut-lib.sh
- if [ -f /dracut-state.sh ]; then
- . /dracut-state.sh 2> /dev/null
- fi
-
- source_conf /etc/conf.d
-
- type plymouth > /dev/null 2>&1 && plymouth quit
-
- source_hook "emergency"
- while read -r _tty rest; do
- (
- echo
- echo
- echo 'Entering kdump emergency mode.'
- echo 'Type "journalctl" to view system logs.'
- echo 'Type "rdsosreport" to generate a sosreport, you can then'
- echo 'save it elsewhere and attach it to a bug report.'
- echo
- echo
- ) > "/dev/$_tty"
- done < /proc/consoles
- sh -i -l
- /bin/rm -f -- /.console_lock
-}
-
-do_failure_action()
-{
- dinfo "Executing failure action $FAILURE_ACTION"
- eval $FAILURE_ACTION
-}
-
-do_final_action()
-{
- dinfo "Executing final action $FINAL_ACTION"
- eval $FINAL_ACTION
-}
-
-do_dump()
-{
- eval $DUMP_INSTRUCTION
- _ret=$?
-
- if [ $_ret -ne 0 ]; then
- derror "saving vmcore failed"
- fi
-
- return $_ret
-}
-
-do_kdump_pre()
-{
- if [ -n "$KDUMP_PRE" ]; then
- "$KDUMP_PRE"
- _ret=$?
- if [ $_ret -ne 0 ]; then
- derror "$KDUMP_PRE exited with $_ret status"
- return $_ret
- fi
- fi
-
- # if any script fails, it just raises warning and continues
- if [ -d /etc/kdump/pre.d ]; then
- for file in /etc/kdump/pre.d/*; do
- "$file"
- _ret=$?
- if [ $_ret -ne 0 ]; then
- derror "$file exited with $_ret status"
- fi
- done
- fi
- return 0
-}
-
-do_kdump_post()
-{
- if [ -d /etc/kdump/post.d ]; then
- for file in /etc/kdump/post.d/*; do
- "$file" "$1"
- _ret=$?
- if [ $_ret -ne 0 ]; then
- derror "$file exited with $_ret status"
- fi
- done
- fi
-
- if [ -n "$KDUMP_POST" ]; then
- "$KDUMP_POST" "$1"
- _ret=$?
- if [ $_ret -ne 0 ]; then
- derror "$KDUMP_POST exited with $_ret status"
- fi
- fi
-}
-
-# $1: block target, eg. /dev/sda
-dump_raw()
-{
- [ -b "$1" ] || return 1
-
- dinfo "saving to raw disk $1"
-
- if ! echo "$CORE_COLLECTOR" | grep -q makedumpfile; then
- _src_size=$(stat --format %s /proc/vmcore)
- _src_size_mb=$((_src_size / 1048576))
- /kdumpscripts/monitor_dd_progress.sh $_src_size_mb &
- fi
-
- dinfo "saving vmcore"
- $CORE_COLLECTOR /proc/vmcore | dd of="$1" bs=$DD_BLKSIZE >> /tmp/dd_progress_file 2>&1 || return 1
- sync
-
- dinfo "saving vmcore complete"
- return 0
-}
-
-# $1: ssh key file
-# $2: ssh address in <user>@<host> format
-dump_ssh()
-{
- _ret=0
- _ssh_opt="-i $1 -o BatchMode=yes -o StrictHostKeyChecking=yes"
- _ssh_dir="$KDUMP_PATH/$HOST_IP-$DATEDIR"
- if is_ipv6_address "$2"; then
- _scp_address=${2%@*}@"[${2#*@}]"
- else
- _scp_address=$2
- fi
-
- dinfo "saving to $2:$_ssh_dir"
-
- cat /var/lib/random-seed > /dev/urandom
- ssh -q $_ssh_opt "$2" mkdir -p "$_ssh_dir" || return 1
-
- save_vmcore_dmesg_ssh "$DMESG_COLLECTOR" "$_ssh_dir" "$_ssh_opt" "$2"
-
- dinfo "saving vmcore"
-
- KDUMP_LOG_DEST=$2:$_ssh_dir/
- KDUMP_LOG_OP="scp -q $_ssh_opt '$KDUMP_LOG_FILE' '$_scp_address:$_ssh_dir/'"
-
- save_opalcore_ssh "$_ssh_dir" "$_ssh_opt" "$2" "$_scp_address"
-
- if [ "${CORE_COLLECTOR%%[[:blank:]]*}" = "scp" ]; then
- scp -q $_ssh_opt /proc/vmcore "$_scp_address:$_ssh_dir/vmcore-incomplete"
- _ret=$?
- _vmcore="vmcore"
- else
- $CORE_COLLECTOR /proc/vmcore | ssh $_ssh_opt "$2" "umask 0077 && dd bs=512 of='$_ssh_dir/vmcore-incomplete'"
- _ret=$?
- _vmcore="vmcore.flat"
- fi
-
- if [ $_ret -eq 0 ]; then
- ssh $_ssh_opt "$2" "mv '$_ssh_dir/vmcore-incomplete' '$_ssh_dir/$_vmcore'"
- _ret=$?
- if [ $_ret -ne 0 ]; then
- derror "moving vmcore failed, exitcode:$_ret"
- else
- dinfo "saving vmcore complete"
- fi
- else
- derror "saving vmcore failed, exitcode:$_ret"
- fi
-
- return $_ret
-}
-
-# $1: dump path
-# $2: ssh opts
-# $3: ssh address in <user>@<host> format
-# $4: scp address, similar with ssh address but IPv6 addresses are quoted
-save_opalcore_ssh()
-{
- if [ ! -f $OPALCORE ]; then
- # Check if we are on an old kernel that uses a different path
- if [ -f /sys/firmware/opal/core ]; then
- OPALCORE="/sys/firmware/opal/core"
- else
- return 0
- fi
- fi
-
- dinfo "saving opalcore:$OPALCORE to $3:$1"
-
- if ! scp $2 $OPALCORE "$4:$1/opalcore-incomplete"; then
- derror "saving opalcore failed"
- return 1
- fi
-
- ssh $2 "$3" mv "$1/opalcore-incomplete" "$1/opalcore"
- dinfo "saving opalcore complete"
- return 0
-}
-
-# $1: dmesg collector
-# $2: dump path
-# $3: ssh opts
-# $4: ssh address in <user>@<host> format
-save_vmcore_dmesg_ssh()
-{
- dinfo "saving vmcore-dmesg.txt to $4:$2"
- if $1 /proc/vmcore | ssh $3 "$4" "umask 0077 && dd of='$2/vmcore-dmesg-incomplete.txt'"; then
- ssh -q $3 "$4" mv "$2/vmcore-dmesg-incomplete.txt" "$2/vmcore-dmesg.txt"
- dinfo "saving vmcore-dmesg.txt complete"
- else
- derror "saving vmcore-dmesg.txt failed"
- fi
-}
-
-wait_online_network()
-{
- # In some cases, network may still not be ready because nm-online is called
- # with "-s" which means to wait for NetworkManager startup to complete, rather
- # than waiting for network connectivity specifically. Wait 10mins more for the
- # network to be truely ready in these cases.
- _loop=0
- while [ $_loop -lt 600 ]; do
- sleep 1
- _loop=$((_loop + 1))
- if _route=$(kdump_get_ip_route "$1" 2> /dev/null); then
- printf "%s" "$_route"
- return
- else
- dwarn "Waiting for network to be ready (${_loop}s / 10min)"
- fi
- done
-
- derror "Oops. The network still isn't ready after waiting 10mins."
- exit 1
-}
-
-get_host_ip()
-{
-
- if ! is_nfs_dump_target && ! is_ssh_dump_target; then
- return 0
- fi
-
- _kdump_remote_ip=$(getarg kdump_remote_ip=)
-
- if [ -z "$_kdump_remote_ip" ]; then
- derror "failed to get remote IP address!"
- return 1
- fi
-
- if ! _route=$(wait_online_network "$_kdump_remote_ip"); then
- return 1
- fi
-
- _netdev=$(kdump_get_ip_route_field "$_route" "dev")
-
- if ! _kdumpip=$(ip addr show dev "$_netdev" | grep '[ ]*inet'); then
- derror "Failed to get IP of $_netdev"
- return 1
- fi
-
- _kdumpip=$(echo "$_kdumpip" | head -n 1 | awk '{print $2}')
- _kdumpip="${_kdumpip%%/*}"
- HOST_IP=$_kdumpip
-}
-
-read_kdump_confs()
-{
- if [ ! -f "$KDUMP_CONFIG_FILE" ]; then
- derror "$KDUMP_CONFIG_FILE not found"
- return
- fi
-
- get_kdump_confs
-
- # rescan for add code for dump target
- while read -r config_opt config_val; do
- # remove inline comments after the end of a directive.
- case "$config_opt" in
- dracut_args)
- config_val=$(get_dracut_args_target "$config_val")
- if [ -n "$config_val" ]; then
- config_val=$(get_mntpoint_from_target "$config_val")
- DUMP_INSTRUCTION="dump_fs $config_val"
- fi
- ;;
- ext[234] | xfs | btrfs | minix | nfs | virtiofs)
- config_val=$(get_mntpoint_from_target "$config_val")
- DUMP_INSTRUCTION="dump_fs $config_val"
- ;;
- raw)
- DUMP_INSTRUCTION="dump_raw $config_val"
- ;;
- ssh)
- DUMP_INSTRUCTION="dump_ssh $SSH_KEY_LOCATION $config_val"
- ;;
- esac
- done < "$KDUMP_CONF_PARSED"
-}
-
-fence_kdump_notify()
-{
- if [ -n "$FENCE_KDUMP_NODES" ]; then
- # shellcheck disable=SC2086
- $FENCE_KDUMP_SEND $FENCE_KDUMP_ARGS $FENCE_KDUMP_NODES &
- fi
-}
-
-if [ "$1" = "--error-handler" ]; then
- get_kdump_confs
- do_failure_action
- do_final_action
-
- exit $?
-fi
-
-# continue here only if we have to save dump.
-if [ -f /etc/fadump.initramfs ] && [ ! -f /proc/device-tree/rtas/ibm,kernel-dump ] && [ ! -f /proc/device-tree/ibm,opal/dump/mpipl-boot ]; then
- exit 0
-fi
-
-read_kdump_confs
-fence_kdump_notify
-
-if ! get_host_ip; then
- derror "get_host_ip exited with non-zero status!"
- exit 1
-fi
-
-if [ -z "$DUMP_INSTRUCTION" ]; then
- DUMP_INSTRUCTION="dump_fs $NEWROOT"
-fi
-
-if ! do_kdump_pre; then
- derror "kdump_pre script exited with non-zero status!"
- do_final_action
- # During systemd service to reboot the machine, stop this shell script running
- exit 1
-fi
-make_trace_mem "kdump saving vmcore" '1:shortmem' '2+:mem' '3+:slab'
-do_dump
-DUMP_RETVAL=$?
-
-if ! do_kdump_post $DUMP_RETVAL; then
- derror "kdump_post script exited with non-zero status!"
-fi
-
-save_log
-
-if [ $DUMP_RETVAL -ne 0 ]; then
- exit 1
-fi
-
-do_final_action
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
deleted file mode 100755
index 7e1cb9f..0000000
--- a/dracut-module-setup.sh
+++ /dev/null
@@ -1,1083 +0,0 @@
-#!/bin/bash
-
-_DRACUT_KDUMP_NM_TMP_DIR="$DRACUT_TMPDIR/$$-DRACUT_KDUMP_NM"
-
-_save_kdump_netifs() {
- unique_netifs[$1]=1
-}
-
-_get_kdump_netifs() {
- echo -n "${!unique_netifs[@]}"
-}
-
-kdump_module_init() {
- if ! [[ -d "${initdir}/tmp" ]]; then
- mkdir -p "${initdir}/tmp"
- fi
-
- mkdir -p "$_DRACUT_KDUMP_NM_TMP_DIR"
-
- . /lib/kdump/kdump-lib.sh
-}
-
-check() {
- [[ $debug ]] && set -x
- #kdumpctl sets this explicitly
- if [[ -z $IN_KDUMP ]] || [[ ! -f /etc/kdump.conf ]]; then
- return 1
- fi
- if [[ "$(uname -m)" == "s390x" ]]; then
- require_binaries chzdev || return 1
- fi
- return 0
-}
-
-depends() {
- local _dep="base shutdown"
-
- kdump_module_init
-
- add_opt_module() {
- [[ " $omit_dracutmodules " != *\ $1\ * ]] && _dep="$_dep $1"
- }
-
- if is_squash_available; then
- add_opt_module squash
- else
- dwarning "Required modules to build a squashed kdump image is missing!"
- fi
-
- if is_wdt_active; then
- add_opt_module watchdog
- fi
-
- if is_ssh_dump_target; then
- _dep="$_dep ssh-client"
- fi
-
- if is_lvm2_thinp_dump_target; then
- if dracut --list-modules | grep -q lvmthinpool-monitor; then
- add_opt_module lvmthinpool-monitor
- else
- dwarning "Required lvmthinpool-monitor modules is missing! Please upgrade dracut >= 057."
- fi
- fi
-
- if [[ "$(uname -m)" == "s390x" ]]; then
- _dep="$_dep znet"
- fi
-
- if [[ -n "$(ls -A /sys/class/drm 2> /dev/null)" ]] || [[ -d /sys/module/hyperv_fb ]]; then
- add_opt_module drm
- fi
-
- if is_generic_fence_kdump || is_pcs_fence_kdump; then
- _dep="$_dep network"
- fi
-
- echo "$_dep"
-}
-
-kdump_is_bridge() {
- [[ -d /sys/class/net/"$1"/bridge ]]
-}
-
-kdump_is_bond() {
- [[ -d /sys/class/net/"$1"/bonding ]]
-}
-
-kdump_is_team() {
- [[ -f /usr/bin/teamnl ]] && teamnl "$1" ports &> /dev/null
-}
-
-kdump_is_vlan() {
- [[ -f /proc/net/vlan/"$1" ]]
-}
-
-# $1: repeat times
-# $2: string to be repeated
-# $3: separator
-repeatedly_join_str() {
- local _count="$1"
- local _str="$2"
- local _separator="$3"
- local i _res
-
- if [[ $_count -le 0 ]]; then
- echo -n ""
- return
- fi
-
- i=0
- _res="$_str"
- ((_count--))
-
- while [[ $i -lt $_count ]]; do
- ((i++))
- _res="${_res}${_separator}${_str}"
- done
- echo -n "$_res"
-}
-
-# $1: prefix
-# $2: ipv6_flag="-6" indicates it's IPv6
-# Given a prefix, calculate the netmask (equivalent of "ipcalc -m")
-# by concatenating three parts,
-# 1) the groups with all bits set 1
-# 2) a group with partial bits set to 0
-# 3) the groups with all bits set to 0
-cal_netmask_by_prefix() {
- local _prefix="$1"
- local _ipv6_flag="$2" _ipv6
- local _bits_per_octet=8
- local _count _res _octets_per_group _octets_total _seperator _total_groups
- local _max_group_value _max_group_value_repr _bits_per_group _tmp _zero_bits
-
- if [[ $_ipv6_flag == "-6" ]]; then
- _ipv6=1
- else
- _ipv6=0
- fi
-
- if [[ $_prefix -lt 0 || $_prefix -gt 128 ]] \
- || ( ((!_ipv6)) && [[ $_prefix -gt 32 ]]); then
- derror "Bad prefix:$_prefix for calculating netmask"
- exit 1
- fi
-
- if ((_ipv6)); then
- _octets_per_group=2
- _octets_total=16
- _seperator=":"
- else
- _octets_per_group=1
- _octets_total=4
- _seperator="."
- fi
-
- _total_groups=$((_octets_total / _octets_per_group))
- _bits_per_group=$((_octets_per_group * _bits_per_octet))
- _max_group_value=$(((1 << _bits_per_group) - 1))
-
- if ((_ipv6)); then
- _max_group_value_repr=$(printf "%x" $_max_group_value)
- else
- _max_group_value_repr="$_max_group_value"
- fi
-
- _count=$((_prefix / _octets_per_group / _bits_per_octet))
- _first_part=$(repeatedly_join_str "$_count" "$_max_group_value_repr" "$_seperator")
- _res="$_first_part"
-
- _tmp=$((_octets_total * _bits_per_octet - _prefix))
- _zero_bits=$((_tmp % _bits_per_group))
- if [[ $_zero_bits -ne 0 ]]; then
- _second_part=$((_max_group_value >> _zero_bits << _zero_bits))
- if ((_ipv6)); then
- _second_part=$(printf "%x" $_second_part)
- fi
- ((_count++))
- if [[ -z $_first_part ]]; then
- _res="$_second_part"
- else
- _res="${_first_part}${_seperator}${_second_part}"
- fi
- fi
-
- _count=$((_total_groups - _count))
- if [[ $_count -eq 0 ]]; then
- echo -n "$_res"
- return
- fi
-
- if ((_ipv6)) && [[ $_count -gt 1 ]]; then
- # use condensed notion for IPv6
- _third_part=":"
- else
- _third_part=$(repeatedly_join_str "$_count" "0" "$_seperator")
- fi
-
- if [[ -z $_res ]] && ((!_ipv6)); then
- echo -n "${_third_part}"
- else
- echo -n "${_res}${_seperator}${_third_part}"
- fi
-}
-
-kdump_get_mac_addr() {
- cat "/sys/class/net/$1/address"
-}
-
-#Bonding or team master modifies the mac address
-#of its slaves, we should use perm address
-kdump_get_perm_addr() {
- local addr
- addr=$(ethtool -P "$1" | sed -e 's/Permanent address: //')
- if [[ -z $addr ]] || [[ $addr == "00:00:00:00:00:00" ]]; then
- derror "Can't get the permanent address of $1"
- else
- echo "$addr"
- fi
-}
-
-apply_nm_initrd_generator_timeouts() {
- local _timeout_conf
-
- _timeout_conf=$_DRACUT_KDUMP_NM_TMP_DIR/timeout_conf
- cat << EOF > "$_timeout_conf"
-[device-95-kdump]
-carrier-wait-timeout=30000
-
-[connection-95-kdump]
-ipv4.dhcp-timeout=90
-ipv6.dhcp-timeout=90
-EOF
-
- inst "$_timeout_conf" "/etc/NetworkManager/conf.d/95-kdump-timeouts.conf"
-}
-
-use_ipv4_or_ipv6() {
- local _netif=$1 _uuid=$2
-
- if [[ -v "ipv4_usage[$_netif]" ]]; then
- nmcli connection modify --temporary "$_uuid" ipv4.may-fail no &> >(ddebug)
- fi
-
- if [[ -v "ipv6_usage[$_netif]" ]]; then
- nmcli connection modify --temporary "$_uuid" ipv6.may-fail no &> >(ddebug)
- fi
-
- if [[ -v "ipv4_usage[$_netif]" ]] && [[ ! -v "ipv6_usage[$_netif]" ]]; then
- nmcli connection modify --temporary "$_uuid" ipv6.method disabled &> >(ddebug)
- elif [[ ! -v "ipv4_usage[$_netif]" ]] && [[ -v "ipv6_usage[$_netif]" ]]; then
- nmcli connection modify --temporary "$_uuid" ipv4.method disabled &> >(ddebug)
- fi
-}
-
-_clone_nmconnection() {
- local _clone_output _name _unique_id
-
- _unique_id=$1
- _name=$(nmcli --get-values connection.id connection show "$_unique_id")
- if _clone_output=$(nmcli connection clone --temporary uuid "$_unique_id" "$_name"); then
- sed -E -n "s/.* \(.*\) cloned as.*\((.*)\)\.$/\1/p" <<< "$_clone_output"
- return 0
- fi
-
- return 1
-}
-
-_match_nmconnection_by_mac() {
- local _unique_id _dev _mac _mac_field
-
- _unique_id=$1
- _dev=$2
-
- _mac=$(kdump_get_perm_addr "$_dev")
- [[ $_mac != 'not set' ]] || return
- _mac_field=$(nmcli --get-values connection.type connection show "$_unique_id").mac-address
- nmcli connection modify --temporary "$_unique_id" "$_mac_field" "$_mac" &> >(ddebug)
- nmcli connection modify --temporary "$_unique_id" "connection.interface-name" "" &> >(ddebug)
-}
-
-# Clone and modify NM connection profiles
-#
-# This function makes use of "nmcli clone" to automatically convert ifcfg-*
-# files to Networkmanager .nmconnection connection profiles and also modify the
-# properties of .nmconnection if necessary.
-clone_and_modify_nmconnection() {
- local _dev _cloned_nmconnection_file_path _tmp_nmconnection_file_path _old_uuid _uuid
-
- _dev=$1
- _nmconnection_file_path=$2
-
- _old_uuid=$(nmcli --get-values connection.uuid connection show filename "$_nmconnection_file_path")
-
- if ! _uuid=$(_clone_nmconnection "$_old_uuid"); then
- derror "Failed to clone $_old_uuid"
- exit 1
- fi
-
- use_ipv4_or_ipv6 "$_dev" "$_uuid"
-
- nmcli connection modify --temporary uuid "$_uuid" connection.wait-device-timeout 60000 &> >(ddebug)
- # For physical NIC i.e. non-user created NIC, ask NM to match a
- # connection profile based on MAC address
- _match_nmconnection_by_mac "$_uuid" "$_dev"
-
- # If a value contain ":", nmcli by default escape it with "\:" because it
- # also uses ":" as the delimiter to separate values. In our case, escaping is not needed.
- _cloned_nmconnection_file_path=$(nmcli --escape no --get-values UUID,FILENAME connection show | sed -n "s/^${_uuid}://p")
- _tmp_nmconnection_file_path=$_DRACUT_KDUMP_NM_TMP_DIR/$(basename "$_nmconnection_file_path")
- cp "$_cloned_nmconnection_file_path" "$_tmp_nmconnection_file_path"
- # change uuid back to old value in case it's refered by other connection
- # profile e.g. connection.master could be interface name of the master
- # device or UUID of the master connection.
- sed -i -E "s/(^uuid=).*$/\1${_old_uuid}/g" "$_tmp_nmconnection_file_path"
- nmcli connection del "$_uuid" &> >(ddebug)
- echo -n "$_tmp_nmconnection_file_path"
-}
-
-_install_nmconnection() {
- local _src _nmconnection_name _dst
-
- _src=$1
- _nmconnection_name=$(basename "$_src")
- _dst="/etc/NetworkManager/system-connections/$_nmconnection_name"
- inst "$_src" "$_dst"
-}
-
-kdump_install_nmconnections() {
- local _netif _nm_conn_path _cloned_nm_path
-
- while IFS=: read -r _netif _nm_conn_path; do
- [[ -v "unique_netifs[$_netif]" ]] || continue
- if _cloned_nm_path=$(clone_and_modify_nmconnection "$_netif" "$_nm_conn_path"); then
- _install_nmconnection "$_cloned_nm_path"
- else
- derror "Failed to install the .nmconnection for $_netif"
- exit 1
- fi
- done <<< "$(nmcli -t -f device,filename connection show --active)"
-
- # Stop dracut 35network-manger to calling nm-initrd-generator.
- # Note this line of code can be removed after NetworkManager >= 1.35.2
- # gets released.
- echo > "${initdir}/usr/libexec/nm-initrd-generator"
-}
-
-kdump_install_nm_netif_allowlist() {
- local _netif _except_netif _netif_allowlist _netif_allowlist_nm_conf
-
- for _netif in $1; do
- _per_mac=$(kdump_get_perm_addr "$_netif")
- if [[ "$_per_mac" != 'not set' ]]; then
- _except_netif="mac:$_per_mac"
- else
- _except_netif="interface-name:$_netif"
- fi
- _netif_allowlist="${_netif_allowlist}except:${_except_netif};"
- done
-
- _netif_allowlist_nm_conf=$_DRACUT_KDUMP_NM_TMP_DIR/netif_allowlist_nm_conf
- cat << EOF > "$_netif_allowlist_nm_conf"
-[device-others]
-match-device=${_netif_allowlist}
-managed=false
-EOF
-
- inst "$_netif_allowlist_nm_conf" "/etc/NetworkManager/conf.d/10-kdump-netif_allowlist.conf"
-}
-
-_get_nic_driver() {
- ethtool -i "$1" | sed -n -E "s/driver: (.*)/\1/p"
-}
-
-_get_hpyerv_physical_driver() {
- local _physical_nic
-
- _physical_nic=$(find /sys/class/net/"$1"/ -name 'lower_*' | sed -En "s/\/.*lower_(.*)/\1/p")
- [[ -n $_physical_nic ]] || return
- _get_nic_driver "$_physical_nic"
-}
-
-kdump_install_nic_driver() {
- local _netif _driver _drivers
-
- _drivers=()
-
- for _netif in $1; do
- [[ $_netif == lo ]] && continue
- _driver=$(_get_nic_driver "$_netif")
- if [[ -z $_driver ]]; then
- derror "Failed to get the driver of $_netif"
- exit 1
- fi
-
- if [[ $_driver == "802.1Q VLAN Support" ]]; then
- # ethtool somehow doesn't return the driver name for a VLAN NIC
- _driver=8021q
- elif [[ $_driver == "team" ]]; then
- # install the team mode drivers like team_mode_roundrobin.ko as well
- _driver='=drivers/net/team'
- elif [[ $_driver == "hv_netvsc" ]]; then
- # A Hyper-V VM may have accelerated networking
- # https://learn.microsoft.com/en-us/azure/virtual-network/accelerated-netwo...
- # Install the driver of physical NIC as well
- _drivers+=("$(_get_hpyerv_physical_driver "$_netif")")
- fi
-
- _drivers+=("$_driver")
- done
-
- [[ -n ${_drivers[*]} ]] || return
- instmods "${_drivers[@]}"
-}
-
-kdump_setup_bridge() {
- local _netdev=$1
- local _dev
- for _dev in "/sys/class/net/$_netdev/brif/"*; do
- [[ -e $_dev ]] || continue
- _dev=${_dev##*/}
- if kdump_is_bond "$_dev"; then
- kdump_setup_bond "$_dev" || return 1
- elif kdump_is_team "$_dev"; then
- kdump_setup_team "$_dev"
- elif kdump_is_vlan "$_dev"; then
- kdump_setup_vlan "$_dev"
- fi
- _save_kdump_netifs "$_dev"
- done
-}
-
-kdump_setup_bond() {
- local _netdev="$1"
- local _dev
-
- for _dev in $(< "/sys/class/net/$_netdev/bonding/slaves"); do
- _save_kdump_netifs "$_dev"
- done
-}
-
-kdump_setup_team() {
- local _netdev=$1
- local _dev
- for _dev in $(teamnl "$_netdev" ports | awk -F':' '{print $2}'); do
- _save_kdump_netifs "$_dev"
- done
-}
-
-kdump_setup_vlan() {
- local _netdev=$1
- local _parent_netif
-
- _parent_netif="$(awk '/^Device:/{print $2}' /proc/net/vlan/"$_netdev")"
-
- #Just support vlan over bond and team
- if kdump_is_bridge "$_parent_netif"; then
- derror "Vlan over bridge is not supported!"
- exit 1
- elif kdump_is_bond "$_parent_netif"; then
- kdump_setup_bond "$_parent_netif" || return 1
- elif kdump_is_team "$_parent_netif"; then
- kdump_setup_team "$_parent_netif" || return 1
- fi
-
- _save_kdump_netifs "$_parent_netif"
-}
-
-# setup s390 znet
-kdump_setup_znet() {
- local _netif
- local _tempfile=$(mktemp --tmpdir="$_DRACUT_KDUMP_NM_TMP_DIR" kdump-dracut-zdev.XXXXXX)
-
- if [[ "$(uname -m)" != "s390x" ]]; then
- return
- fi
-
- for _netif in $1; do
- chzdev --export "$_tempfile" --active --by-interface "$_netif" \
- 2>&1 | ddebug
- sed -i -e 's/^\[active /\[persistent /' "$_tempfile"
- ddebug < "$_tempfile"
- chzdev --import "$_tempfile" --persistent --base "/etc=$initdir/etc" \
- --yes --no-root-update --force 2>&1 | ddebug
- lszdev --configured --persistent --info --by-interface "$_netif" \
- --base "/etc=$initdir/etc" 2>&1 | ddebug
- done
- rm -f "$_tempfile"
-}
-
-kdump_get_remote_ip() {
- local _remote _remote_temp
- _remote=$(get_remote_host "$1")
- if is_hostname "$_remote"; then
- _remote_temp=$(getent ahosts "$_remote" | grep -v : | head -n 1)
- if [[ -z $_remote_temp ]]; then
- _remote_temp=$(getent ahosts "$_remote" | head -n 1)
- fi
- _remote=$(echo "$_remote_temp" | awk '{print $1}')
- fi
- echo "$_remote"
-}
-
-# Collect netifs needed by kdump
-# $1: destination host
-kdump_collect_netif_usage() {
- local _destaddr _srcaddr _route _netdev
-
- _destaddr=$(kdump_get_remote_ip "$1")
-
- if ! _route=$(kdump_get_ip_route "$_destaddr"); then
- derror "Bad kdump network destination: $_destaddr"
- exit 1
- fi
-
- _srcaddr=$(kdump_get_ip_route_field "$_route" "src")
- _netdev=$(kdump_get_ip_route_field "$_route" "dev")
-
- if kdump_is_bridge "$_netdev"; then
- kdump_setup_bridge "$_netdev"
- elif kdump_is_bond "$_netdev"; then
- kdump_setup_bond "$_netdev" || return 1
- elif kdump_is_team "$_netdev"; then
- kdump_setup_team "$_netdev"
- elif kdump_is_vlan "$_netdev"; then
- kdump_setup_vlan "$_netdev"
- fi
- _save_kdump_netifs "$_netdev"
-
- if [[ ! -f ${initdir}/etc/cmdline.d/50neednet.conf ]]; then
- # network-manager module needs this parameter
- echo "rd.neednet" >> "${initdir}/etc/cmdline.d/50neednet.conf"
- fi
-
- if [[ ! -f ${initdir}/etc/cmdline.d/60kdumpip.conf ]]; then
- echo "kdump_remote_ip=$_destaddr" > "${initdir}/etc/cmdline.d/60kdumpip.conf"
- fi
-
- if is_ipv6_address "$_srcaddr"; then
- ipv6_usage[$_netdev]=1
- else
- ipv4_usage[$_netdev]=1
- fi
-}
-
-kdump_install_resolv_conf() {
- local _resolv_conf=/etc/resolv.conf _nm_conf_dir=/etc/NetworkManager/conf.d
-
- # Some users may choose to manage /etc/resolve.conf manually [1]
- # by setting dns=none or use a symbolic link resolve.conf [2].
- # So resolve.conf should be installed to kdump initrd as well. To prevent
- # NM frome overwritting the user-configured resolve.conf in kdump initrd,
- # also set dns=none for NM.
- #
- # Note:
- # 1. When resolv.conf is managed by systemd-resolved.service, it could also be a
- # symbolic link. So exclude this case by teling if systemd-resolved is enabled.
- #
- # 2. It's harmless to blindly copy /etc/resolve.conf to the initrd because
- # by default in initramfs this file will be overwritten by
- # NetworkManager. If user manages it via a symbolic link, it's still
- # preserved because NM won't touch a symbolic link file.
- #
- # [1] https://bugzilla.gnome.org/show_bug.cgi?id=690404
- # [2] https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/...
- systemctl -q is-enabled systemd-resolved 2> /dev/null && return 0
- inst "$_resolv_conf"
- if NetworkManager --print-config | grep -qs "^dns=none"; then
- printf "[main]\ndns=none\n" > "${initdir}/${_nm_conf_dir}"/90-dns-none.conf
- fi
-}
-
-# Setup dracut to bring up network interface that enable
-# initramfs accessing giving destination
-kdump_install_net() {
- local _netifs
-
- _netifs=$(_get_kdump_netifs)
- if [[ -n "$_netifs" ]]; then
- kdump_install_nmconnections
- apply_nm_initrd_generator_timeouts
- kdump_setup_znet "$_netifs"
- kdump_install_nm_netif_allowlist "$_netifs"
- kdump_install_nic_driver "$_netifs"
- kdump_install_resolv_conf
- fi
-}
-
-# install etc/kdump/pre.d and /etc/kdump/post.d
-kdump_install_pre_post_conf() {
- if [[ -d /etc/kdump/pre.d ]]; then
- for file in /etc/kdump/pre.d/*; do
- if [[ -x $file ]]; then
- dracut_install "$file"
- elif [[ $file != "/etc/kdump/pre.d/*" ]]; then
- echo "$file is not executable"
- fi
- done
- fi
-
- if [[ -d /etc/kdump/post.d ]]; then
- for file in /etc/kdump/post.d/*; do
- if [[ -x $file ]]; then
- dracut_install "$file"
- elif [[ $file != "/etc/kdump/post.d/*" ]]; then
- echo "$file is not executable"
- fi
- done
- fi
-}
-
-default_dump_target_install_conf() {
- local _target _fstype
- local _mntpoint _save_path
-
- is_user_configured_dump_target && return
-
- _save_path=$(get_bind_mount_source "$(get_save_path)")
- _target=$(get_target_from_path "$_save_path")
- _mntpoint=$(get_mntpoint_from_target "$_target")
-
- _fstype=$(get_fs_type_from_target "$_target")
- if is_fs_type_nfs "$_fstype"; then
- kdump_collect_netif_usage "$_target"
- _fstype="nfs"
- else
- _target=$(kdump_get_persistent_dev "$_target")
- fi
-
- echo "$_fstype $_target" >> "${initdir}/tmp/$$-kdump.conf"
-
- # don't touch the path under root mount
- if [[ $_mntpoint != "/" ]]; then
- _save_path=${_save_path##"$_mntpoint"}
- fi
-
- #erase the old path line, then insert the parsed path
- sed -i "/^path/d" "${initdir}/tmp/$$-kdump.conf"
- echo "path $_save_path" >> "${initdir}/tmp/$$-kdump.conf"
-}
-
-#install kdump.conf and what user specifies in kdump.conf
-kdump_install_conf() {
- local _opt _val _pdev
-
- kdump_read_conf > "${initdir}/tmp/$$-kdump.conf"
-
- while read -r _opt _val; do
- # remove inline comments after the end of a directive.
- case "$_opt" in
- raw)
- _pdev=$(persistent_policy="by-id" kdump_get_persistent_dev "$_val")
- sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#" "${initdir}/tmp/$$-kdump.conf"
- ;;
- ext[234] | xfs | btrfs | minix | virtiofs)
- _pdev=$(kdump_get_persistent_dev "$_val")
- sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#" "${initdir}/tmp/$$-kdump.conf"
- ;;
- ssh | nfs)
- kdump_collect_netif_usage "$_val"
- ;;
- dracut_args)
- if [[ $(get_dracut_args_fstype "$_val") == nfs* ]]; then
- kdump_collect_netif_usage "$(get_dracut_args_target "$_val")"
- fi
- ;;
- kdump_pre | kdump_post | extra_bins)
- # shellcheck disable=SC2086
- dracut_install $_val
- ;;
- core_collector)
- dracut_install "${_val%%[[:blank:]]*}"
- ;;
- esac
- done <<< "$(kdump_read_conf)"
-
- kdump_install_pre_post_conf
-
- default_dump_target_install_conf
-
- kdump_configure_fence_kdump "${initdir}/tmp/$$-kdump.conf"
- inst "${initdir}/tmp/$$-kdump.conf" "/etc/kdump.conf"
- rm -f "${initdir}/tmp/$$-kdump.conf"
-}
-
-# Default sysctl parameters should suffice for kdump kernel.
-# Remove custom configurations sysctl.conf & sysctl.d/*
-remove_sysctl_conf() {
-
- # As custom configurations like vm.min_free_kbytes can lead
- # to OOM issues in kdump kernel, avoid them
- rm -f "${initdir}/etc/sysctl.conf"
- rm -rf "${initdir}/etc/sysctl.d"
- rm -rf "${initdir}/run/sysctl.d"
- rm -rf "${initdir}/usr/lib/sysctl.d"
-}
-
-kdump_iscsi_get_rec_val() {
-
- local result
-
- # The open-iscsi 742 release changed to using flat files in
- # /var/lib/iscsi.
-
- result=$(/sbin/iscsiadm --show -m session -r "$1" | grep "^${2} = ")
- result=${result##* = }
- echo "$result"
-}
-
-kdump_get_iscsi_initiator() {
- local _initiator
- local initiator_conf="/etc/iscsi/initiatorname.iscsi"
-
- [[ -f $initiator_conf ]] || return 1
-
- while read -r _initiator; do
- [[ -z ${_initiator%%#*} ]] && continue # Skip comment lines
-
- case $_initiator in
- InitiatorName=*)
- initiator=${_initiator#InitiatorName=}
- echo "rd.iscsi.initiator=${initiator}"
- return 0
- ;;
- *) ;;
- esac
- done < ${initiator_conf}
-
- return 1
-}
-
-# Figure out iBFT session according to session type
-is_ibft() {
- [[ "$(kdump_iscsi_get_rec_val "$1" "node.discovery_type")" == fw ]]
-}
-
-kdump_setup_iscsi_device() {
- local path=$1
- local tgt_name
- local tgt_ipaddr
- local username
- local password
- local userpwd_str
- local username_in
- local password_in
- local userpwd_in_str
- local netroot_str
- local initiator_str
- local netroot_conf="${initdir}/etc/cmdline.d/50iscsi.conf"
- local initiator_conf="/etc/iscsi/initiatorname.iscsi"
-
- dinfo "Found iscsi component $1"
-
- # Check once before getting explicit values, so we can bail out early,
- # e.g. in case of pure-hardware(all-offload) iscsi.
- if ! /sbin/iscsiadm -m session -r "$path" &> /dev/null; then
- return 1
- fi
-
- if is_ibft "$path"; then
- return
- fi
-
- # Remove software iscsi cmdline generated by 95iscsi,
- # and let kdump regenerate here.
- rm -f "${initdir}/etc/cmdline.d/95iscsi.conf"
-
- tgt_name=$(kdump_iscsi_get_rec_val "$path" "node.name")
- tgt_ipaddr=$(kdump_iscsi_get_rec_val "$path" "node.conn\[0\].address")
-
- # get and set username and password details
- username=$(kdump_iscsi_get_rec_val "$path" "node.session.auth.username")
- [[ $username == "<empty>" ]] && username=""
- password=$(kdump_iscsi_get_rec_val "$path" "node.session.auth.password")
- [[ $password == "<empty>" ]] && password=""
- username_in=$(kdump_iscsi_get_rec_val "$path" "node.session.auth.username_in")
- [[ -n $username ]] && userpwd_str="$username:$password"
-
- # get and set incoming username and password details
- [[ $username_in == "<empty>" ]] && username_in=""
- password_in=$(kdump_iscsi_get_rec_val "$path" "node.session.auth.password_in")
- [[ $password_in == "<empty>" ]] && password_in=""
-
- [[ -n $username_in ]] && userpwd_in_str=":$username_in:$password_in"
-
- kdump_collect_netif_usage "$tgt_ipaddr"
-
- # prepare netroot= command line
- # FIXME: Do we need to parse and set other parameters like protocol, port
- # iscsi_iface_name, netdev_name, LUN etc.
-
- if is_ipv6_address "$tgt_ipaddr"; then
- tgt_ipaddr="[$tgt_ipaddr]"
- fi
- netroot_str="netroot=iscsi:${userpwd_str}${userpwd_in_str}@$tgt_ipaddr::::$tgt_name"
-
- [[ -f $netroot_conf ]] || touch "$netroot_conf"
-
- # If netroot target does not exist already, append.
- if ! grep -q "$netroot_str" "$netroot_conf"; then
- echo "$netroot_str" >> "$netroot_conf"
- dinfo "Appended $netroot_str to $netroot_conf"
- fi
-
- # Setup initator
- if ! initiator_str=$(kdump_get_iscsi_initiator); then
- derror "Failed to get initiator name"
- return 1
- fi
-
- # If initiator details do not exist already, append.
- if ! grep -q "$initiator_str" "$netroot_conf"; then
- echo "$initiator_str" >> "$netroot_conf"
- dinfo "Appended $initiator_str to $netroot_conf"
- fi
-}
-
-kdump_check_iscsi_targets() {
- # If our prerequisites are not met, fail anyways.
- type -P iscsistart > /dev/null || return 1
-
- kdump_check_setup_iscsi() {
- local _dev
- _dev=$1
-
- [[ -L /sys/dev/block/$_dev ]] || return
- cd "$(readlink -f "/sys/dev/block/$_dev")" || return 1
- until [[ -d sys || -d iscsi_session ]]; do
- cd ..
- done
- [[ -d iscsi_session ]] && kdump_setup_iscsi_device "$PWD"
- }
-
- [[ $hostonly ]] || [[ $mount_needs ]] && {
- for_each_host_dev_and_slaves_all kdump_check_setup_iscsi
- }
-}
-
-# hostname -a is deprecated, do it by ourself
-get_alias() {
- local ips
- local entries
- local alias_set
-
- ips=$(hostname -I)
- for ip in $ips; do
- # in /etc/hosts, alias can come at the 2nd column
- if entries=$(grep "$ip" /etc/hosts | awk '{ $1=""; print $0 }'); then
- alias_set="$alias_set $entries"
- fi
- done
-
- echo "$alias_set"
-}
-
-is_localhost() {
- local hostnames
- local shortnames
- local aliasname
- local nodename=$1
-
- hostnames=$(hostname -A)
- shortnames=$(hostname -A -s)
- aliasname=$(get_alias)
- hostnames="$hostnames $shortnames $aliasname"
-
- for name in ${hostnames}; do
- if [[ $name == "$nodename" ]]; then
- return 0
- fi
- done
- return 1
-}
-
-# retrieves fence_kdump nodes from Pacemaker cluster configuration
-get_pcs_fence_kdump_nodes() {
- local nodes
-
- pcs cluster sync > /dev/null 2>&1 && pcs cluster cib-upgrade > /dev/null 2>&1
- # get cluster nodes from cluster cib, get interface and ip address
- nodelist=$(pcs cluster cib | xmllint --xpath "/cib/status/node_state/@uname" -)
-
- # nodelist is formed as 'uname="node1" uname="node2" ... uname="nodeX"'
- # we need to convert each to node1, node2 ... nodeX in each iteration
- for node in ${nodelist}; do
- # convert $node from 'uname="nodeX"' to 'nodeX'
- eval "$node"
- nodename="$uname"
- # Skip its own node name
- if is_localhost "$nodename"; then
- continue
- fi
- nodes="$nodes $nodename"
- done
-
- echo "$nodes"
-}
-
-# retrieves fence_kdump args from config file
-get_pcs_fence_kdump_args() {
- if [[ -f $FENCE_KDUMP_CONFIG_FILE ]]; then
- . "$FENCE_KDUMP_CONFIG_FILE"
- echo "$FENCE_KDUMP_OPTS"
- fi
-}
-
-get_generic_fence_kdump_nodes() {
- local filtered
- local nodes
-
- nodes=$(kdump_get_conf_val "fence_kdump_nodes")
- for node in ${nodes}; do
- # Skip its own node name
- if is_localhost "$node"; then
- continue
- fi
- filtered="$filtered $node"
- done
- echo "$filtered"
-}
-
-# setup fence_kdump in cluster
-# setup proper network and install needed files
-kdump_configure_fence_kdump() {
- local kdump_cfg_file=$1
- local nodes
- local args
-
- if is_generic_fence_kdump; then
- nodes=$(get_generic_fence_kdump_nodes)
-
- elif is_pcs_fence_kdump; then
- nodes=$(get_pcs_fence_kdump_nodes)
-
- # set appropriate options in kdump.conf
- echo "fence_kdump_nodes $nodes" >> "${kdump_cfg_file}"
-
- args=$(get_pcs_fence_kdump_args)
- if [[ -n $args ]]; then
- echo "fence_kdump_args $args" >> "${kdump_cfg_file}"
- fi
-
- else
- # fence_kdump not configured
- return 1
- fi
-
- # setup network for each node
- for node in ${nodes}; do
- kdump_collect_netif_usage "$node"
- done
-
- dracut_install /etc/hosts
- dracut_install /etc/nsswitch.conf
- dracut_install "$FENCE_KDUMP_SEND"
-}
-
-# Install a random seed used to feed /dev/urandom
-# By the time kdump service starts, /dev/uramdom is already fed by systemd
-kdump_install_random_seed() {
- local poolsize
-
- poolsize=$(< /proc/sys/kernel/random/poolsize)
-
- if [[ ! -d "${initdir}/var/lib/" ]]; then
- mkdir -p "${initdir}/var/lib/"
- fi
-
- dd if=/dev/urandom of="${initdir}/var/lib/random-seed" \
- bs="$poolsize" count=1 2> /dev/null
-}
-
-kdump_install_systemd_conf() {
- # Kdump turns out to require longer default systemd mount timeout
- # than 1st kernel(90s by default), we use default 300s for kdump.
- if ! grep -q -r "^[[:space:]]*DefaultTimeoutStartSec=" "${initdir}/etc/systemd/system.conf"*; then
- mkdir -p "${initdir}/etc/systemd/system.conf.d"
- echo "[Manager]" > "${initdir}/etc/systemd/system.conf.d/kdump.conf"
- echo "DefaultTimeoutStartSec=300s" >> "${initdir}/etc/systemd/system.conf.d/kdump.conf"
- fi
-
- # Forward logs to console directly, and don't read Kmsg, this avoids
- # unneccessary memory consumption and make console output more useful.
- # Only do so for non fadump image.
- mkdir -p "${initdir}/etc/systemd/journald.conf.d"
- echo "[Journal]" > "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
- echo "Storage=volatile" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
- echo "ReadKMsg=no" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
- echo "ForwardToConsole=yes" >> "${initdir}/etc/systemd/journald.conf.d/kdump.conf"
-}
-
-remove_cpu_online_rule() {
- local file=${initdir}/usr/lib/udev/rules.d/40-redhat.rules
-
- if [[ -f $file ]]; then
- sed -i '/SUBSYSTEM=="cpu"/d' "$file"
- fi
-}
-
-install() {
- declare -A unique_netifs ipv4_usage ipv6_usage
- local arch
-
- kdump_module_init
- kdump_install_conf
- remove_sysctl_conf
-
- # Onlining secondary cpus breaks kdump completely on KVM on Power hosts
- # Though we use maxcpus=1 by default but 40-redhat.rules will bring up all
- # possible cpus by default. (rhbz1270174 rhbz1266322)
- # Thus before we get the kernel fix and the systemd rule fix let's remove
- # the cpu online rule in kdump initramfs.
- arch=$(uname -m)
- if [[ "$arch" = "ppc64le" ]] || [[ "$arch" = "ppc64" ]]; then
- remove_cpu_online_rule
- fi
-
- if is_ssh_dump_target; then
- kdump_install_random_seed
- fi
- dracut_install -o /etc/adjtime /etc/localtime
- inst "$moddir/monitor_dd_progress.sh" "/kdumpscripts/monitor_dd_progress.sh"
- inst "/bin/dd" "/bin/dd"
- inst "/bin/tail" "/bin/tail"
- inst "/bin/date" "/bin/date"
- inst "/bin/sync" "/bin/sync"
- inst "/bin/cut" "/bin/cut"
- inst "/bin/head" "/bin/head"
- inst "/bin/awk" "/bin/awk"
- inst "/bin/sed" "/bin/sed"
- inst "/bin/stat" "/bin/stat"
- inst "/sbin/makedumpfile" "/sbin/makedumpfile"
- inst "/sbin/vmcore-dmesg" "/sbin/vmcore-dmesg"
- inst "/usr/bin/printf" "/sbin/printf"
- inst "/usr/bin/logger" "/sbin/logger"
- inst "/usr/bin/chmod" "/sbin/chmod"
- inst "/lib/kdump/kdump-lib-initramfs.sh" "/lib/kdump-lib-initramfs.sh"
- inst "/lib/kdump/kdump-logger.sh" "/lib/kdump-logger.sh"
- inst "$moddir/kdump.sh" "/usr/bin/kdump.sh"
- inst "$moddir/kdump-capture.service" "$systemdsystemunitdir/kdump-capture.service"
- systemctl -q --root "$initdir" add-wants initrd.target kdump-capture.service
- # Replace existing emergency service and emergency target
- cp "$moddir/kdump-emergency.service" "$initdir/$systemdsystemunitdir/emergency.service"
- cp "$moddir/kdump-emergency.target" "$initdir/$systemdsystemunitdir/emergency.target"
- # Also redirect dracut-emergency to kdump error handler
- ln_r "$systemdsystemunitdir/emergency.service" "$systemdsystemunitdir/dracut-emergency.service"
-
- # Check for all the devices and if any device is iscsi, bring up iscsi
- # target. Ideally all this should be pushed into dracut iscsi module
- # at some point of time.
- kdump_check_iscsi_targets
-
- kdump_install_systemd_conf
-
- # nfs/ssh dump will need to get host ip in second kernel and need to call 'ip' tool, see get_host_ip for more detail
- if is_nfs_dump_target || is_ssh_dump_target; then
- inst "ip"
- fi
-
- kdump_install_net
-
- # For the lvm type target under kdump, in /etc/lvm/lvm.conf we can
- # safely replace "reserved_memory=XXXX"(default value is 8192) with
- # "reserved_memory=1024" to lower memory pressure under kdump. We do
- # it unconditionally here, if "/etc/lvm/lvm.conf" doesn't exist, it
- # actually does nothing.
- sed -i -e \
- 's/\(^[[:space:]]*reserved_memory[[:space:]]*=\)[[:space:]]*[[:digit:]]*/\1 1024/' \
- "${initdir}/etc/lvm/lvm.conf" &> /dev/null
-
- # Skip initrd-cleanup.service and initrd-parse-etc.service becasue we don't
- # need to switch root. Instead of removing them, we use ConditionPathExists
- # to check if /proc/vmcore exists to determine if we are in kdump.
- sed -i '/\[Unit\]/a ConditionPathExists=!\/proc\/vmcore' \
- "${initdir}/${systemdsystemunitdir}/initrd-cleanup.service" &> /dev/null
-
- sed -i '/\[Unit\]/a ConditionPathExists=!\/proc\/vmcore' \
- "${initdir}/${systemdsystemunitdir}/initrd-parse-etc.service" &> /dev/null
-
- # Save more memory by dropping switch root capability
- dracut_no_switch_root
-}
diff --git a/dracut-monitor_dd_progress.sh b/dracut-monitor_dd_progress.sh
deleted file mode 100644
index e139d33..0000000
--- a/dracut-monitor_dd_progress.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-
-SRC_FILE_MB=$1
-
-while true
-do
- DD_PID=`pidof dd`
- if [ -n "$DD_PID" ]; then
- break
- fi
-done
-
-while true
-do
- sleep 5
- if [ ! -d /proc/$DD_PID ]; then
- break
- fi
-
- kill -s USR1 $DD_PID
- CURRENT_SIZE=`tail -n 1 /tmp/dd_progress_file | sed "s/[^0-9].*//g"`
- [ -n "$CURRENT_SIZE" ] && {
- CURRENT_MB=$(($CURRENT_SIZE / 1048576))
- echo -e "Copied $CURRENT_MB MB / $SRC_FILE_MB MB\r"
- }
-done
-
-rm -f /tmp/dd_progress_file
diff --git a/early-kdump-howto.txt b/early-kdump-howto.txt
deleted file mode 100644
index 68b23c7..0000000
--- a/early-kdump-howto.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-Early Kdump HOWTO
-
-Introduction
-------------
-
-Early kdump is a mechanism to make kdump operational earlier than normal kdump
-service. The kdump service starts early enough for general crash cases, but
-there are some cases where it has no chance to make kdump operational in boot
-sequence, such as detecting devices and starting early services. If you hit
-such a case, early kdump may allow you to get more information of it.
-
-Early kdump is implemented as a dracut module. It adds a kernel (vmlinuz) and
-initramfs for kdump to your system's initramfs in order to load them as early
-as possible. After that, if you provide "rd.earlykdump" in kernel command line,
-then in the initramfs, early kdump will load those files like the normal kdump
-service. This is disabled by default.
-
-For the normal kdump service, it can check whether the early kdump has loaded
-the crash kernel and initramfs. It has no conflict with the early kdump.
-
-How to configure early kdump
-----------------------------
-
-We assume if you're reading this document, you should already have kexec-tools
-installed.
-
-You can rebuild the initramfs with earlykdump support with below steps:
-
-1. start kdump service to make sure kdump initramfs is created.
-
- # systemctl start kdump
-
- NOTE: If a crash occurs during boot process, early kdump captures a vmcore
- and reboot the system by default, so the system might go into crash loop.
- You can avoid such a crash loop by adding the following settings, which
- power off the system after dump capturing, to kdump.conf in advance:
-
- final_action poweroff
- failure_action poweroff
-
- For the failure_action, you can choose anything other than "reboot".
-
-2. rebuild system initramfs with earlykdump support.
-
- # dracut --force --add earlykdump
-
- NOTE: Recommend to backup the original system initramfs before performing
- this step to put it back if something happens during boot-up.
-
-3. add rd.earlykdump in grub kernel command line.
-
-After making said changes, reboot your system to take effect. Of course, if you
-want to disable early kdump, you can simply remove "rd.earlykdump" from kernel
-boot parameters in grub, and reboot system like above.
-
-Once the boot is completed, you can check the status of the early kdump support
-on the command prompt:
-
- # journalctl -b | grep early-kdump
-
-Then, you will see some useful logs, for example:
-
-- if early kdump is successful.
-
-Mar 09 09:57:56 localhost dracut-cmdline[190]: early-kdump is enabled.
-Mar 09 09:57:56 localhost dracut-cmdline[190]: kexec: loaded early-kdump kernel
-
-- if early kdump is disabled.
-
-Mar 09 10:02:47 localhost dracut-cmdline[189]: early-kdump is disabled.
-
-Notes
------
-
-- The size of early kdump initramfs will be large because it includes vmlinuz
- and kdump initramfs.
-
-- Early kdump inherits the settings of normal kdump, so any changes that
- caused normal kdump rebuilding also require rebuilding the system initramfs
- to make sure that the changes take effect for early kdump. Therefore, after
- the rebuilding of kdump initramfs is completed, provide a prompt message to
- tell the fact.
-
-- If you install an updated kernel and reboot the system with it, the early
- kdump will be disabled by default. To enable it with the new kernel, you
- need to take the above steps again.
-
-Limitation
-----------
-
-- At present, early kdump doesn't support fadump.
-
-- Early kdump loads a crash kernel and initramfs at the beginning of the
- process in system's initramfs, so a crash at earlier than that (e.g. in
- kernel initialization) cannot be captured even with the early kdump.
diff --git a/fadump-howto.txt b/fadump-howto.txt
deleted file mode 100644
index 2fe76cf..0000000
--- a/fadump-howto.txt
+++ /dev/null
@@ -1,359 +0,0 @@
-Firmware assisted dump (fadump) HOWTO
-
-Introduction
-
-Firmware assisted dump is a new feature in the 3.4 mainline kernel supported
-only on powerpc architecture. The goal of firmware-assisted dump is to enable
-the dump of a crashed system, and to do so from a fully-reset system, and to
-minimize the total elapsed time until the system is back in production use. A
-complete documentation on implementation can be found at
-Documentation/powerpc/firmware-assisted-dump.txt in upstream linux kernel tree
-from 3.4 version and above.
-
-Please note that the firmware-assisted dump feature is only available on Power6
-and above systems with recent firmware versions.
-
-Overview
-
-Fadump
-
-Fadump is a robust kernel crash dumping mechanism to get reliable kernel crash
-dump with assistance from firmware. This approach does not use kexec, instead
-firmware assists in booting the kdump kernel while preserving memory contents.
-Unlike kdump, the system is fully reset, and loaded with a fresh copy of the
-kernel. In particular, PCI and I/O devices are reinitialized and are in a
-clean, consistent state. This second kernel, often called a capture kernel,
-boots with very little memory and captures the dump image.
-
-The first kernel registers the sections of memory with the Power firmware for
-dump preservation during OS initialization. These registered sections of memory
-are reserved by the first kernel during early boot. When a system crashes, the
-Power firmware fully resets the system, preserves all the system memory
-contents, save the low memory (boot memory of size larger of 5% of system
-RAM or 256MB) of RAM to the previous registered region. It will also save
-system registers, and hardware PTE's.
-
-Fadump is supported only on ppc64 platform. The standard kernel and capture
-kernel are one and the same on ppc64.
-
-If you're reading this document, you should already have kexec-tools
-installed. If not, you install it via the following command:
-
- # dnf install kexec-tools
-
-Fadump Operational Flow:
-
-Like kdump, fadump also exports the ELF formatted kernel crash dump through
-/proc/vmcore. Hence existing kdump infrastructure can be used to capture fadump
-vmcore. The idea is to keep the functionality transparent to end user. From
-user perspective there is no change in the way kdump init script works.
-
-However, unlike kdump, fadump does not pre-load kdump kernel and initrd into
-reserved memory, instead it always uses default OS initrd during second boot
-after crash. Hence, for fadump, we rebuild the new kdump initrd and replace it
-with default initrd. Before replacing existing default initrd we take a backup
-of original default initrd for user's reference. The dracut package has been
-enhanced to rebuild the default initrd with vmcore capture steps. The initrd
-image is rebuilt as per the configuration in /etc/kdump.conf file.
-
-The control flow of fadump works as follows:
-01. System panics.
-02. At the crash, kernel informs power firmware that kernel has crashed.
-03. Firmware takes the control and reboots the entire system preserving
- only the memory (resets all other devices).
-04. The reboot follows the normal booting process (non-kexec).
-05. The boot loader loads the default kernel and initrd from /boot
-06. The default initrd loads and runs /init
-07. dracut-kdump.sh script present in fadump aware default initrd checks if
- '/proc/device-tree/rtas/ibm,kernel-dump' file exists before executing
- steps to capture vmcore.
- (This check will help to bypass the vmcore capture steps during normal boot
- process.)
-09. Captures dump according to /etc/kdump.conf
-10. Is dump capture successful (yes goto 12, no goto 11)
-11. Perform the failure action specified in /etc/kdump.conf
- (The default failure action is reboot, if unspecified)
-12. Perform the final action specified in /etc/kdump.conf
- (The default final action is reboot, if unspecified)
-
-
-How to configure fadump:
-
-Again, we assume if you're reading this document, you should already have
-kexec-tools installed. If not, you install it via the following command:
-
- # dnf install kexec-tools
-
-Make the kernel to be configured with FADump as the default boot entry, if
-it isn't already:
-
- # grubby --set-default=/boot/vmlinuz-<kver>
-
-Boot into the kernel to be configured for FADump. To be able to do much of
-anything interesting in the way of debug analysis, you'll also need to install
-the kernel-debuginfo package, of the same arch as your running kernel, and the
-crash utility:
-
- # dnf --enablerepo=\*debuginfo install kernel-debuginfo.$(uname -m) crash
-
-Next up, we can enable firmware assisted dump and reserve the memory for boot
-memory preservation as specified in in the table of 'FADump Memory Requirements'
-section:
-
- # kdumpctl reset-crashkernel --fadump=on
-
-Alternatively, you can use grubby to reserve custom amount of memory:
-
- # grubby --args="fadump=on crashkernel=6G" --update-kernel=/boot/vmlinuz-`uname -r`
-
-By default, FADump reserved memory will be initialized as CMA area to make the
-memory available through CMA allocator on the production kernel. We can opt out
-of this, making reserved memory unavailable to production kernel, by booting the
-linux kernel with 'fadump=nocma' instead of 'fadump=on':
-
- # kdumpctl reset-crashkernel --fadump=nocma
-
-The term 'boot memory' means size of the low memory chunk that is required for
-a kernel to boot successfully when booted with restricted memory. By default,
-the boot memory size will be the larger of 5% of system RAM or 256MB.
-Alternatively, user can also specify boot memory size through boot parameter
-'fadump_reserve_mem=' which will override the default calculated size. Use this
-option if default boot memory size is not sufficient for second kernel to boot
-successfully.
-
-After making said changes, reboot your system, so that the specified memory is
-reserved and left untouched by the normal system. Take note that the output of
-'free -m' will show X MB less memory than without this parameter, which is
-expected. If you see OOM (Out Of Memory) error messages while loading capture
-kernel, then you should bump up the memory reservation size.
-
-Now that you've got that reserved memory region set up, you want to turn on
-the kdump init script:
-
- # systemctl enable kdump.service
-
-Then, start up kdump as well:
-
- # systemctl start kdump.service
-
-This should turn on the firmware assisted functionality in kernel by
-echo'ing 1 to /sys/kernel/fadump/registered, leaving the system ready
-to capture a vmcore upon crashing. For journaling filesystems like XFS an
-additional step is required to ensure bootloader does not pick the
-older initrd (without vmcore capture scripts):
-
- * If /boot is a separate partition, run the below commands as the root user,
- or as a user with CAP_SYS_ADMIN rights:
-
- # fsfreeze -f
- # fsfreeze -u
-
- * If /boot is not a separate partition, reboot the system.
-
-After reboot check if the kdump service is up and running with:
-
- # systemctl status kdump.service
-
-To test out whether FADump is configured properly, you can force-crash your
-system by echo'ing a 'c' into /proc/sysrq-trigger:
-
- # echo c > /proc/sysrq-trigger
-
-You should see some panic output, followed by the system reset and booting into
-fresh copy of kernel. When default initrd loads and runs /init, vmcore should
-be copied out to disk (by default, in /var/crash/<YYYY.MM.DD-HH:MM:SS>/vmcore),
-then the system rebooted back into your normal kernel.
-
-Once back to your normal kernel, you can use the previously installed crash
-kernel in conjunction with the previously installed kernel-debuginfo to
-perform postmortem analysis:
-
- # crash /usr/lib/debug/lib/modules/2.6.17-1.2621.el5/vmlinux
- /var/crash/2006-08-23-15:34/vmcore
-
- crash> bt
-
-and so on...
-
-Saving vmcore-dmesg.txt
------------------------
-Kernel log bufferes are one of the most important information available
-in vmcore. Now before saving vmcore, kernel log bufferes are extracted
-from /proc/vmcore and saved into a file vmcore-dmesg.txt. After
-vmcore-dmesg.txt, vmcore is saved. Destination disk and directory for
-vmcore-dmesg.txt is same as vmcore. Note that kernel log buffers will
-not be available if dump target is raw device.
-
-FADump Memory Requirements:
-
- System Memory Recommended memory
---------------------- ----------------------
- 4 GB - 16 GB : 768 MB
- 16 GB - 64 GB : 1024 MB
- 64 GB - 128 GB : 2 GB
- 128 GB - 1 TB : 4 GB
- 1 TB - 2 TB : 6 GB
- 2 TB - 4 TB : 12 GB
- 4 TB - 8 TB : 20 GB
- 8 TB - 16 TB : 36 GB
- 16 TB - 32 TB : 64 GB
- 32 TB - 64 TB : 128 GB
- 64 TB & above : 180 GB
-
-Things to remember:
-
-1) The memory required to boot capture Kernel is a moving target that depends
- on many factors like hardware attached to the system, kernel and modules in
- use, packages installed and services enabled, there is no one-size-fits-all.
- But the above recommendations are based on system memory. So, the above
- recommendations for FADump come with a few assumptions, based on available
- system memory, about the resources the system could have. So, please take
- the recommendations with a pinch of salt and remember to try capturing dump
- a few times to confirm that the system is configured successfully with dump
- capturing support.
-
-2) Though the memory requirements for FADump seem high, this memory is not
- completely set aside but made available for userspace applications to use,
- through the CMA allocator.
-
-3) As the same initrd is used for booting production kernel as well as capture
- kernel and with dump being captured in a restricted memory environment, few
- optimizations (like not inclding network dracut module, disabling multipath
- and such) are applied while building the initrd. In case, the production
- environment needs these optimizations to be avoided, dracut_args option in
- /etc/kdump.conf file could be leveraged. For example, if a user wishes for
- network module to be included in the initrd, adding the below entry in
- /etc/kdump.conf file and restarting kdump service would take care of it.
-
- dracut_args --add "network"
-
-4) If FADump is configured to capture vmcore to a remote dump target using SSH
- or NFS protocol, the corresponding network interface '<interface-name>' is
- renamed to 'kdump-<interface-name>', if it is generic (like *eth# or net#).
- It happens because vmcore capture scripts in the initial RAM disk (initrd)
- add the 'kdump-' prefix to the network interface name to secure persistent
- naming. And as capture kernel and production kernel use the same initrd in
- case of FADump, the interface name is changed for the production kernel too.
- This is likely to impact network configuration setup for production kernel.
- So, it is recommended to use a non-generic name for a network interface,
- before setting up FADump to capture vmcore to a remote dump target based on
- that network interface, to avoid running into network configuration issues.
-
-Dump Triggering methods:
-
-This section talks about the various ways, other than a Kernel Panic, in which
-fadump can be triggered. The following methods assume that fadump is configured
-on your system, with the scripts enabled as described in the section above.
-
-1) AltSysRq C
-
-FAdump can be triggered with the combination of the 'Alt','SysRq' and 'C'
-keyboard keys. Please refer to the following link for more details:
-
-https://fedoraproject.org/wiki/QA/Sysrq
-
-In addition, on PowerPC boxes, fadump can also be triggered via Hardware
-Management Console(HMC) using 'Ctrl', 'O' and 'C' keyboard keys.
-
-2) Kernel OOPs
-
-If we want to generate a dump everytime the Kernel OOPses, we can achieve this
-by setting the 'Panic On OOPs' option as follows:
-
- # echo 1 > /proc/sys/kernel/panic_on_oops
-
-3) PowerPC specific methods:
-
-On IBM PowerPC machines, issuing a soft reset invokes the XMON debugger(if
-XMON is configured). To configure XMON one needs to compile the kernel with
-the CONFIG_XMON and CONFIG_XMON_DEFAULT options, or by compiling with
-CONFIG_XMON and booting the kernel with xmon=on option.
-
-Following are the ways to remotely issue a soft reset on PowerPC boxes, which
-would drop you to XMON. Pressing a 'X' (capital alphabet X) followed by an
-'Enter' here will trigger the dump.
-
-3.1) HMC
-
-Hardware Management Console(HMC) available on Power4 and Power5 machines allow
-partitions to be reset remotely. This is specially useful in hang situations
-where the system is not accepting any keyboard inputs.
-
-Once you have HMC configured, the following steps will enable you to trigger
-fadump via a soft reset:
-
-On Power4
- Using GUI
-
- * In the right pane, right click on the partition you wish to dump.
- * Select "Operating System->Reset".
- * Select "Soft Reset".
- * Select "Yes".
-
- Using HMC Commandline
-
- # reset_partition -m <machine> -p <partition> -t soft
-
-On Power5
- Using GUI
-
- * In the right pane, right click on the partition you wish to dump.
- * Select "Restart Partition".
- * Select "Dump".
- * Select "OK".
-
- Using HMC Commandline
-
- # chsysstate -m <managed system name> -n <lpar name> -o dumprestart -r lpar
-
-3.2) Blade Management Console for Blade Center
-
-To initiate a dump operation, go to Power/Restart option under "Blade Tasks" in
-the Blade Management Console. Select the corresponding blade for which you want
-to initate the dump and then click "Restart blade with NMI". This issues a
-system reset and invokes xmon debugger.
-
-
-Advanced Setups & Failure action:
-
-Kdump and fadump exhibit similar behavior in terms of setup & failure action.
-For fadump advanced setup related information see section "Advanced Setups" in
-"kexec-kdump-howto.txt" document. Refer to "Failure action" section in "kexec-
-kdump-howto.txt" document for fadump failure action related information.
-
-Compression and filtering
-
-Refer "Compression and filtering" section in "kexec-kdump-howto.txt" document.
-Compression and filtering are same for kdump & fadump.
-
-
-Notes on rootfs mount:
-Dracut is designed to mount rootfs by default. If rootfs mounting fails it
-will refuse to go on. So fadump leaves rootfs mounting to dracut currently.
-We make the assumtion that proper root= cmdline is being passed to dracut
-initramfs for the time being. If you need modify "KDUMP_COMMANDLINE=" in
-/etc/sysconfig/kdump, you will need to make sure that appropriate root=
-options are copied from /proc/cmdline. In general it is best to append
-command line options using "KDUMP_COMMANDLINE_APPEND=" instead of replacing
-the original command line completely.
-
-How to disable FADump:
-
-Remove "fadump=on"/"fadump=nocma" from kernel cmdline parameters OR replace
-it with "fadump=off" kernel cmdline parameter:
-
- # grubby --update-kernel=/boot/vmlinuz-`uname -r` --remove-args="fadump=on"
-or
- # grubby --update-kernel=/boot/vmlinuz-`uname -r` --remove-args="fadump=nocma"
-OR
- # grubby --update-kernel=/boot/vmlinuz-`uname -r` --args="fadump=off"
-
-Remove "crashkernel=" from kernel cmdline parameters:
-
- # grubby --update-kernel=/boot/vmlinuz-`uname -r` --remove-args="crashkernel"
-
-If KDump is to be used as the dump capturing mechanism, reset the crashkernel parameter:
-
- # kdumpctl reset-crashkernel --fadump=off
-
-Reboot the system for the settings to take effect.
diff --git a/gen-kdump-conf.sh b/gen-kdump-conf.sh
deleted file mode 100755
index a8e7fdd..0000000
--- a/gen-kdump-conf.sh
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/bin/bash
-# $1: target arch
-
-SED_EXP=""
-
-generate()
-{
- sed "$SED_EXP" << EOF
-# This file contains a series of commands to perform (in order) in the kdump
-# kernel after a kernel crash in the crash kernel(1st kernel) has happened.
-#
-# Directives in this file are only applicable to the kdump initramfs, and have
-# no effect once the root filesystem is mounted and the normal init scripts are
-# processed.
-#
-# Currently, only one dump target and path can be specified. If the dumping to
-# the configured target fails, the failure action which can be configured via
-# the "failure_action" directive will be performed.
-#
-# Supported options:
-#
-# auto_reset_crashkernel <yes|no>
-# - whether to reset kernel crashkernel to new default value
-# or not when kexec-tools updates the default crashkernel value and
-# existing kernels using the old default kernel crashkernel value.
-# The default value is yes.
-#
-# raw <partition>
-# - Will dd /proc/vmcore into <partition>.
-# Use persistent device names for partition devices,
-# such as /dev/vg/<devname>.
-#
-# nfs <nfs mount>
-# - Will mount nfs to <mnt>, and copy /proc/vmcore to
-# <mnt>/<path>/%HOST-%DATE/, supports DNS.
-#
-# ssh <user@server>
-# - Will save /proc/vmcore to <user@server>:<path>/%HOST-%DATE/,
-# supports DNS.
-# NOTE: make sure the user has write permissions on the server.
-#
-# sshkey <path>
-# - Will use the sshkey to do ssh dump.
-# Specify the path of the ssh key to use when dumping
-# via ssh. The default value is /root/.ssh/kdump_id_rsa.
-#
-# <fs type> <partition>
-# - Will mount -t <fs type> <partition> <mnt>, and copy
-# /proc/vmcore to <mnt>/<path>/%HOST_IP-%DATE/.
-# NOTE: <partition> can be a device node, label or uuid.
-# It's recommended to use persistent device names
-# such as /dev/vg/<devname>.
-# Otherwise it's suggested to use label or uuid.
-# Supported fs types: ext[234], xfs, btrfs, minix, virtiofs
-#
-# path <path>
-# - "path" represents the file system path in which vmcore
-# will be saved. If a dump target is specified in
-# kdump.conf, then "path" is relative to the specified
-# dump target.
-#
-# Interpretation of "path" changes a bit if the user didn't
-# specify any dump target explicitly in kdump.conf. In this
-# case, "path" represents the absolute path from root. The
-# dump target and adjusted path are arrived at automatically
-# depending on what's mounted in the current system.
-#
-# Ignored for raw device dumps. If unset, will use the default
-# "/var/crash".
-#
-# core_collector <command> <options>
-# - This allows you to specify the command to copy
-# the vmcore. The default is makedumpfile, which on
-# some architectures can drastically reduce vmcore size.
-# See /sbin/makedumpfile --help for a list of options.
-# Note that the -i and -g options are not needed here,
-# as the initrd will automatically be populated with a
-# config file appropriate for the running kernel.
-# The default core_collector for raw/ssh dump is:
-# "makedumpfile -F -l --message-level 7 -d 31".
-# The default core_collector for other targets is:
-# "makedumpfile -l --message-level 7 -d 31".
-#
-# "makedumpfile -F" will create a flattened vmcore.
-# You need to use "makedumpfile -R" to rearrange the dump data to
-# a normal dumpfile readable with analysis tools. For example:
-# "makedumpfile -R vmcore < vmcore.flat".
-#
-# For core_collector format details, you can refer to
-# kexec-kdump-howto.txt or kdump.conf manpage.
-#
-# kdump_post <binary | script>
-# - This directive allows you to run a executable binary
-# or script after the vmcore dump process terminates.
-# The exit status of the current dump process is fed to
-# the executable binary or script as its first argument.
-# All files under /etc/kdump/post.d are collectively sorted
-# and executed in lexical order, before binary or script
-# specified kdump_post parameter is executed.
-#
-# kdump_pre <binary | script>
-# - Works like the "kdump_post" directive, but instead of running
-# after the dump process, runs immediately before it.
-# Exit status of this binary is interpreted as follows:
-# 0 - continue with dump process as usual
-# non 0 - run the final action (reboot/poweroff/halt)
-# All files under /etc/kdump/pre.d are collectively sorted and
-# executed in lexical order, after binary or script specified
-# kdump_pre parameter is executed.
-# Even if the binary or script in /etc/kdump/pre.d directory
-# returns non 0 exit status, the processing is continued.
-#
-# extra_bins <binaries | shell scripts>
-# - This directive allows you to specify additional binaries or
-# shell scripts to be included in the kdump initrd.
-# Generally they are useful in conjunction with a kdump_post
-# or kdump_pre binary or script which depends on these extra_bins.
-#
-# extra_modules <module(s)>
-# - This directive allows you to specify extra kernel modules
-# that you want to be loaded in the kdump initrd.
-# Multiple modules can be listed, separated by spaces, and any
-# dependent modules will automatically be included.
-#
-# failure_action <reboot | halt | poweroff | shell | dump_to_rootfs>
-# - Action to perform in case dumping fails.
-# reboot: Reboot the system.
-# halt: Halt the system.
-# poweroff: Power down the system.
-# shell: Drop to a bash shell.
-# Exiting the shell reboots the system by default,
-# or perform "final_action".
-# dump_to_rootfs: Dump vmcore to rootfs from initramfs context and
-# reboot by default or perform "final_action".
-# Useful when non-root dump target is specified.
-# The default option is "reboot".
-#
-# default <reboot | halt | poweroff | shell | dump_to_rootfs>
-# - Same as the "failure_action" directive above, but this directive
-# is obsolete and will be removed in the future.
-#
-# final_action <reboot | halt | poweroff>
-# - Action to perform in case dumping succeeds. Also performed
-# when "shell" or "dump_to_rootfs" failure action finishes.
-# Each action is same as the "failure_action" directive above.
-# The default is "reboot".
-#
-# force_rebuild <0 | 1>
-# - By default, kdump initrd will only be rebuilt when necessary.
-# Specify 1 to force rebuilding kdump initrd every time when kdump
-# service starts.
-#
-# force_no_rebuild <0 | 1>
-# - By default, kdump initrd will be rebuilt when necessary.
-# Specify 1 to bypass rebuilding of kdump initrd.
-#
-# force_no_rebuild and force_rebuild options are mutually
-# exclusive and they should not be set to 1 simultaneously.
-#
-# dracut_args <arg(s)>
-# - Pass extra dracut options when rebuilding kdump initrd.
-#
-# fence_kdump_args <arg(s)>
-# - Command line arguments for fence_kdump_send (it can contain
-# all valid arguments except hosts to send notification to).
-#
-# fence_kdump_nodes <node(s)>
-# - List of cluster node(s) except localhost, separated by spaces,
-# to send fence_kdump notifications to.
-# (this option is mandatory to enable fence_kdump).
-#
-
-#raw /dev/vg/lv_kdump
-#ext4 /dev/vg/lv_kdump
-#ext4 LABEL=/boot
-#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
-#virtiofs myfs
-#nfs my.server.com:/export/tmp
-#nfs [2001:db8::1:2:3:4]:/export/tmp
-#ssh user(a)my.server.com
-#ssh user@2001:db8::1:2:3:4
-#sshkey /root/.ssh/kdump_id_rsa
-auto_reset_crashkernel yes
-path /var/crash
-core_collector makedumpfile -l --message-level 7 -d 31
-#core_collector scp
-#kdump_post /var/crash/scripts/kdump-post.sh
-#kdump_pre /var/crash/scripts/kdump-pre.sh
-#extra_bins /usr/bin/lftp
-#extra_modules gfs2
-#failure_action shell
-#force_rebuild 1
-#force_no_rebuild 1
-#dracut_args --omit-drivers "cfg80211 snd" --add-drivers "ext2 ext3"
-#fence_kdump_args -p 7410 -f auto -c 0 -i 10
-#fence_kdump_nodes node1 node2
-EOF
-}
-
-update_param()
-{
- SED_EXP="${SED_EXP}s/^$1.*$/$1 $2/;"
-}
-
-case "$1" in
-aarch64) ;;
-
-i386) ;;
-
-ppc64) ;;
-
-ppc64le) ;;
-
-s390x)
- update_param core_collector \
- "makedumpfile -c --message-level 7 -d 31"
- ;;
-x86_64) ;;
-
-*)
- echo "Warning: Unknown architecture '$1', using default kdump.conf template." >&2
- ;;
-esac
-
-generate
diff --git a/gen-kdump-sysconfig.sh b/gen-kdump-sysconfig.sh
deleted file mode 100755
index 78b0bb7..0000000
--- a/gen-kdump-sysconfig.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/bash
-# $1: target arch
-
-SED_EXP=""
-
-generate()
-{
- sed "$SED_EXP" << EOF
-# Kernel Version string for the -kdump kernel, such as 2.6.13-1544.FC5kdump
-# If no version is specified, then the init script will try to find a
-# kdump kernel with the same version number as the running kernel.
-KDUMP_KERNELVER=""
-
-# The kdump commandline is the command line that needs to be passed off to
-# the kdump kernel. This will likely match the contents of the grub kernel
-# line. For example:
-# KDUMP_COMMANDLINE="ro root=LABEL=/"
-# Dracut depends on proper root= options, so please make sure that appropriate
-# root= options are copied from /proc/cmdline. In general it is best to append
-# command line options using "KDUMP_COMMANDLINE_APPEND=".
-# If a command line is not specified, the default will be taken from
-# /proc/cmdline
-KDUMP_COMMANDLINE=""
-
-# This variable lets us remove arguments from the current kdump commandline
-# as taken from either KDUMP_COMMANDLINE above, or from /proc/cmdline
-# NOTE: some arguments such as crashkernel will always be removed
-KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb cma hugetlb_cma ignition.firstboot"
-
-# This variable lets us append arguments to the current kdump commandline
-# after processed by KDUMP_COMMANDLINE_REMOVE
-KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 reset_devices novmcoredd cma=0 hugetlb_cma=0"
-
-# Any additional kexec arguments required. In most situations, this should
-# be left empty
-#
-# Example:
-# KEXEC_ARGS="--elf32-core-headers"
-KEXEC_ARGS=""
-
-#Where to find the boot image
-#KDUMP_BOOTDIR="/boot"
-
-#What is the image type used for kdump
-KDUMP_IMG="vmlinuz"
-
-#What is the images extension. Relocatable kernels don't have one
-KDUMP_IMG_EXT=""
-
-# Logging is controlled by following variables in the first kernel:
-# - @var KDUMP_STDLOGLVL - logging level to standard error (console output)
-# - @var KDUMP_SYSLOGLVL - logging level to syslog (by logger command)
-# - @var KDUMP_KMSGLOGLVL - logging level to /dev/kmsg (only for boot-time)
-#
-# In the second kernel, kdump will use the rd.kdumploglvl option to set the
-# log level in the above KDUMP_COMMANDLINE_APPEND.
-# - @var rd.kdumploglvl - logging level to syslog (by logger command)
-# - for example: add the rd.kdumploglvl=3 option to KDUMP_COMMANDLINE_APPEND
-#
-# Logging levels: no logging(0), error(1),warn(2),info(3),debug(4)
-#
-# KDUMP_STDLOGLVL=3
-# KDUMP_SYSLOGLVL=0
-# KDUMP_KMSGLOGLVL=0
-EOF
-}
-
-update_param()
-{
- SED_EXP="${SED_EXP}s/^$1=.*$/$1=\"$2\"/;"
-}
-
-case "$1" in
-aarch64)
- update_param KEXEC_ARGS "-s"
- update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd cma=0 hugetlb_cma=0"
- ;;
-i386)
- update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll nr_cpus=1 reset_devices numa=off udev.children-max=2 panic=10 transparent_hugepage=never novmcoredd cma=0 hugetlb_cma=0"
- ;;
-ppc64)
- update_param KEXEC_ARGS "--dt-no-old-root"
- update_param KDUMP_COMMANDLINE_REMOVE \
- "hugepages hugepagesz slub_debug quiet log_buf_len swiotlb hugetlb_cma ignition.firstboot"
- update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
- ;;
-ppc64le)
- update_param KEXEC_ARGS "--dt-no-old-root -s"
- update_param KDUMP_COMMANDLINE_REMOVE \
- "hugepages hugepagesz slub_debug quiet log_buf_len swiotlb hugetlb_cma ignition.firstboot"
- update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll nr_cpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
- ;;
-s390x)
- update_param KEXEC_ARGS "-s"
- update_param KDUMP_COMMANDLINE_REMOVE \
- "hugepages hugepagesz slub_debug quiet log_buf_len swiotlb vmcp_cma cma hugetlb_cma prot_virt ignition.firstboot zfcp.allow_lun_scan"
- update_param KDUMP_COMMANDLINE_APPEND \
- "nr_cpus=1 cgroup_disable=memory numa=off udev.children-max=2 panic=10 transparent_hugepage=never novmcoredd vmcp_cma=0 cma=0 hugetlb_cma=0"
- ;;
-x86_64)
- update_param KEXEC_ARGS "-s"
- update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd cma=0 hugetlb_cma=0"
- ;;
-*)
- echo "Warning: Unknown architecture '$1', using default sysconfig template." >&2
- ;;
-esac
-
-generate
diff --git a/kdump-dep-generator.sh b/kdump-dep-generator.sh
deleted file mode 100644
index 70ae621..0000000
--- a/kdump-dep-generator.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-# More details about systemd generator:
-# http://www.freedesktop.org/wiki/Software/systemd/Generators/
-
-. /usr/lib/kdump/kdump-lib-initramfs.sh
-. /usr/lib/kdump/kdump-logger.sh
-
-# If invokded with no arguments for testing purpose, output to /tmp to
-# avoid overriding the existing.
-dest_dir="/tmp"
-
-if [ -n "$1" ]; then
- dest_dir=$1
-fi
-
-systemd_dir=/usr/lib/systemd/system
-kdump_wants=$dest_dir/kdump.service.wants
-
-if is_ssh_dump_target; then
- mkdir -p $kdump_wants
- ln -sf $systemd_dir/network-online.target $kdump_wants/
-fi
diff --git a/kdump-in-cluster-environment.txt b/kdump-in-cluster-environment.txt
deleted file mode 100644
index de1eb5e..0000000
--- a/kdump-in-cluster-environment.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-Kdump-in-cluster-environment HOWTO
-
-Introduction
-
-Kdump is a kexec based crash dumping mechansim for Linux. This docuement
-illustrate how to configure kdump in cluster environment to allow the kdump
-crash recovery service complete without being preempted by traditional power
-fencing methods.
-
-Overview
-
-Kexec/Kdump
-
-Details about Kexec/Kdump are available in Kexec-Kdump-howto file and will not
-be described here.
-
-fence_kdump
-
-fence_kdump is an I/O fencing agent to be used with the kdump crash recovery
-service. When the fence_kdump agent is invoked, it will listen for a message
-from the failed node that acknowledges that the failed node is executing the
-kdump crash kernel. Note that fence_kdump is not a replacement for traditional
-fencing methods. The fence_kdump agent can only detect that a node has entered
-the kdump crash recovery service. This allows the kdump crash recovery service
-complete without being preempted by traditional power fencing methods.
-
-fence_kdump_send
-
-fence_kdump_send is a utility used to send messages that acknowledge that the
-node itself has entered the kdump crash recovery service. The fence_kdump_send
-utility is typically run in the kdump kernel after a cluster node has
-encountered a kernel panic. Once the cluster node has entered the kdump crash
-recovery service, fence_kdump_send will periodically send messages to all
-cluster nodes. When the fence_kdump agent receives a valid message from the
-failed nodes, fencing is complete.
-
-How to configure Pacemaker cluster environment:
-
-If we want to use kdump in Pacemaker cluster environment, fence-agents-kdump
-should be installed in every nodes in the cluster. You can achieve this via
-the following command:
-
- # yum install -y fence-agents-kdump
-
-Next is to add kdump_fence to the cluster. Assuming that the cluster consists
-of three nodes, they are node1, node2 and node3, and use Pacemaker to perform
-resource management and pcs as cli configuration tool.
-
-With pcs it is easy to add a stonith resource to the cluster. For example, add
-a stonith resource named mykdumpfence with fence type of fence_kdump via the
-following commands:
-
- # pcs stonith create mykdumpfence fence_kdump \
- pcmk_host_check=static-list pcmk_host_list="node1 node2 node3"
- # pcs stonith update mykdumpfence pcmk_monitor_action=metadata --force
- # pcs stonith update mykdumpfence pcmk_status_action=metadata --force
- # pcs stonith update mykdumpfence pcmk_reboot_action=off --force
-
-Then enable stonith
- # pcs property set stonith-enabled=true
-
-How to configure kdump:
-
-Actually there are two ways how to configure fence_kdump support:
-
-1) Pacemaker based clusters
- If you have successfully configured fence_kdump in Pacemaker, there is
- no need to add some special configuration in kdump. So please refer to
- Kexec-Kdump-howto file for more information.
-
-2) Generic clusters
- For other types of clusters there are two configuration options in
- kdump.conf which enables fence_kdump support:
-
- fence_kdump_nodes <node(s)>
- Contains list of cluster node(s) separated by space to send
- fence_kdump notification to (this option is mandatory to enable
- fence_kdump)
-
- fence_kdump_args <arg(s)>
- Command line arguments for fence_kdump_send (it can contain
- all valid arguments except hosts to send notification to)
-
- These options will most probably be configured by your cluster software,
- so please refer to your cluster documentation how to enable fence_kdump
- support.
-
-Please be aware that these two ways cannot be combined and 2) has precedence
-over 1). It means that if fence_kdump is configured using fence_kdump_nodes
-and fence_kdump_args options in kdump.conf, Pacemaker configuration is not
-used even if it exists.
diff --git a/kdump-lib-initramfs.sh b/kdump-lib-initramfs.sh
deleted file mode 100755
index f7b58a2..0000000
--- a/kdump-lib-initramfs.sh
+++ /dev/null
@@ -1,173 +0,0 @@
-#!/bin/sh
-#
-# The code in this file will be used in initramfs environment, bash may
-# not be the default shell. Any code added must be POSIX compliant.
-
-DEFAULT_PATH="/var/crash/"
-DEFAULT_SSHKEY="/root/.ssh/kdump_id_rsa"
-KDUMP_CONFIG_FILE="/etc/kdump.conf"
-FENCE_KDUMP_CONFIG_FILE="/etc/sysconfig/fence_kdump"
-FENCE_KDUMP_SEND="/usr/libexec/fence_kdump_send"
-LVM_CONF="/etc/lvm/lvm.conf"
-
-# Read kdump config in well formated style
-kdump_read_conf()
-{
- # Following steps are applied in order: strip trailing comment, strip trailing space,
- # strip heading space, match non-empty line, remove duplicated spaces between conf name and value
- [ -f "$KDUMP_CONFIG_FILE" ] && sed -n -e "s/#.*//;s/\s*$//;s/^\s*//;s/\(\S\+\)\s*\(.*\)/\1 \2/p" $KDUMP_CONFIG_FILE
-}
-
-# Retrieves config value defined in kdump.conf
-# $1: config name, sed regexp compatible
-kdump_get_conf_val()
-{
- # For lines matching "^\s*$1\s+", remove matched part (config name including space),
- # remove tailing comment, space, then store in hold space. Print out the hold buffer on last line.
- [ -f "$KDUMP_CONFIG_FILE" ] &&
- sed -n -e "/^\s*\($1\)\s\+/{s/^\s*\($1\)\s\+//;s/#.*//;s/\s*$//;h};\${x;p}" $KDUMP_CONFIG_FILE
-}
-
-is_mounted()
-{
- [ -n "$1" ] && findmnt -k -n "$1" > /dev/null 2>&1
-}
-
-# $1: info type
-# $2: mount source type
-# $3: mount source
-# $4: extra args
-get_mount_info()
-{
- __kdump_mnt=$(findmnt -k -n -r -o "$1" "--$2" "$3" $4)
-
- [ -z "$__kdump_mnt" ] && [ -e "/etc/fstab" ] && __kdump_mnt=$(findmnt -s -n -r -o "$1" "--$2" "$3" $4)
-
- echo "$__kdump_mnt"
-}
-
-is_ipv6_address()
-{
- echo "$1" | grep -q ":"
-}
-
-is_fs_type_nfs()
-{
- [ "$1" = "nfs" ] || [ "$1" = "nfs4" ]
-}
-
-is_fs_type_virtiofs()
-{
- [ "$1" = "virtiofs" ]
-}
-
-# If $1 contains dracut_args "--mount", return <filesystem type>
-get_dracut_args_fstype()
-{
- echo "$1" | sed -n "s/.*--mount .\(.*\)/\1/p" | cut -d' ' -f3
-}
-
-# If $1 contains dracut_args "--mount", return <device>
-get_dracut_args_target()
-{
- echo "$1" | sed -n "s/.*--mount .\(.*\)/\1/p" | cut -d' ' -f1
-}
-
-get_save_path()
-{
- __kdump_path=$(kdump_get_conf_val path)
- [ -z "$__kdump_path" ] && __kdump_path=$DEFAULT_PATH
-
- # strip the duplicated "/"
- echo "$__kdump_path" | tr -s /
-}
-
-get_root_fs_device()
-{
- findmnt -k -f -n -o SOURCE /
-}
-
-# Return the current underlying device of a path, ignore bind mounts
-get_target_from_path()
-{
- __kdump_target=$(df "$1" 2> /dev/null | tail -1 | awk '{print $1}')
- [ "$__kdump_target" = "/dev/root" ] && [ ! -e /dev/root ] && __kdump_target=$(get_root_fs_device)
- echo "$__kdump_target"
-}
-
-get_fs_type_from_target()
-{
- get_mount_info FSTYPE source "$1" -f
-}
-
-get_mntpoint_from_target()
-{
- # --source is applied to ensure non-bind mount is returned
- get_mount_info TARGET source "$1" -f
-}
-
-is_ssh_dump_target()
-{
- kdump_get_conf_val ssh | grep -q @
-}
-
-is_raw_dump_target()
-{
- [ -n "$(kdump_get_conf_val raw)" ]
-}
-
-is_virtiofs_dump_target()
-{
- if [ -n "$(kdump_get_conf_val virtiofs)" ]; then
- return 0
- fi
-
- if is_fs_type_virtiofs "$(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)")"; then
- return 0
- fi
-
- if is_fs_type_virtiofs "$(get_fs_type_from_target "$(get_target_from_path "$(get_save_path)")")"; then
- return 0
- fi
-
- return 1
-}
-
-is_nfs_dump_target()
-{
- if [ -n "$(kdump_get_conf_val nfs)" ]; then
- return 0
- fi
-
- if is_fs_type_nfs "$(get_dracut_args_fstype "$(kdump_get_conf_val dracut_args)")"; then
- return 0
- fi
-
- if is_fs_type_nfs "$(get_fs_type_from_target "$(get_target_from_path "$(get_save_path)")")"; then
- return 0
- fi
-
- return 1
-}
-
-is_lvm2_thinp_device()
-{
- _device_path=$1
- _lvm2_thin_device=$(lvm lvs -S 'lv_layout=sparse && lv_layout=thin' \
- --nosuffix --noheadings -o vg_name,lv_name "$_device_path" 2> /dev/null)
-
- [ -n "$_lvm2_thin_device" ]
-}
-
-kdump_get_ip_route()
-{
- if ! _route=$(/sbin/ip -o route get to "$1" 2>&1); then
- exit 1
- fi
- echo "$_route"
-}
-
-kdump_get_ip_route_field()
-{
- echo "$1" | sed -n -e "s/^.*\<$2\>\s\+\(\S\+\).*$/\1/p"
-}
diff --git a/kdump-lib.sh b/kdump-lib.sh
deleted file mode 100755
index 79714f9..0000000
--- a/kdump-lib.sh
+++ /dev/null
@@ -1,1117 +0,0 @@
-#!/bin/bash
-#
-# Kdump common variables and functions
-#
-if [[ ${__SOURCED__:+x} ]]; then
- . ./kdump-lib-initramfs.sh
-else
- . /lib/kdump/kdump-lib-initramfs.sh
-fi
-
-FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump/enabled"
-FADUMP_REGISTER_SYS_NODE="/sys/kernel/fadump/registered"
-
-is_uki()
-{
- local img
-
- img="$1"
-
- [[ -f "$img" ]] || return
- [[ "$(file -b --mime-type "$img")" == application/x-dosexec ]] || return
- objdump -h -j .linux "$img" &> /dev/null
-}
-
-is_fadump_capable()
-{
- # Check if firmware-assisted dump is enabled
- # if no, fallback to kdump check
- if [[ -f $FADUMP_ENABLED_SYS_NODE ]]; then
- rc=$(< $FADUMP_ENABLED_SYS_NODE)
- [[ $rc -eq 1 ]] && return 0
- fi
- return 1
-}
-
-is_aws_aarch64()
-{
- [[ "$(lscpu | grep "BIOS Model name")" =~ "AWS Graviton" ]]
-}
-
-is_sme_or_sev_active()
-{
- journalctl -q --dmesg --grep "^Memory Encryption Features active: AMD (SME|SEV)$" >/dev/null 2>&1
-}
-
-is_squash_available()
-{
- local _version kmodule
-
- _version=$(_get_kdump_kernel_version)
- for kmodule in squashfs overlay loop; do
- modprobe -S "$_version" --dry-run $kmodule &> /dev/null || return 1
- done
-}
-
-has_command()
-{
- [[ -x $(command -v "$1") ]]
-}
-
-dracut_have_option()
-{
- local _option=$1
- ! dracut "$_option" 2>&1 | grep -q "unrecognized option"
-}
-
-perror_exit()
-{
- derror "$@"
- exit 1
-}
-
-# Check if fence kdump is configured in Pacemaker cluster
-is_pcs_fence_kdump()
-{
- # no pcs or fence_kdump_send executables installed?
- type -P pcs > /dev/null || return 1
- [[ -x $FENCE_KDUMP_SEND ]] || return 1
-
- # fence kdump not configured?
- (pcs cluster cib | grep 'type="fence_kdump"') &> /dev/null || return 1
-}
-
-# Check if fence_kdump is configured using kdump options
-is_generic_fence_kdump()
-{
- [[ -x $FENCE_KDUMP_SEND ]] || return 1
-
- [[ $(kdump_get_conf_val fence_kdump_nodes) ]]
-}
-
-to_dev_name()
-{
- local dev="${1//\"/}"
-
- case "$dev" in
- UUID=*)
- blkid -U "${dev#UUID=}"
- ;;
- LABEL=*)
- blkid -L "${dev#LABEL=}"
- ;;
- *)
- echo "$dev"
- ;;
- esac
-}
-
-is_user_configured_dump_target()
-{
- [[ $(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw\|nfs\|ssh\|virtiofs") ]] || is_mount_in_dracut_args
-}
-
-get_block_dump_target()
-{
- local _target _fstype
-
- if is_ssh_dump_target || is_nfs_dump_target; then
- return
- fi
-
- _target=$(kdump_get_conf_val "ext[234]\|xfs\|btrfs\|minix\|raw\|virtiofs")
- [[ -n $_target ]] && to_dev_name "$_target" && return
-
- _target=$(get_dracut_args_target "$(kdump_get_conf_val "dracut_args")")
- [[ -b $_target ]] && to_dev_name "$_target" && return
-
- _fstype=$(get_dracut_args_fstype "$(kdump_get_conf_val "dracut_args")")
- is_fs_type_virtiofs "$_fstype" && echo "$_target" && return
-
- _target=$(get_target_from_path "$(get_save_path)")
- [[ -b $_target ]] && to_dev_name "$_target" && return
-
- _fstype=$(get_fs_type_from_target "$_target")
- is_fs_type_virtiofs "$_fstype" && echo "$_target" && return
-}
-
-is_dump_to_rootfs()
-{
- [[ $(kdump_get_conf_val 'failure_action\|default') == dump_to_rootfs ]]
-}
-
-is_lvm2_thinp_dump_target()
-{
- _target=$(get_block_dump_target)
- [ -n "$_target" ] && is_lvm2_thinp_device "$_target"
-}
-
-get_failure_action_target()
-{
- local _target
-
- if is_dump_to_rootfs; then
- # Get rootfs device name
- _target=$(get_root_fs_device)
- [[ -b $_target ]] && to_dev_name "$_target" && return
- is_fs_type_virtiofs "$(get_fs_type_from_target "$_target")" && echo "$_target" && return
- # Then, must be nfs root
- echo "nfs"
- fi
-}
-
-# Get kdump targets(including root in case of dump_to_rootfs).
-get_kdump_targets()
-{
- local _target _root
- local kdump_targets
-
- _target=$(get_block_dump_target)
- if [[ -n $_target ]]; then
- kdump_targets=$_target
- elif is_ssh_dump_target; then
- kdump_targets="ssh"
- else
- kdump_targets="nfs"
- fi
-
- # Add the root device if dump_to_rootfs is specified.
- _root=$(get_failure_action_target)
- if [[ -n $_root ]] && [[ $kdump_targets != "$_root" ]]; then
- kdump_targets="$kdump_targets $_root"
- fi
-
- echo "$kdump_targets"
-}
-
-# Return the bind mount source path, return the path itself if it's not bind mounted
-# Eg. if /path/to/src is bind mounted to /mnt/bind, then:
-# /mnt/bind -> /path/to/src, /mnt/bind/dump -> /path/to/src/dump
-#
-# findmnt uses the option "-v, --nofsroot" to exclusive the [/dir]
-# in the SOURCE column for bind-mounts, then if $_src equals to
-# $_src_nofsroot, the mountpoint is not bind mounted directory.
-#
-# Below is just an example for mount info
-# /dev/mapper/atomicos-root[/ostree/deploy/rhel-atomic-host/var], if the
-# directory is bind mounted. The former part represents the device path, rest
-# part is the bind mounted directory which quotes by bracket "[]".
-get_bind_mount_source()
-{
- local _mnt _path _src _opt _fstype
- local _fsroot _src_nofsroot
-
- _mnt=$(df "$1" | tail -1 | awk '{print $NF}')
- _path=${1#"$_mnt"}
-
- _src=$(get_mount_info SOURCE target "$_mnt" -f)
- _opt=$(get_mount_info OPTIONS target "$_mnt" -f)
- _fstype=$(get_mount_info FSTYPE target "$_mnt" -f)
-
- # bind mount in fstab
- if [[ -d $_src ]] && [[ $_fstype == none ]] && (echo "$_opt" | grep -q "\bbind\b"); then
- echo "$_src$_path" && return
- fi
-
- # direct mount
- _src_nofsroot=$(get_mount_info SOURCE target "$_mnt" -v -f)
- if [[ $_src_nofsroot == "$_src" ]]; then
- echo "$_mnt$_path" && return
- fi
-
- _fsroot=${_src#"${_src_nofsroot}"[}
- _fsroot=${_fsroot%]}
- _mnt=$(get_mount_info TARGET source "$_src_nofsroot" -f)
-
- # for btrfs, _fsroot will also contain the subvol value as well, strip it
- if [[ $_fstype == btrfs ]]; then
- local _subvol
- _subvol=${_opt#*subvol=}
- _subvol=${_subvol%,*}
- _fsroot=${_fsroot#"$_subvol"}
- fi
- echo "$_mnt$_fsroot$_path"
-}
-
-get_mntopt_from_target()
-{
- get_mount_info OPTIONS source "$1" -f
-}
-
-# Get the path where the target will be mounted in kdump kernel
-# $1: kdump target device
-get_kdump_mntpoint_from_target()
-{
- local _mntpoint
-
- _mntpoint=$(get_mntpoint_from_target "$1")
- # mount under /sysroot if dump to root disk or mount under
- # mount under /kdumproot if dump target is not mounted in first kernel
- # mount under /kdumproot/$_mntpoint in other cases in 2nd kernel.
- # systemd will be in charge to umount it.
- if [[ -z $_mntpoint ]]; then
- _mntpoint="/kdumproot"
- else
- if [[ $_mntpoint == "/" ]]; then
- _mntpoint="/sysroot"
- else
- _mntpoint="/kdumproot/$_mntpoint"
- fi
- fi
-
- # strip duplicated "/"
- echo $_mntpoint | tr -s "/"
-}
-
-kdump_get_persistent_dev()
-{
- local dev="${1//\"/}"
-
- case "$dev" in
- UUID=*)
- dev=$(blkid -U "${dev#UUID=}")
- ;;
- LABEL=*)
- dev=$(blkid -L "${dev#LABEL=}")
- ;;
- esac
- get_persistent_dev "$dev"
-}
-
-is_ostree()
-{
- test -f /run/ostree-booted
-}
-
-# get ip address or hostname from nfs/ssh config value
-get_remote_host()
-{
- local _config_val=$1
-
- # ipv6 address in kdump.conf is around with "[]",
- # factor out the ipv6 address
- _config_val=${_config_val#*@}
- _config_val=${_config_val%:/*}
- _config_val=${_config_val#[}
- _config_val=${_config_val%]}
- echo "$_config_val"
-}
-
-is_hostname()
-{
- local _hostname
-
- _hostname=$(echo "$1" | grep ":")
- if [[ -n $_hostname ]]; then
- return 1
- fi
- echo "$1" | grep -q "[a-zA-Z]"
-}
-
-# Get value by a field using "nmcli -g"
-# Usage: get_nmcli_value_by_field <field> <nmcli command>
-#
-# "nmcli --get-values" allows us to retrive value(s) by field, for example,
-# nmcli --get-values <field> connection show /org/freedesktop/NetworkManager/ActiveConnection/1
-# returns the following value for the corresponding field respectively,
-# Field Value
-# IP4.DNS "10.19.42.41 | 10.11.5.19 | 10.5.30.160"
-# 802-3-ethernet.s390-subchannels ""
-# bond.options "mode=balance-rr"
-get_nmcli_value_by_field()
-{
- LANG=C nmcli --get-values "$@"
-}
-
-is_wdt_active()
-{
- local active
-
- [[ -d /sys/class/watchdog ]] || return 1
- for dir in /sys/class/watchdog/*; do
- [[ -f "$dir/state" ]] || continue
- active=$(< "$dir/state")
- [[ $active == "active" ]] && return 0
- done
- return 1
-}
-
-have_compression_in_dracut_args()
-{
- [[ "$(kdump_get_conf_val dracut_args)" =~ (^|[[:space:]])--(gzip|bzip2|lzma|xz|lzo|lz4|zstd|no-compress|compress|squash-compressor)([[:space:]]|$) ]]
-}
-
-# If "dracut_args" contains "--mount" information, use it
-# directly without any check(users are expected to ensure
-# its correctness).
-is_mount_in_dracut_args()
-{
- [[ " $(kdump_get_conf_val dracut_args)" =~ .*[[:space:]]--mount[=[:space:]].* ]]
-}
-
-get_reserved_mem_size()
-{
- local reserved_mem_size=0
-
- if is_fadump_capable; then
- reserved_mem_size=$(< /sys/kernel/fadump/mem_reserved)
- else
- reserved_mem_size=$(< /sys/kernel/kexec_crash_size)
- fi
-
- echo "$reserved_mem_size"
-}
-
-check_crash_mem_reserved()
-{
- local mem_reserved
-
- mem_reserved=$(get_reserved_mem_size)
- if [[ $mem_reserved -eq 0 ]]; then
- derror "No memory reserved for crash kernel"
- return 1
- fi
-
- return 0
-}
-
-check_kdump_feasibility()
-{
- if [[ ! -e /sys/kernel/kexec_crash_loaded ]]; then
- derror "Kdump is not supported on this kernel"
- return 1
- fi
- check_crash_mem_reserved
- return $?
-}
-
-is_kernel_loaded()
-{
- local _sysfs _mode
-
- _mode=$1
-
- case "$_mode" in
- kdump)
- _sysfs="/sys/kernel/kexec_crash_loaded"
- ;;
- fadump)
- _sysfs="$FADUMP_REGISTER_SYS_NODE"
- ;;
- *)
- derror "Unknown dump mode '$_mode' provided"
- return 1
- ;;
- esac
-
- if [[ ! -f $_sysfs ]]; then
- derror "$_mode is not supported on this kernel"
- return 1
- fi
-
- [[ $(< $_sysfs) -eq 1 ]]
-}
-
-#
-# This function returns the "apicid" of the boot
-# cpu (cpu 0) if present.
-#
-get_bootcpu_apicid()
-{
- awk ' \
- BEGIN { CPU = "-1"; } \
- $1=="processor" && $2==":" { CPU = $NF; } \
- CPU=="0" && /^apicid/ { print $NF; } \
- ' \
- /proc/cpuinfo
-}
-
-# This function check iomem and determines if we have more than
-# 4GB of ram available. Returns 1 if we do, 0 if we dont
-need_64bit_headers()
-{
- return "$(tail -n 1 /proc/iomem | awk '{ split ($1, r, "-");
- print (strtonum("0x" r[2]) > strtonum("0xffffffff")); }')"
-}
-
-# Check if secure boot is being enforced.
-#
-# Per Peter Jones, we need check efivar SecureBoot-$(the UUID) and
-# SetupMode-$(the UUID), they are both 5 bytes binary data. The first four
-# bytes are the attributes associated with the variable and can safely be
-# ignored, the last bytes are one-byte true-or-false variables. If SecureBoot
-# is 1 and SetupMode is 0, then secure boot is being enforced.
-#
-# Assume efivars is mounted at /sys/firmware/efi/efivars.
-is_secure_boot_enforced()
-{
- local secure_boot_file setup_mode_file
- local secure_boot_byte setup_mode_byte
-
- # On powerpc, secure boot is enforced if:
- # host secure boot: /ibm,secure-boot/os-secureboot-enforcing DT property exists
- # guest secure boot: /ibm,secure-boot >= 2
- if [[ -f /proc/device-tree/ibm,secureboot/os-secureboot-enforcing ]]; then
- return 0
- fi
- if [[ -f /proc/device-tree/ibm,secure-boot ]] &&
- [[ $(lsprop /proc/device-tree/ibm,secure-boot | tail -1) -ge 2 ]]; then
- return 0
- fi
-
- # Detect secure boot on x86 and arm64
- secure_boot_file=$(find /sys/firmware/efi/efivars -name "SecureBoot-*" 2> /dev/null)
- setup_mode_file=$(find /sys/firmware/efi/efivars -name "SetupMode-*" 2> /dev/null)
-
- if [[ -f $secure_boot_file ]] && [[ -f $setup_mode_file ]]; then
- secure_boot_byte=$(hexdump -v -e '/1 "%d\ "' "$secure_boot_file" | cut -d' ' -f 5)
- setup_mode_byte=$(hexdump -v -e '/1 "%d\ "' "$setup_mode_file" | cut -d' ' -f 5)
-
- if [[ $secure_boot_byte == "1" ]] && [[ $setup_mode_byte == "0" ]]; then
- return 0
- fi
- fi
-
- # Detect secure boot on s390x
- if [[ -e "/sys/firmware/ipl/secure" && "$(< /sys/firmware/ipl/secure)" == "1" ]]; then
- return 0
- fi
-
- return 1
-}
-
-#
-# prepare_kexec_args <kexec args>
-# This function prepares kexec argument.
-#
-prepare_kexec_args()
-{
- local kexec_args=$1
- local found_elf_args
-
- ARCH=$(uname -m)
- if [[ $ARCH == "i686" ]] || [[ $ARCH == "i386" ]]; then
- need_64bit_headers
- if [[ $? == 1 ]]; then
- found_elf_args=$(echo "$kexec_args" | grep elf32-core-headers)
- if [[ -n $found_elf_args ]]; then
- dwarn "Warning: elf32-core-headers overrides correct elf64 setting"
- else
- kexec_args="$kexec_args --elf64-core-headers"
- fi
- else
- found_elf_args=$(echo "$kexec_args" | grep elf64-core-headers)
- if [[ -z $found_elf_args ]]; then
- kexec_args="$kexec_args --elf32-core-headers"
- fi
- fi
- fi
-
- # For secureboot enabled machines, use new kexec file based syscall.
- # Old syscall will always fail as it does not have capability to do
- # kernel signature verification.
- if is_secure_boot_enforced; then
- dinfo "Secure Boot is enabled. Using kexec file based syscall."
- kexec_args="$kexec_args -s"
- fi
-
- echo "$kexec_args"
-}
-
-# prepare_kdump_kernel <kdump_kernelver>
-# This function return kdump_kernel given a kernel version.
-prepare_kdump_kernel()
-{
- local kdump_kernelver=$1
- local dir img boot_dirlist boot_imglist kdump_kernel machine_id
- read -r machine_id < /etc/machine-id
-
- boot_dirlist=${KDUMP_BOOTDIR:-"/boot /boot/efi /efi /"}
- boot_imglist="$KDUMP_IMG-$kdump_kernelver$KDUMP_IMG_EXT \
- $machine_id/$kdump_kernelver/$KDUMP_IMG \
- EFI/Linux/$machine_id-$kdump_kernelver.efi"
-
- # The kernel of OSTree based systems is not in the standard locations.
- if is_ostree; then
- boot_dirlist="$(echo /boot/ostree/*) $boot_dirlist"
- fi
-
- # Use BOOT_IMAGE as reference if possible, strip the GRUB root device prefix in (hd0,gpt1) format
- boot_img="$(grep -P -o '^BOOT_IMAGE=(\S+)' /proc/cmdline | sed "s/^BOOT_IMAGE=\((\S*)\)\?\(\S*\)/\2/")"
- if [[ "$boot_img" == *"$kdump_kernelver" ]]; then
- boot_imglist="$boot_img $boot_imglist"
- fi
-
- for dir in $boot_dirlist; do
- for img in $boot_imglist; do
- if [[ -f "$dir/$img" ]]; then
- kdump_kernel=$(echo "$dir/$img" | tr -s '/')
- break 2
- fi
- done
- done
- echo "$kdump_kernel"
-}
-
-_is_valid_kver()
-{
- [[ -f /usr/lib/modules/$1/modules.dep ]]
-}
-
-# This function is introduced since 64k variant may be installed on 4k or vice versa
-# $1 the kernel path name.
-parse_kver_from_path()
-{
- local _img _kver
-
- [[ -z "$1" ]] && return
-
- _img=$1
- BLS_ENTRY_TOKEN=$(</etc/machine-id)
-
- # Fedora standard installation, i.e. $BOOT/vmlinuz-<version>
- _kver=${_img##*/vmlinuz-}
- _kver=${_kver%"$KDUMP_IMG_EXT"}
- if _is_valid_kver "$_kver"; then
- echo "$_kver"
- return
- fi
-
- # BLS recommended image names, i.e. $BOOT/<token>/<version>/linux
- _kver=${_img##*/"$BLS_ENTRY_TOKEN"/}
- _kver=${_kver%%/*}
- if _is_valid_kver "$_kver"; then
- echo "$_kver"
- return
- fi
-
- # Fedora UKI installation, i.e. $BOOT/efi/EFI/Linux/<token>-<version>.efi
- _kver=${_img##*/"$BLS_ENTRY_TOKEN"-}
- _kver=${_kver%.efi}
- if _is_valid_kver "$_kver"; then
- echo "$_kver"
- return
- fi
-
- ddebug "Could not parse version from $_img"
-}
-
-_get_kdump_kernel_version()
-{
- local _version _version_nondebug
-
- if [[ -n "$KDUMP_KERNELVER" ]]; then
- echo "$KDUMP_KERNELVER"
- return
- fi
-
- _version=$(uname -r)
- if [[ ! "$_version" =~ [+|-]debug$ ]]; then
- echo "$_version"
- return
- fi
-
- _version_nondebug=${_version%+debug}
- _version_nondebug=${_version_nondebug%-debug}
- if _is_valid_kver "$_version_nondebug"; then
- dinfo "Use of debug kernel detected. Trying to use $_version_nondebug"
- echo "$_version_nondebug"
- else
- dinfo "Use of debug kernel detected but cannot find $_version_nondebug. Falling back to $_version"
- echo "$_version"
- fi
-}
-
-#
-# Detect initrd and kernel location, results are stored in global environmental variables:
-# KDUMP_BOOTDIR, KDUMP_KERNELVER, KDUMP_KERNEL, DEFAULT_INITRD, and KDUMP_INITRD
-#
-# Expectes KDUMP_BOOTDIR, KDUMP_IMG, KDUMP_IMG_EXT, KDUMP_KERNELVER to be loaded from config already
-# and will prefer already set values so user can specify custom kernel/initramfs location
-#
-prepare_kdump_bootinfo()
-{
- local boot_initrdlist default_initrd_base var_target_initrd_dir
-
- KDUMP_KERNELVER=$(_get_kdump_kernel_version)
- KDUMP_KERNEL=$(prepare_kdump_kernel "$KDUMP_KERNELVER")
-
- if ! [[ -e $KDUMP_KERNEL ]]; then
- derror "Failed to detect kdump kernel location"
- return 1
- fi
-
- # For 64k variant, e.g. vmlinuz-5.14.0-327.el9.aarch64+64k-debug
- if [[ "$KDUMP_KERNEL" == *"+debug" || "$KDUMP_KERNEL" == *"64k-debug" ]]; then
- dwarn "Using debug kernel, you may need to set a larger crashkernel than the default value."
- fi
-
- # Set KDUMP_BOOTDIR to where kernel image is stored
- if is_uki "$KDUMP_KERNEL"; then
- KDUMP_BOOTDIR=/boot
- else
- KDUMP_BOOTDIR=$(dirname "$KDUMP_KERNEL")
- fi
-
- # Default initrd should just stay aside of kernel image, try to find it in KDUMP_BOOTDIR
- boot_initrdlist="initramfs-$KDUMP_KERNELVER.img initrd"
- for initrd in $boot_initrdlist; do
- if [[ -f "$KDUMP_BOOTDIR/$initrd" ]]; then
- default_initrd_base="$initrd"
- DEFAULT_INITRD="$KDUMP_BOOTDIR/$default_initrd_base"
- break
- fi
- done
-
- # Create kdump initrd basename from default initrd basename
- # initramfs-5.7.9-200.fc32.x86_64.img => initramfs-5.7.9-200.fc32.x86_64kdump.img
- # initrd => initrdkdump
- if [[ -z $default_initrd_base ]]; then
- kdump_initrd_base=initramfs-${KDUMP_KERNELVER}kdump.img
- elif [[ $default_initrd_base == *.* ]]; then
- kdump_initrd_base=${default_initrd_base%.*}kdump.${DEFAULT_INITRD##*.}
- else
- kdump_initrd_base=${default_initrd_base}kdump
- fi
-
- # Place kdump initrd in $(/var/lib/kdump) if $(KDUMP_BOOTDIR) not writable
- if [[ ! -w $KDUMP_BOOTDIR ]]; then
- var_target_initrd_dir="/var/lib/kdump"
- mkdir -p "$var_target_initrd_dir"
- KDUMP_INITRD="$var_target_initrd_dir/$kdump_initrd_base"
- else
- KDUMP_INITRD="$KDUMP_BOOTDIR/$kdump_initrd_base"
- fi
-}
-
-get_watchdog_drvs()
-{
- local _wdtdrvs _drv _dir
-
- for _dir in /sys/class/watchdog/*; do
- # device/modalias will return driver of this device
- [[ -f "$_dir/device/modalias" ]] || continue
- _drv=$(< "$_dir/device/modalias")
- _drv=$(modprobe --set-version "$KDUMP_KERNELVER" -R "$_drv" 2> /dev/null)
- for i in $_drv; do
- if ! [[ " $_wdtdrvs " == *" $i "* ]]; then
- _wdtdrvs="$_wdtdrvs $i"
- fi
- done
- done
-
- echo "$_wdtdrvs"
-}
-
-_cmdline_parse()
-{
- local opt val
-
- while read -r opt; do
- if [[ $opt =~ = ]]; then
- val=${opt#*=}
- opt=${opt%%=*}
- # ignore options like 'foo='
- [[ -z $val ]] && continue
- # xargs removes quotes, add them again
- [[ $val =~ [[:space:]] ]] && val="\"$val\""
- else
- val=""
- fi
-
- echo "$opt $val"
- done <<< "$(echo "$1" | xargs -n 1 echo)"
-}
-
-#
-# prepare_cmdline <commandline> <commandline remove> <commandline append>
-# This function performs a series of edits on the command line.
-# Store the final result in global $KDUMP_COMMANDLINE.
-prepare_cmdline()
-{
- local in out append opt val id drv
- local -A remove
-
- in=${1:-$(< /proc/cmdline)}
- while read -r opt val; do
- [[ -n "$opt" ]] || continue
- remove[$opt]=1
- done <<< "$(_cmdline_parse "$2")"
- append=$3
-
-
- # These params should always be removed
- remove[crashkernel]=1
- remove[panic_on_warn]=1
-
- # Always remove "root=X", as we now explicitly generate all kinds
- # of dump target mount information including root fs.
- #
- # We do this before KDUMP_COMMANDLINE_APPEND, if one really cares
- # about it(e.g. for debug purpose), then can pass "root=X" using
- # KDUMP_COMMANDLINE_APPEND.
- remove[root]=1
-
- # With the help of "--hostonly-cmdline", we can avoid some interitage.
- remove[rd.lvm.lv]=1
- remove[rd.luks.uuid]=1
- remove[rd.dm.uuid]=1
- remove[rd.md.uuid]=1
- remove[fcoe]=1
-
- # Remove netroot, rd.iscsi.initiator and iscsi_initiator since
- # we get duplicate entries for the same in case iscsi code adds
- # it as well.
- remove[netroot]=1
- remove[rd.iscsi.initiator]=1
- remove[iscsi_initiator]=1
-
- while read -r opt val; do
- [[ -n "$opt" ]] || continue
- [[ -n "${remove[$opt]}" ]] && continue
-
- if [[ -n "$val" ]]; then
- out+="$opt=$val "
- else
- out+="$opt "
- fi
- done <<< "$(_cmdline_parse "$in")"
-
- out+="$append "
-
- id=$(get_bootcpu_apicid)
- if [[ -n "${id}" ]]; then
- out+="disable_cpu_apicid=$id "
- fi
-
- # If any watchdog is used, set it's pretimeout to 0. pretimeout let
- # watchdog panic the kernel first, and reset the system after the
- # panic. If the system is already in kdump, panic is not helpful
- # and only increase the chance of watchdog failure.
- for drv in $(get_watchdog_drvs); do
- out+="$drv.pretimeout=0 "
-
- if [[ $drv == hpwdt ]]; then
- # hpwdt have a special parameter kdumptimeout, it is
- # only supposed to be set to non-zero in first kernel.
- # In kdump, non-zero value could prevent the watchdog
- # from resetting the system.
- out+="$drv.kdumptimeout=0 "
- fi
- done
-
- # This is a workaround on AWS platform. Always remove irqpoll since it
- # may cause the hot-remove of some pci hotplug device.
- is_aws_aarch64 && out=$(echo "$out" | sed -e "/\<irqpoll\>//")
-
- # Always disable gpt-auto-generator as it hangs during boot of the
- # crash kernel. Furthermore we know which disk will be used for dumping
- # (if at all) and add it explicitly.
- is_uki "$KDUMP_KERNEL" && out+="rd.systemd.gpt_auto=no "
-
- # Trim unnecessary whitespaces
- echo "$out" | sed -e "s/^ *//g" -e "s/ *$//g" -e "s/ \+/ /g"
-}
-
-PROC_IOMEM=/proc/iomem
-#get system memory size i.e. memblock.memory.total_size in the unit of GB
-get_system_size()
-{
- sum=$(sed -n "s/\s*\([0-9a-fA-F]\+\)-\([0-9a-fA-F]\+\) : System RAM$/+ 0x\2 - 0x\1 + 1/p" $PROC_IOMEM)
- echo $(( (sum) / 1024 / 1024 / 1024))
-}
-
-# Return the recommended size for the reserved crashkernel memory
-# depending on the system memory size.
-#
-# This functions is expected to be consistent with the parse_crashkernel_mem()
-# in kernel i.e. how kernel allocates the kdump memory given the crashkernel
-# parameter crashkernel=range1:size1[,range2:size2,…] and the system memory
-# size.
-get_recommend_size()
-{
- local mem_size=$1
- local _ck_cmdline=$2
- local range start start_unit end end_unit size
-
- while read -r -d , range; do
- # need to use non-default IFS as double spaces are used as a
- # single delimiter while commas aren't...
- IFS=, read -r start start_unit end end_unit size <<< \
- "$(echo "$range" | sed -n "s/\([0-9]\+\)\([GT]\?\)-\([0-9]*\)\([GT]\?\):\([0-9]\+[MG]\)/\1,\2,\3,\4,\5/p")"
-
- # aka. 102400T
- end=${end:-104857600}
- [[ "$end_unit" == T ]] && end=$((end * 1024))
- [[ "$start_unit" == T ]] && start=$((start * 1024))
-
- if [[ $mem_size -ge $start ]] && [[ $mem_size -lt $end ]]; then
- echo "$size"
- return
- fi
-
- # append a ',' as read expects the 'file' to end with a delimiter
- done <<< "$_ck_cmdline,"
-
- # no matching range found
- echo "0M"
-}
-
-has_mlx5()
-{
- [[ -d /sys/bus/pci/drivers/mlx5_core ]]
-}
-
-has_aarch64_smmu()
-{
- ls /sys/devices/platform/arm-smmu-* 1> /dev/null 2>&1
-}
-
-is_memsize() { [[ "$1" =~ ^[+-]?[0-9]+[KkMmGgTtPbEe]?$ ]]; }
-
-# range defined for crashkernel parameter
-# i.e. <start>-[<end>]
-is_memrange()
-{
- is_memsize "${1%-*}" || return 1
- [[ -n ${1#*-} ]] || return 0
- is_memsize "${1#*-}"
-}
-
-to_bytes()
-{
- local _s
-
- _s="$1"
- is_memsize "$_s" || return 1
-
- case "${_s: -1}" in
- K|k)
- _s=${_s::-1}
- _s="$((_s * 1024))"
- ;;
- M|m)
- _s=${_s::-1}
- _s="$((_s * 1024 * 1024))"
- ;;
- G|g)
- _s=${_s::-1}
- _s="$((_s * 1024 * 1024 * 1024))"
- ;;
- T|t)
- _s=${_s::-1}
- _s="$((_s * 1024 * 1024 * 1024 * 1024))"
- ;;
- P|p)
- _s=${_s::-1}
- _s="$((_s * 1024 * 1024 * 1024 * 1024 * 1024))"
- ;;
- E|e)
- _s=${_s::-1}
- _s="$((_s * 1024 * 1024 * 1024 * 1024 * 1024 * 1024))"
- ;;
- *)
- ;;
- esac
- echo "$_s"
-}
-
-memsize_add()
-{
- local -a units=("" "K" "M" "G" "T" "P" "E")
- local i a b
-
- a=$(to_bytes "$1") || return 1
- b=$(to_bytes "$2") || return 1
- i=0
-
- (( a += b ))
- while :; do
- [[ $(( a / 1024 )) -eq 0 ]] && break
- [[ $(( a % 1024 )) -ne 0 ]] && break
- [[ $(( ${#units[@]} - 1 )) -eq $i ]] && break
-
- (( a /= 1024 ))
- (( i += 1 ))
- done
-
- echo "${a}${units[$i]}"
-}
-
-_crashkernel_parse()
-{
- local ck entry
- local range size offset
-
- ck="$1"
-
- if [[ "$ck" == *@* ]]; then
- offset="@${ck##*@}"
- ck=${ck%@*}
- elif [[ "$ck" == *,high ]] || [[ "$ck" == *,low ]]; then
- offset=",${ck##*,}"
- ck=${ck%,*}
- else
- offset=''
- fi
-
- while read -d , -r entry; do
- [[ -n "$entry" ]] || continue
- if [[ "$entry" == *:* ]]; then
- range=${entry%:*}
- size=${entry#*:}
- else
- range=""
- size=${entry}
- fi
-
- echo "$size;$range;"
- done <<< "$ck,"
- echo ";;$offset"
-}
-
-# $1 crashkernel command line parameter
-# $2 size to be added
-_crashkernel_add()
-{
- local ck delta ret
- local range size offset
-
- ck="$1"
- delta="$2"
- ret=""
-
- while IFS=';' read -r size range offset; do
- if [[ -n "$offset" ]]; then
- ret="${ret%,}$offset"
- break
- fi
-
- [[ -n "$size" ]] || continue
- if [[ -n "$range" ]]; then
- is_memrange "$range" || return 1
- ret+="$range:"
- fi
-
- size=$(memsize_add "$size" "$delta") || return 1
- ret+="$size,"
- done < <( _crashkernel_parse "$ck")
-
- echo "${ret%,}"
-}
-
-# get default crashkernel
-# $1 dump mode, if not specified, dump_mode will be judged by is_fadump_capable
-# $2 kernel-release, if not specified, got by _get_kdump_kernel_version
-kdump_get_arch_recommend_crashkernel()
-{
- local _arch _ck_cmdline _dump_mode
- local _delta=0
-
- if [[ -z "$1" ]]; then
- if is_fadump_capable; then
- _dump_mode=fadump
- else
- _dump_mode=kdump
- fi
- else
- _dump_mode=$1
- fi
-
- _arch=$(uname -m)
-
- if [[ $_arch == "x86_64" ]] || [[ $_arch == "s390x" ]]; then
- _ck_cmdline="1G-4G:192M,4G-64G:256M,64G-:512M"
- is_sme_or_sev_active && ((_delta += 64))
- elif [[ $_arch == "aarch64" ]]; then
- local _running_kernel
-
- # Base line for 4K variant kernel. The formula is based on x86 plus extra = 64M
- _ck_cmdline="1G-4G:256M,4G-64G:320M,64G-:576M"
- if [[ -z "$2" ]]; then
- _running_kernel=$(_get_kdump_kernel_version)
- else
- _running_kernel=$2
- fi
-
- # the naming convention of 64k variant suffixes with +64k, e.g. "vmlinuz-5.14.0-312.el9.aarch64+64k"
- if echo "$_running_kernel" | grep -q 64k; then
- # Without smmu, the diff of MemFree between 4K and 64K measured on a high end aarch64 machine is 82M.
- # Picking up 100M to cover this diff. And finally, we have "1G-4G:356M;4G-64G:420M;64G-:676M"
- ((_delta += 100))
- # On a 64K system, the extra 384MB is calculated by: cmdq_num * 16 bytes + evtq_num * 32B + priq_num * 16B
- # While on a 4K system, it is negligible
- has_aarch64_smmu && ((_delta += 384))
- #64k kernel, mlx5 consumes extra 188M memory, and choose 200M
- has_mlx5 && ((_delta += 200))
- else
- #4k kernel, mlx5 consumes extra 124M memory, and choose 150M
- has_mlx5 && ((_delta += 150))
- fi
- elif [[ $_arch == "ppc64le" ]]; then
- if [[ $_dump_mode == "fadump" ]]; then
- _ck_cmdline="4G-16G:768M,16G-64G:1G,64G-128G:2G,128G-1T:4G,1T-2T:6G,2T-4T:12G,4T-8T:20G,8T-16T:36G,16T-32T:64G,32T-64T:128G,64T-:180G"
- else
- _ck_cmdline="2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G"
- fi
- fi
-
- echo -n "$(_crashkernel_add "$_ck_cmdline" "${_delta}M")"
-}
-
-# return recommended size based on current system RAM size
-# $1: kernel version, if not set, will defaults to $(uname -r)
-kdump_get_arch_recommend_size()
-{
- local _ck_cmdline _sys_mem
-
- if ! [[ -r "/proc/iomem" ]]; then
- echo "Error, can not access /proc/iomem."
- return 1
- fi
- _sys_mem=$(get_system_size)
- _ck_cmdline=$(kdump_get_arch_recommend_crashkernel)
- _ck_cmdline=${_ck_cmdline//-:/-102400T:}
- get_recommend_size "$_sys_mem" "$_ck_cmdline"
-}
-
-# Print all underlying crypt devices of a block device
-# print nothing if device is not on top of a crypt device
-# $1: the block device to be checked in maj:min format
-get_luks_crypt_dev()
-{
- local _type
-
- [[ -b /dev/block/$1 ]] || return 1
-
- _type=$(blkid -u filesystem,crypto -o export -- "/dev/block/$1" | \
- sed -n -E "s/^TYPE=(.*)$/\1/p")
- [[ $_type == "crypto_LUKS" ]] && echo "$1"
-
- for _x in "/sys/dev/block/$1/slaves/"*; do
- [[ -f $_x/dev ]] || continue
- [[ $_x/subsystem -ef /sys/class/block ]] || continue
- get_luks_crypt_dev "$(< "$_x/dev")"
- done
-}
-
-# kdump_get_maj_min <device>
-# Prints the major and minor of a device node.
-# Example:
-# $ get_maj_min /dev/sda2
-# 8:2
-kdump_get_maj_min()
-{
- local _majmin
- _majmin="$(stat -L -c '%t:%T' "$1" 2> /dev/null)"
- printf "%s" "$((0x${_majmin%:*})):$((0x${_majmin#*:}))"
-}
-
-get_all_kdump_crypt_dev()
-{
- local _dev
-
- for _dev in $(get_block_dump_target); do
- get_luks_crypt_dev "$(kdump_get_maj_min "$_dev")"
- done
-}
diff --git a/kdump-logger.sh b/kdump-logger.sh
deleted file mode 100755
index 3fd433d..0000000
--- a/kdump-logger.sh
+++ /dev/null
@@ -1,355 +0,0 @@
-#!/bin/sh
-#
-# This comes from the dracut-logger.sh
-#
-# The logger defined 4 logging levels:
-# - ddebug (4)
-# The DEBUG Level designates fine-grained informational events that are most
-# useful to debug an application.
-# - dinfo (3)
-# The INFO level designates informational messages that highlight the
-# progress of the application at coarse-grained level.
-# - dwarn (2)
-# The WARN level designates potentially harmful situations.
-# - derror (1)
-# The ERROR level designates error events that might still allow the
-# application to continue running.
-#
-# Logging is controlled by following global variables:
-# - @var kdump_stdloglvl - logging level to standard error (console output)
-# - @var kdump_sysloglvl - logging level to syslog (by logger command)
-# - @var kdump_kmsgloglvl - logging level to /dev/kmsg (only for boot-time)
-#
-# If any of the variables is not set, the function dlog_init() sets it to default:
-# - In the first kernel:
-# - @var kdump_stdloglvl = 3 (info)
-# - @var kdump_sysloglvl = 0 (no logging)
-# - @var kdump_kmsgloglvl = 0 (no logging)
-#
-# -In the second kernel:
-# - @var kdump_stdloglvl = 0 (no logging)
-# - @var kdump_sysloglvl = 3 (info)
-# - @var kdump_kmsgloglvl = 0 (no logging)
-#
-# First of all you have to start with dlog_init() function which initializes
-# required variables. Don't call any other logging function before that one!
-#
-# The code in this file might be run in an environment without bash.
-# Any code added must be POSIX compliant.
-
-# Define vairables for the log levels in this module.
-kdump_stdloglvl=""
-kdump_sysloglvl=""
-kdump_kmsgloglvl=""
-
-# The dracut-lib.sh is only available in the second kernel, and it won't
-# be used in the first kernel because the dracut-lib.sh is invisible in
-# the first kernel.
-if [ -f /lib/dracut-lib.sh ]; then
- . /lib/dracut-lib.sh
-fi
-
-# @brief Get the log level from kernel command line.
-# @retval 1 if something has gone wrong
-# @retval 0 on success.
-#
-get_kdump_loglvl()
-{
- [ -f /lib/dracut-lib.sh ] && kdump_sysloglvl=$(getarg rd.kdumploglvl)
- [ -z "$kdump_sysloglvl" ] && return 1;
-
- if [ -f /lib/dracut-lib.sh ] && ! isdigit "$kdump_sysloglvl"; then
- return 1
- fi
-
- return 0
-}
-
-# @brief Check the log level.
-# @retval 1 if something has gone wrong
-# @retval 0 on success.
-#
-check_loglvl()
-{
- case "$1" in
- 0|1|2|3|4)
- return 0
- ;;
- *)
- return 1
- ;;
- esac
-}
-
-# @brief Initializes Logger.
-# @retval 1 if something has gone wrong
-# @retval 0 on success.
-#
-dlog_init() {
- ret=0
-
- if [ -s /proc/vmcore ];then
- if ! get_kdump_loglvl; then
- logger -t "kdump[$$]" -p warn -- "Kdump is using the default log level(3)."
- kdump_sysloglvl=3
- fi
- kdump_stdloglvl=0
- kdump_kmsgloglvl=0
- else
- kdump_stdloglvl=$KDUMP_STDLOGLVL
- kdump_sysloglvl=$KDUMP_SYSLOGLVL
- kdump_kmsgloglvl=$KDUMP_KMSGLOGLVL
- fi
-
- [ -z "$kdump_stdloglvl" ] && kdump_stdloglvl=3
- [ -z "$kdump_sysloglvl" ] && kdump_sysloglvl=0
- [ -z "$kdump_kmsgloglvl" ] && kdump_kmsgloglvl=0
-
- for loglvl in "$kdump_stdloglvl" "$kdump_kmsgloglvl" "$kdump_sysloglvl"; do
- if ! check_loglvl "$loglvl"; then
- echo "Illegal log level: $kdump_stdloglvl $kdump_kmsgloglvl $kdump_sysloglvl"
- return 1
- fi
- done
-
- # Skip initialization if it's already done.
- [ -n "$kdump_maxloglvl" ] && return 0
-
- if [ "$UID" -ne 0 ]; then
- kdump_kmsgloglvl=0
- kdump_sysloglvl=0
- fi
-
- if [ "$kdump_sysloglvl" -gt 0 ]; then
- if [ -d /run/systemd/journal ] \
- && systemd-cat --version 1>/dev/null 2>&1 \
- && systemctl --quiet is-active systemd-journald.socket 1>/dev/null 2>&1; then
- readonly _systemdcatfile="/var/tmp/systemd-cat"
- mkfifo "$_systemdcatfile" 1>/dev/null 2>&1
- readonly _dlogfd=15
- systemd-cat -t 'kdump' --level-prefix=true <"$_systemdcatfile" &
- exec 15>"$_systemdcatfile"
- elif ! [ -S /dev/log ] && [ -w /dev/log ] || ! command -v logger >/dev/null; then
- # We cannot log to syslog, so turn this facility off.
- kdump_kmsgloglvl=$kdump_sysloglvl
- kdump_sysloglvl=0
- ret=1
- errmsg="No '/dev/log' or 'logger' included for syslog logging"
- fi
- fi
-
- kdump_maxloglvl=0
- for _dlog_lvl in $kdump_stdloglvl $kdump_sysloglvl $kdump_kmsgloglvl; do
- [ $_dlog_lvl -gt $kdump_maxloglvl ] && kdump_maxloglvl=$_dlog_lvl
- done
- readonly kdump_maxloglvl
- export kdump_maxloglvl
-
- if [ $kdump_stdloglvl -lt 4 ] && [ $kdump_kmsgloglvl -lt 4 ] && [ $kdump_sysloglvl -lt 4 ]; then
- unset ddebug
- ddebug() { :; };
- fi
-
- if [ $kdump_stdloglvl -lt 3 ] && [ $kdump_kmsgloglvl -lt 3 ] && [ $kdump_sysloglvl -lt 3 ]; then
- unset dinfo
- dinfo() { :; };
- fi
-
- if [ $kdump_stdloglvl -lt 2 ] && [ $kdump_kmsgloglvl -lt 2 ] && [ $kdump_sysloglvl -lt 2 ]; then
- unset dwarn
- dwarn() { :; };
- unset dwarning
- dwarning() { :; };
- fi
-
- if [ $kdump_stdloglvl -lt 1 ] && [ $kdump_kmsgloglvl -lt 1 ] && [ $kdump_sysloglvl -lt 1 ]; then
- unset derror
- derror() { :; };
- fi
-
- [ -n "$errmsg" ] && derror "$errmsg"
-
- return $ret
-}
-
-## @brief Converts numeric level to logger priority defined by POSIX.2.
-#
-# @param $1: Numeric logging level in range from 1 to 4.
-# @retval 1 if @a lvl is out of range.
-# @retval 0 if @a lvl is correct.
-# @result Echoes logger priority.
-_lvl2syspri() {
- case "$1" in
- 1) echo error;;
- 2) echo warning;;
- 3) echo info;;
- 4) echo debug;;
- *) return 1;;
- esac
-}
-
-## @brief Converts logger numeric level to syslog log level
-#
-# @param $1: Numeric logging level in range from 1 to 4.
-# @retval 1 if @a lvl is out of range.
-# @retval 0 if @a lvl is correct.
-# @result Echoes kernel console numeric log level
-#
-# Conversion is done as follows:
-#
-# <tt>
-# none -> LOG_EMERG (0)
-# none -> LOG_ALERT (1)
-# none -> LOG_CRIT (2)
-# ERROR(1) -> LOG_ERR (3)
-# WARN(2) -> LOG_WARNING (4)
-# none -> LOG_NOTICE (5)
-# INFO(3) -> LOG_INFO (6)
-# DEBUG(4) -> LOG_DEBUG (7)
-# </tt>
-#
-# @see /usr/include/sys/syslog.h
-_dlvl2syslvl() {
- case "$1" in
- 1) set -- 3;;
- 2) set -- 4;;
- 3) set -- 6;;
- 4) set -- 7;;
- *) return 1;;
- esac
-
- # The number is constructed by multiplying the facility by 8 and then
- # adding the level.
- # About The Syslog Protocol, please refer to the RFC5424 for more details.
- echo $((24 + $1))
-}
-
-## @brief Prints to stderr, to syslog and/or /dev/kmsg given message with
-# given level (priority).
-#
-# @param $1: Numeric logging level.
-# @param $2: Message.
-# @retval 0 It's always returned, even if logging failed.
-#
-# @note This function is not supposed to be called manually. Please use
-# dinfo(), ddebug(), or others instead which wrap this one.
-#
-# This is core logging function which logs given message to standard error
-# and/or syslog (with POSIX shell command <tt>logger</tt>) and/or to /dev/kmsg.
-# The format is following:
-#
-# <tt>X: some message</tt>
-#
-# where @c X is the first letter of logging level. See module description for
-# details on that.
-#
-# Message to syslog is sent with tag @c kdump. Priorities are mapped as
-# following:
-# - @c ERROR to @c error
-# - @c WARN to @c warning
-# - @c INFO to @c info
-# - @c DEBUG to @c debug
-_do_dlog() {
- [ "$1" -le $kdump_stdloglvl ] && printf -- 'kdump: %s\n' "$2" >&2
-
- if [ "$1" -le $kdump_sysloglvl ]; then
- if [ "$_dlogfd" ]; then
- printf -- "<%s>%s\n" "$(($(_dlvl2syslvl "$1") & 7))" "$2" 1>&$_dlogfd
- else
- logger -t "kdump[$$]" -p "$(_lvl2syspri "$1")" -- "$2"
- fi
- fi
-
- [ "$1" -le $kdump_kmsgloglvl ] && \
- echo "<$(_dlvl2syslvl "$1")>kdump[$$] $2" >/dev/kmsg
-}
-
-## @brief Internal helper function for _do_dlog()
-#
-# @param $1: Numeric logging level.
-# @param $2 [...]: Message.
-# @retval 0 It's always returned, even if logging failed.
-#
-# @note This function is not supposed to be called manually. Please use
-# dinfo(), ddebug(), or others instead which wrap this one.
-#
-# This function calls _do_dlog() either with parameter msg, or if
-# none is given, it will read standard input and will use every line as
-# a message.
-#
-# This enables:
-# dwarn "This is a warning"
-# echo "This is a warning" | dwarn
-dlog() {
- [ -z "$kdump_maxloglvl" ] && return 0
- [ "$1" -le "$kdump_maxloglvl" ] || return 0
-
- if [ $# -gt 1 ]; then
- _dlog_lvl=$1; shift
- _do_dlog "$_dlog_lvl" "$*"
- else
- while read -r line || [ -n "$line" ]; do
- _do_dlog "$1" "$line"
- done
- fi
-}
-
-## @brief Logs message at DEBUG level (4)
-#
-# @param msg Message.
-# @retval 0 It's always returned, even if logging failed.
-ddebug() {
- set +x
- dlog 4 "$@"
- if [ -n "$debug" ]; then
- set -x
- fi
-}
-
-## @brief Logs message at INFO level (3)
-#
-# @param msg Message.
-# @retval 0 It's always returned, even if logging failed.
-dinfo() {
- set +x
- dlog 3 "$@"
- if [ -n "$debug" ]; then
- set -x
- fi
-}
-
-## @brief Logs message at WARN level (2)
-#
-# @param msg Message.
-# @retval 0 It's always returned, even if logging failed.
-dwarn() {
- set +x
- dlog 2 "$@"
- if [ -n "$debug" ]; then
- set -x
- fi
-}
-
-## @brief It's an alias to dwarn() function.
-#
-# @param msg Message.
-# @retval 0 It's always returned, even if logging failed.
-dwarning() {
- set +x
- dwarn "$@"
- if [ -n "$debug" ]; then
- set -x
- fi
-}
-
-## @brief Logs message at ERROR level (1)
-#
-# @param msg Message.
-# @retval 0 It's always returned, even if logging failed.
-derror() {
- set +x
- dlog 1 "$@"
- if [ -n "$debug" ]; then
- set -x
- fi
-}
diff --git a/kdump-migrate-action.sh b/kdump-migrate-action.sh
deleted file mode 100755
index c516639..0000000
--- a/kdump-migrate-action.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh
-
-systemctl is-active kdump
-if [ $? -ne 0 ]; then
- exit 0
-fi
-
-/usr/lib/kdump/kdump-restart.sh
diff --git a/kdump-restart.sh b/kdump-restart.sh
deleted file mode 100644
index a9ecfc1..0000000
--- a/kdump-restart.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-export PATH="$PATH:/usr/bin:/usr/sbin"
-
-exec >>/var/log/kdump-migration.log 2>&1
-
-echo "kdump: Partition Migration detected. Rebuilding initramfs image to reload."
-/usr/bin/kdumpctl rebuild
-/usr/bin/kdumpctl reload
diff --git a/kdump-udev-throttler b/kdump-udev-throttler
deleted file mode 100755
index cd77a31..0000000
--- a/kdump-udev-throttler
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-# This util helps to reduce the workload of kdump service restarting
-# on udev event. When hotplugging memory / CPU, multiple udev
-# events may be triggered concurrently, and obviously, we don't want
-# to restart kdump service for each event.
-
-# This script will be called by udev, and make sure kdump service is
-# restart after all events we are watching are settled.
-
-# On each call, this script will update try to aquire the $throttle_lock
-# The first instance acquired the file lock will keep waiting for events
-# to settle and then reload kdump. Other instances will just exit
-# In this way, we can make sure kdump service is restarted immediately
-# and for exactly once after udev events are settled.
-
-throttle_lock="/var/lock/kdump-udev-throttle"
-
-exec 9>$throttle_lock
-if [ $? -ne 0 ]; then
- echo "Failed to create the lock file! Fallback to non-throttled kdump service restart"
- /bin/kdumpctl reload
- exit 1
-fi
-
-flock -n 9
-if [ $? -ne 0 ]; then
- echo "Throttling kdump restart for concurrent udev event"
- exit 0
-fi
-
-# Wait for at least 1 second, at most 4 seconds for udev to settle
-# Idealy we will have a less than 1 second lag between udev events settle
-# and kdump reload
-sleep 1 && udevadm settle --timeout 3
-
-# Release the lock, /bin/kdumpctl will block and make the process
-# holding two locks at the same time and we might miss some events
-exec 9>&-
-
-/bin/kdumpctl reload
-
-exit 0
diff --git a/kdump.conf.5 b/kdump.conf.5
deleted file mode 100644
index 20b1620..0000000
--- a/kdump.conf.5
+++ /dev/null
@@ -1,397 +0,0 @@
-.TH KDUMP.CONF 5 "07/23/2008" "kexec-tools"
-
-.SH NAME
-kdump.conf \- configuration file for kdump kernel.
-
-.SH DESCRIPTION
-
-kdump.conf is a configuration file for the kdump kernel crash
-collection service.
-
-kdump.conf provides post-kexec instructions to the kdump kernel. It is
-stored in the initrd file managed by the kdump service. If you change
-this file and do not want to reboot in order for the changes to take
-effect, restart the kdump service to rebuild the initrd.
-
-For most configurations, you can simply review the examples provided
-in the stock /etc/kdump.conf.
-
-.B NOTE:
-For filesystem dumps the dump target must be mounted before building
-kdump initramfs.
-
-kdump.conf only affects the behavior of the initramfs. Please read the
-kdump operational flow section of kexec-kdump-howto.txt in the docs to better
-understand how this configuration file affects the behavior of kdump.
-
-.SH OPTIONS
-
-.B auto_reset_crashkernel <yes|no>
-.RS
-determine whether to reset kernel crashkernel parameter to the default value
-or not when kexec-tools is updated or a new kernel is installed. The default
-crashkernel values are different for different architectures and also take the
-following factors into consideration,
-.IP
-\- AMD Secure Memory Encryption (SME) and Secure Encrypted Virtualization (SEV)
-.IP
-\- Mellanox 5th generation network driver
-.IP
-\- aarch64 64k kernel
-.IP
-\- Firmware-assisted dump (FADump)
-.PP
-Since the kernel crasherkernel parameter will be only reset when kexec-tools is
-updated or a new kernel is installed, you need to call "kdumpctl
-reset-crashkernel [--kernel=path_to_kernel]" if you want to use the default
-value set after having enabled features like SME/SEV for a specific kernel. And
-you should also reboot the system for the new crashkernel value to take effect.
-Also see kdumpctl(8).
-.PP
-.RE
-
-.B raw <partition>
-.RS
-Will dd /proc/vmcore into <partition>. Use persistent device names for
-partition devices, such as /dev/vg/<devname>.
-.RE
-
-.B nfs <nfs mount>
-.RS
-Will mount nfs to <mnt>, and copy /proc/vmcore to <mnt>/<path>/%HOST-%DATE/,
-supports DNS. Note that a fqdn should be used as the server name in the
-mount point.
-.RE
-
-.B ssh <user@server>
-.RS
-Will save /proc/vmcore through ssh pipe to <user@server>:<path>/%HOST-%DATE/,
-supports DNS. NOTE: make sure user has necessary write permissions on
-server and that a fqdn is used as the server name.
-.RE
-
-.B sshkey <path>
-.RS
-Specify the path of the ssh key to use when dumping via ssh.
-The default value is /root/.ssh/kdump_id_rsa.
-.RE
-
-.B <fs type> <partition>
-.RS
-Will mount -t <fs type> <partition> <mnt>, and copy /proc/vmcore to
-<mnt>/<path>/%HOST_IP-%DATE/. NOTE: <partition> can be a device node, label
-or uuid. It's recommended to use persistent device names such as
-/dev/vg/<devname>. Otherwise it's suggested to use label or uuid.
-.RE
-
-.B path <path>
-.RS
-"path" represents the file system path in which vmcore will be saved.
-If a dump target is specified in kdump.conf, then "path" is relative to the
-specified dump target.
-.PP
-Interpretation of "path" changes a bit if the user didn't specify any dump
-target explicitly in kdump.conf. In this case, "path" represents the
-absolute path from root. The dump target and adjusted path are arrived
-at automatically depending on what's mounted in the current system.
-.PP
-Ignored for raw device dumps. If unset, will use the default "/var/crash".
-.RE
-
-.B core_collector <command> <options>
-.RS
-This allows you to specify the command to copy the vmcore.
-The default is makedumpfile, which on some architectures can drastically reduce
-core file size. See /sbin/makedumpfile --help for a list of options.
-Note that the -i and -g options are not needed here, as the initrd
-will automatically be populated with a config file appropriate
-for the running kernel.
-.PP
-Note 1: About default core collector:
-The default core_collector for raw/ssh dump is:
-"makedumpfile -F -l --message-level 7 -d 31".
-The default core_collector for other targets is:
-"makedumpfile -l --message-level 7 -d 31".
-Even if core_collector option is commented out in kdump.conf, makedumpfile
-is the default core collector and kdump uses it internally.
-If one does not want makedumpfile as default core_collector, then they
-need to specify one using core_collector option to change the behavior.
-.PP
-Note 2: If "makedumpfile -F" is used then you will get a flattened format
-vmcore.flat, you will need to use "makedumpfile -R" to rearrange the
-dump data from standard input to a normal dumpfile (readable with analysis
-tools).
-ie. "makedumpfile -R vmcore < vmcore.flat"
-.PP
-Note 3: If specified core_collector simply copy the vmcore file to the
-dump target (eg: cp, scp), the vmcore could be significantly large.
-Please make sure the dump target has enough space, at leaset larger
-than the system's RAM.
-
-.RE
-
-.B kdump_post <binary | script>
-.RS
-This directive allows you to run a specified executable
-just after the vmcore dump process terminates. The exit
-status of the current dump process is fed to the kdump_post
-executable as its first argument($1). Executable can modify
-it to indicate the new exit status of succeeding dump process,
-.PP
-All files under /etc/kdump/post.d are collectively sorted
-and executed in lexical order, before binary or script
-specified kdump_post parameter is executed.
-.PP
-Note that scripts written for use with this directive must use the /bin/bash
-interpreter. And since these scripts run in kdump enviroment, the reference to
-the storage or network device in the scripts should adhere to the section
-'Supported dump target types and requirements' in kexec-kdump-howto.txt.
-
-.RE
-
-.B kdump_pre <binary | script>
-.RS
-Works just like the "kdump_post" directive, but instead
-of running after the dump process, runs immediately
-before. Exit status of this binary is interpreted
-as follows:
-.PP
-0 - continue with dump process as usual
-.PP
-non 0 - run the final action (reboot/poweroff/halt)
-.PP
-All files under /etc/kdump/pre.d are collectively sorted and
-executed in lexical order, after binary or script specified
-kdump_pre parameter is executed.
-Even if the binary or script in /etc/kdump/pre.d directory
-returns non 0 exit status, the processing is continued.
-.PP
-Note that scripts written for use with this directive must use the /bin/bash
-interpreter. And since these scripts run in kdump enviroment, the reference to
-the storage or network device in the scripts should adhere to the section
-'Supported dump target types and requirements' in kexec-kdump-howto.txt.
-
-.RE
-
-.B extra_bins <binaries | shell scripts>
-.RS
-This directive allows you to specify additional
-binaries or shell scripts you'd like to include in
-your kdump initrd. Generally only useful in
-conjunction with a kdump_post binary or script that
-relies on other binaries or scripts.
-.RE
-
-.B extra_modules <module(s)>
-.RS
-This directive allows you to specify extra kernel
-modules that you want to be loaded in the kdump
-initrd, typically used to set up access to
-non-boot-path dump targets that might otherwise
-not be accessible in the kdump environment. Multiple
-modules can be listed, separated by spaces, and any
-dependent modules will automatically be included.
-.RE
-
-.B failure_action <reboot | halt | poweroff | shell | dump_to_rootfs>
-.RS
-Action to perform in case dumping to the intended target fails. The default is "reboot".
-reboot: Reboot the system (this is what most people will want, as it returns the system
-to a normal state). halt: Halt the system and lose the vmcore. poweroff: The system
-will be powered down. shell: Drop to a shell session inside the initramfs, from which
-you can manually perform additional recovery actions. Exiting this shell reboots the
-system by default or performs "final_action".
-Note: kdump uses bash as the default shell. dump_to_rootfs: If non-root dump
-target is specified, the failure action can be set as dump_to_rootfs. That means when
-dumping to target fails, dump vmcore to rootfs from initramfs context and reboot
-by default or perform "final_action".
-.RE
-
-.B default <reboot | halt | poweroff | shell | dump_to_rootfs>
-.RS
-Same as the "failure_action" directive above, but this directive is obsolete
-and will be removed in the future.
-.RE
-
-.B final_action <reboot | halt | poweroff>
-.RS
-Action to perform in case dumping to the intended target succeeds.
-Also performed when "shell" or "dump_to_rootfs" failure action finishes.
-Each action is same as the "failure_action" directive above.
-The default is "reboot".
-.RE
-
-.B force_rebuild <0 | 1>
-.RS
-By default, kdump initrd will only be rebuilt when necessary.
-Specify 1 to force rebuilding kdump initrd every time when kdump service starts.
-.RE
-
-.B force_no_rebuild <0 | 1>
-.RS
-By default, kdump initrd will be rebuilt when necessary.
-Specify 1 to bypass rebuilding of kdump initrd.
-
-.PP
-force_no_rebuild and force_rebuild options are mutually exclusive and
-they should not be set to 1 simultaneously.
-.RE
-
-.B dracut_args <arg(s)>
-.RS
-Kdump uses dracut to generate initramfs for second kernel. This option
-allows a user to pass arguments to dracut directly.
-.RE
-
-
-.B fence_kdump_args <arg(s)>
-.RS
-Command line arguments for fence_kdump_send (it can contain all valid
-arguments except hosts to send notification to).
-.RE
-
-
-.B fence_kdump_nodes <node(s)>
-.RS
-List of cluster node(s) except localhost, separated by spaces, to send fence_kdump notification
-to (this option is mandatory to enable fence_kdump).
-.RE
-
-
-.SH DEPRECATED OPTIONS
-
-.B net <nfs mount>|<user@server>
-.RS
-net option is replaced by nfs and ssh options. Use nfs or ssh options
-directly.
-.RE
-
-.B options <module> <option list>
-.RS
-Use KDUMP_COMMANDLINE_APPEND in /etc/sysconfig/kdump to add module options as
-kernel command line parameters. For example, specify 'loop.max_loop=1' to limit
-maximum loop devices to 1.
-.RE
-
-.B link_delay <seconds>
-.RS
-link_delay was used to wait for a network device to initialize before using it.
-Now dracut network module takes care of this issue automatically.
-.RE
-
-.B disk_timeout <seconds>
-.RS
-Similar to link_delay, dracut ensures disks are ready before kdump uses them.
-.RE
-
-.B debug_mem_level <0-3>
-.RS
-Turn on verbose debug output of kdump scripts regarding free/used memory at
-various points of execution. This feature has been
-moved to dracut now.
-Use KDUMP_COMMANDLINE_APPEND in /etc/sysconfig/kdump and
-append dracut cmdline param rd.memdebug=[0-3] to enable the debug output.
-
-Higher level means more debugging output.
-.PP
-0 - no output
-.PP
-1 - partial /proc/meminfo
-.PP
-2 - /proc/meminfo
-.PP
-3 - /proc/meminfo + /proc/slabinfo
-.RE
-
-.B blacklist <list of kernel modules>
-.RS
-blacklist option was recently being used to prevent loading modules in
-initramfs. General terminology for blacklist has been that module is
-present in initramfs but it is not actually loaded in kernel. Hence
-retaining blacklist option creates more confusing behavior. It has been
-deprecated.
-.PP
-Instead, use rd.driver.blacklist option on second kernel to blacklist
-a certain module. One can edit /etc/sysconfig/kdump.conf and edit
-KDUMP_COMMANDLINE_APPEND to pass kernel command line options. Refer
-to dracut.cmdline man page for more details on module blacklist option.
-.RE
-
-.RE
-
-.SH EXAMPLES
-Here are some examples for core_collector option:
-.PP
-Core collector command format depends on dump target type. Typically for
-filesystem (local/remote), core_collector should accept two arguments.
-First one is source file and second one is target file. For ex.
-.TP
-ex1.
-core_collector "cp --sparse=always"
-
-Above will effectively be translated to:
-
-cp --sparse=always /proc/vmcore <dest-path>/vmcore
-.TP
-ex2.
-core_collector "makedumpfile -l --message-level 7 -d 31"
-
-Above will effectively be translated to:
-
-makedumpfile -l --message-level 7 -d 31 /proc/vmcore <dest-path>/vmcore
-.PP
-For dump targets like raw and ssh, in general, core collector should expect
-one argument (source file) and should output the processed core on standard
-output (There is one exception of "scp", discussed later). This standard
-output will be saved to destination using appropriate commands.
-
-raw dumps examples:
-.TP
-ex3.
-core_collector "cat"
-
-Above will effectively be translated to.
-
-cat /proc/vmcore | dd of=<target-device>
-.TP
-ex4.
-core_collector "makedumpfile -F -l --message-level 7 -d 31"
-
-Above will effectively be translated to.
-
-makedumpfile -F -l --message-level 7 -d 31 | dd of=<target-device>
-.PP
-ssh dumps examples
-.TP
-ex5.
-core_collector "cat"
-
-Above will effectively be translated to.
-
-cat /proc/vmcore | ssh <options> <remote-location> "dd of=path/vmcore"
-.TP
-ex6.
-core_collector "makedumpfile -F -l --message-level 7 -d 31"
-
-Above will effectively be translated to.
-
-makedumpfile -F -l --message-level 7 -d 31 | ssh <options> <remote-location> "dd of=path/vmcore"
-
-There is one exception to standard output rule for ssh dumps. And that is
-scp. As scp can handle ssh destinations for file transfers, one can
-specify "scp" as core collector for ssh targets (no output on stdout).
-.TP
-ex7.
-core_collector "scp"
-
-Above will effectively be translated to.
-
-scp /proc/vmcore <user@host>:path/vmcore
-
-.PP
-examples for other options please see
-.I /etc/kdump.conf
-
-.SH SEE ALSO
-
-kexec(8) mkdumprd(8) dracut.cmdline(7)
diff --git a/kdump.service b/kdump.service
deleted file mode 100644
index 15405dc..0000000
--- a/kdump.service
+++ /dev/null
@@ -1,17 +0,0 @@
-[Unit]
-Description=Crash recovery kernel arming
-After=network.target network-online.target remote-fs.target basic.target
-DefaultDependencies=no
-ConditionKernelCommandLine=crashkernel
-
-[Service]
-Type=oneshot
-ExecStart=/usr/bin/kdumpctl start
-ExecStop=/usr/bin/kdumpctl stop
-ExecReload=/usr/bin/kdumpctl reload
-RemainAfterExit=yes
-StartLimitInterval=0
-PrivateTmp=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/kdumpctl b/kdumpctl
deleted file mode 100755
index 30eb27d..0000000
--- a/kdumpctl
+++ /dev/null
@@ -1,1770 +0,0 @@
-#!/bin/bash
-KEXEC=/sbin/kexec
-
-KDUMP_KERNELVER=""
-KDUMP_KERNEL=""
-KDUMP_COMMANDLINE=""
-KEXEC_ARGS=""
-KDUMP_LOG_PATH="/var/log"
-MKDUMPRD="/sbin/mkdumprd -f"
-MKFADUMPRD="/sbin/mkfadumprd"
-DRACUT_MODULES_FILE="/usr/lib/dracut/modules.txt"
-DEFAULT_INITRD=""
-DEFAULT_INITRD_BAK=""
-INITRD_CHECKSUM_LOCATION=""
-KDUMP_INITRD=""
-TARGET_INITRD=""
-#kdump shall be the default dump mode
-DEFAULT_DUMP_MODE="kdump"
-
-standard_kexec_args="-d -p"
-
-# Some default values in case /etc/sysconfig/kdump doesn't include
-KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug"
-
-declare -A OPT
-
-if [[ -f /etc/sysconfig/kdump ]]; then
- . /etc/sysconfig/kdump
-fi
-
-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
-# shellcheck source=/dev/null
-. "$dracutbasedir"/dracut-functions.sh
-
-if [[ ${__SOURCED__:+x} ]]; then
- KDUMP_LIB_PATH=.
-else
- KDUMP_LIB_PATH=/lib/kdump
-fi
-# shellcheck source=./kdump-lib.sh
-. $KDUMP_LIB_PATH/kdump-lib.sh
-# shellcheck source=./kdump-logger.sh
-. $KDUMP_LIB_PATH/kdump-logger.sh
-
-#initiate the kdump logger
-if ! dlog_init; then
- echo "failed to initiate the kdump logger."
- exit 1
-fi
-
-KDUMP_TMPDIR=$(mktemp --tmpdir -d kdump.XXXX)
-trap '
- ret=$?;
- rm -rf "$KDUMP_TMPDIR"
- exit $ret;
- ' EXIT
-
-_get_dracut_arg()
-{
- local shortopt longopt n tmp
- local -a _opt _ret
-
- shortopt=$1; shift
- longopt=$1; shift
- n=0
-
- if [[ -n $shortopt ]]; then
- _opt+=(-o "${shortopt#-}:")
- else
- # getopt requires the -o/--option to be set.
- _opt+=(-o "")
- fi
- [[ -n $longopt ]] && _opt+=(--long "${longopt#--}:")
-
- # make sure bash didn't break quoting
- eval set -- "$*"
- tmp=$(
- unset POSIXLY_CORRECT
- getopt -q "${_opt[@]}" -- "$@"
- )
- eval set -- "$tmp"
- while :; do
- case $1 in
- "$shortopt"|"$longopt")
- _ret+=("$2"); shift
- n=$((n+1))
- ;;
- --|*)
- break
- ;;
- esac
- shift
- done
-
- echo "${_ret[@]}"
- return $n
-}
-
-is_dracut_mod_omitted()
-{
- local mod omitted
-
- mod=$1
- omitted=$(_get_dracut_arg -o --omit "${OPT[dracut_args]}")
-
- [[ " $omitted " == *" $mod "* ]]
-}
-
-single_instance_lock()
-{
- local rc timeout=5 lockfile
-
- if [[ -d /run/lock ]]; then
- lockfile=/run/lock/kdump
- else
- # when updating package using virt-customize, /run/lock doesn't exist
- lockfile=/tmp/kdump.lock
- fi
-
- if ! exec 9> $lockfile; then
- derror "Create file lock failed"
- exit 1
- fi
-
- flock -n 9
- rc=$?
-
- while [[ $rc -ne 0 ]]; do
- dinfo "Another app is currently holding the kdump lock; waiting for it to exit..."
- flock -w $timeout 9
- rc=$?
- done
-}
-
-determine_dump_mode()
-{
- # Check if firmware-assisted dump is enabled
- # if yes, set the dump mode as fadump
- if is_fadump_capable; then
- dinfo "Dump mode is fadump"
- DEFAULT_DUMP_MODE="fadump"
- fi
- ddebug "DEFAULT_DUMP_MODE=$DEFAULT_DUMP_MODE"
-}
-
-rebuild_fadump_initrd()
-{
- if ! $MKFADUMPRD "$DEFAULT_INITRD_BAK" "$TARGET_INITRD" --kver "$KDUMP_KERNELVER"; then
- derror "mkfadumprd: failed to make fadump initrd"
- return 1
- fi
-
- sync -f "$TARGET_INITRD"
- return 0
-}
-
-check_earlykdump_is_enabled()
-{
- grep -q -w "rd.earlykdump" /proc/cmdline
-}
-
-rebuild_kdump_initrd()
-{
- ddebug "rebuild kdump initrd: $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER"
- if ! $MKDUMPRD "$TARGET_INITRD" "$KDUMP_KERNELVER"; then
- derror "mkdumprd: failed to make kdump initrd"
- return 1
- fi
-
- if check_earlykdump_is_enabled; then
- dwarn "Tips: If early kdump is enabled, also require rebuilding the system initramfs to make the changes take effect for early kdump."
- fi
-
- sync -f "$TARGET_INITRD"
- return 0
-}
-
-rebuild_initrd()
-{
- dinfo "Rebuilding $TARGET_INITRD"
-
- if [[ ! -w $(dirname "$TARGET_INITRD") ]]; then
- derror "$(dirname "$TARGET_INITRD") does not have write permission. Cannot rebuild $TARGET_INITRD"
- return 1
- fi
-
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- rebuild_fadump_initrd
- else
- rebuild_kdump_initrd
- fi
-}
-
-#$1: the files to be checked with IFS=' '
-check_exist()
-{
- for file in $1; do
- if [[ ! -e $file ]]; then
- derror "Error: $file not found."
- return 1
- fi
- done
-}
-
-#$1: the files to be checked with IFS=' '
-check_executable()
-{
- for file in $1; do
- if [[ ! -x $file ]]; then
- derror "Error: $file is not executable."
- return 1
- fi
- done
-}
-
-backup_default_initrd()
-{
- ddebug "backup default initrd: $DEFAULT_INITRD"
-
- if [[ ! -f $DEFAULT_INITRD ]]; then
- return
- fi
-
- if [[ ! -e $DEFAULT_INITRD_BAK ]]; then
- dinfo "Backing up $DEFAULT_INITRD before rebuild."
- # save checksum to verify before restoring
- sha1sum "$DEFAULT_INITRD" > "$INITRD_CHECKSUM_LOCATION"
- if ! cp "$DEFAULT_INITRD" "$DEFAULT_INITRD_BAK"; then
- dwarn "WARNING: failed to backup $DEFAULT_INITRD."
- rm -f -- "$INITRD_CHECKSUM_LOCATION"
- rm -f -- "$DEFAULT_INITRD_BAK"
- fi
- fi
-}
-
-restore_default_initrd()
-{
- ddebug "restore default initrd: $DEFAULT_INITRD"
-
- if [[ ! -f $DEFAULT_INITRD ]]; then
- return
- fi
-
- # If a backup initrd exists, we must be switching back from
- # fadump to kdump. Restore the original default initrd.
- if [[ -f $DEFAULT_INITRD_BAK ]] && [[ -f $INITRD_CHECKSUM_LOCATION ]]; then
- # verify checksum before restoring
- backup_checksum=$(sha1sum "$DEFAULT_INITRD_BAK" | awk '{ print $1 }')
- default_checksum=$(awk '{ print $1 }' "$INITRD_CHECKSUM_LOCATION")
- if [[ $default_checksum != "$backup_checksum" ]]; then
- dwarn "WARNING: checksum mismatch! Can't restore original initrd.."
- else
- rm -f "$INITRD_CHECKSUM_LOCATION"
- if mv "$DEFAULT_INITRD_BAK" "$DEFAULT_INITRD"; then
- derror "Restoring original initrd as fadump mode is disabled."
- sync -f "$DEFAULT_INITRD"
- fi
- fi
- fi
-}
-
-_set_config()
-{
- local opt=$1
- local val=$2
-
- if [[ -z $val ]]; then
- derror "Invalid kdump config value for option '$opt'"
- return 1
- fi
-
- if [[ -n ${OPT[$opt]} ]]; then
- if [[ $opt == _target ]] || [[ $opt == _fstype ]]; then
- derror "More than one dump targets specified"
- else
- derror "Duplicated kdump config value of option $opt"
- fi
- return 1
- fi
- OPT[$opt]="$val"
-}
-
-parse_config()
-{
- while read -r config_opt config_val; do
- case "$config_opt" in
- dracut_args)
- if [[ $config_val == *--mount* ]]; then
- if [[ $(echo "$config_val" | grep -o -- "--mount" | wc -l) -ne 1 ]]; then
- derror 'Multiple mount targets specified in one "dracut_args".'
- return 1
- fi
- _set_config _fstype "$(get_dracut_args_fstype "$config_val")" || return 1
- _set_config _target "$(get_dracut_args_target "$config_val")" || return 1
- fi
- ;;
- raw)
- if [[ -d "/proc/device-tree/ibm,opal/dump" ]]; then
- dwarn "WARNING: Won't capture opalcore when 'raw' dump target is used."
- fi
- _set_config _fstype "$config_opt" || return 1
- config_opt=_target
- ;;
- ext[234] | minix | btrfs | xfs | nfs | ssh | virtiofs)
- _set_config _fstype "$config_opt" || return 1
- config_opt=_target
- ;;
- sshkey)
- if [[ -z $config_val ]]; then
- derror "Invalid kdump config value for option '$config_opt'"
- return 1
- elif [[ -f $config_val ]]; then
- config_val=$(/usr/bin/readlink -m "$config_val")
- else
- dwarn "WARNING: '$config_val' doesn't exist, using default value '$DEFAULT_SSHKEY'"
- config_val=$DEFAULT_SSHKEY
- fi
- ;;
- default)
- dwarn "WARNING: Option 'default' was renamed 'failure_action' and will be removed in the future."
- dwarn "Please update $KDUMP_CONFIG_FILE to use option 'failure_action' instead."
- _set_config failure_action "$config_val" || return 1
- ;;
- path | core_collector | kdump_post | kdump_pre | extra_bins | extra_modules | failure_action | final_action | force_rebuild | force_no_rebuild | fence_kdump_args | fence_kdump_nodes | auto_reset_crashkernel) ;;
-
- net | options | link_delay | disk_timeout | debug_mem_level | blacklist)
- derror "Deprecated kdump config option: $config_opt. Refer to kdump.conf manpage for alternatives."
- return 1
- ;;
- '')
- continue
- ;;
- *)
- derror "Invalid kdump config option $config_opt"
- return 1
- ;;
- esac
-
- _set_config "$config_opt" "$config_val" || return 1
- done <<< "$(kdump_read_conf)"
-
- OPT[path]=${OPT[path]:-$DEFAULT_PATH}
- OPT[sshkey]=${OPT[sshkey]:-$DEFAULT_SSHKEY}
-
- check_failure_action_config || return 1
- check_final_action_config || return 1
- check_fence_kdump_config || return 1
- check_ssh_config || return 1
-
- return 0
-}
-
-# get_pcs_cluster_modified_files <image timestamp>
-# return list of modified file for fence_kdump modified in Pacemaker cluster
-get_pcs_cluster_modified_files()
-{
- local time_stamp
- local modified_files
- local image_time
-
- is_generic_fence_kdump && return 1
- is_pcs_fence_kdump || return 1
-
- image_time=$1
- time_stamp=$(pcs cluster cib | xmllint --xpath 'string(/cib/@cib-last-written)' - | xargs -0 date +%s --date)
-
- if [[ -n $time_stamp ]] && [[ $time_stamp -gt $image_time ]]; then
- modified_files="cluster-cib"
- fi
-
- if [[ -f $FENCE_KDUMP_CONFIG_FILE ]]; then
- time_stamp=$(stat -c "%Y" "$FENCE_KDUMP_CONFIG_FILE")
- if [[ $time_stamp -gt $image_time ]]; then
- modified_files="$modified_files $FENCE_KDUMP_CONFIG_FILE"
- fi
- fi
-
- echo "$modified_files"
-}
-
-setup_initrd()
-{
- if ! prepare_kdump_bootinfo; then
- derror "failed to prepare for kdump bootinfo."
- return 1
- fi
-
- DEFAULT_INITRD_BAK="$KDUMP_BOOTDIR/.$(basename "$DEFAULT_INITRD").default"
- INITRD_CHECKSUM_LOCATION="$DEFAULT_INITRD_BAK.checksum"
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- TARGET_INITRD="$DEFAULT_INITRD"
-
- # backup initrd for reference before replacing it
- # with fadump aware initrd
- backup_default_initrd
- else
- TARGET_INITRD="$KDUMP_INITRD"
-
- # check if a backup of default initrd exists. If yes,
- # it signifies a switch from fadump mode. So, restore
- # the backed up default initrd.
- restore_default_initrd
- fi
-}
-
-check_files_modified()
-{
-
- local modified_files=""
- local image_time
-
- image_time=$(stat -c "%Y" "$TARGET_INITRD" 2> /dev/null)
-
- #also rebuild when Pacemaker cluster conf is changed and fence kdump is enabled.
- modified_files=$(get_pcs_cluster_modified_files "$image_time")
-
- EXTRA_BINS=${OPT[kdump_post]}
- CHECK_FILES=${OPT[kdump_pre]}
- HOOKS="/etc/kdump/post.d/ /etc/kdump/pre.d/"
- if [[ -d /etc/kdump/post.d ]]; then
- for file in /etc/kdump/post.d/*; do
- if [[ -x $file ]]; then
- POST_FILES="$POST_FILES $file"
- fi
- done
- fi
- if [[ -d /etc/kdump/pre.d ]]; then
- for file in /etc/kdump/pre.d/*; do
- if [[ -x $file ]]; then
- PRE_FILES="$PRE_FILES $file"
- fi
- done
- fi
- HOOKS="$HOOKS $POST_FILES $PRE_FILES"
- CORE_COLLECTOR=$(echo "${OPT[core_collector]}" | awk '{print $1}')
- CORE_COLLECTOR=$(type -P "$CORE_COLLECTOR")
- # POST_FILES and PRE_FILES are already checked against executable, need not to check again.
- EXTRA_BINS="$EXTRA_BINS $CHECK_FILES"
- CHECK_FILES=${OPT[extra_bins]}
- EXTRA_BINS="$EXTRA_BINS $CHECK_FILES"
- files="$KDUMP_CONFIG_FILE $KDUMP_KERNEL $EXTRA_BINS $CORE_COLLECTOR"
- [[ -e /etc/fstab ]] && files="$files /etc/fstab"
-
- # Check for any updated extra module
- EXTRA_MODULES="${OPT[extra_modules]}"
- if [[ -n $EXTRA_MODULES ]]; then
- if [[ -e /lib/modules/$KDUMP_KERNELVER/modules.dep ]]; then
- files="$files /lib/modules/$KDUMP_KERNELVER/modules.dep"
- fi
- for _module in $EXTRA_MODULES; do
- if _module_file="$(modinfo --set-version "$KDUMP_KERNELVER" --filename "$_module" 2> /dev/null)"; then
- files="$files $_module_file"
- for _dep_modules in $(modinfo -F depends "$_module" | tr ',' ' '); do
- files="$files $(modinfo --set-version "$KDUMP_KERNELVER" --filename "$_dep_modules" 2> /dev/null)"
- done
- else
- # If it's not a module nor builtin, give an error
- if ! (modprobe --set-version "$KDUMP_KERNELVER" --dry-run "$_module" &> /dev/null); then
- dwarn "Module $_module not found"
- fi
- fi
- done
- fi
-
- # HOOKS is mandatory and need to check the modification time
- files="$files $HOOKS"
- is_lvm2_thinp_dump_target && files="$files $LVM_CONF"
- check_exist "$files" && check_executable "$EXTRA_BINS" || return 2
-
- for file in $files; do
- if [[ -e $file ]]; then
- time_stamp=$(stat -c "%Y" "$file")
- if [[ $time_stamp -gt $image_time ]]; then
- modified_files="$modified_files $file"
- fi
- if [[ -L $file ]]; then
- file=$(readlink -m "$file")
- time_stamp=$(stat -c "%Y" "$file")
- if [[ $time_stamp -gt $image_time ]]; then
- modified_files="$modified_files $file"
- fi
- fi
- else
- dwarn "$file doesn't exist"
- fi
- done
-
- if [[ -n $modified_files ]]; then
- dinfo "Detected change(s) in the following file(s): $modified_files"
- return 1
- fi
-
- return 0
-}
-
-check_drivers_modified()
-{
- local _target _new_drivers _old_drivers _module_name _module_filename
-
- # If it's dump target is on block device, detect the block driver
- _target=$(get_block_dump_target)
- if [[ -n $_target ]]; then
- # shellcheck disable=SC2317
- _record_block_drivers()
- {
- local _drivers
- _drivers=$(udevadm info -a "/dev/block/$1" | sed -n 's/\s*DRIVERS=="\(\S\+\)"/\1/p')
- for _driver in $_drivers; do
- if ! [[ " $_new_drivers " == *" $_driver "* ]]; then
- _new_drivers="$_new_drivers $_driver"
- fi
- done
-
- ddebug "MAJ:MIN=$1 drivers='$_drivers'"
- }
- check_block_and_slaves_all _record_block_drivers "$(get_maj_min "$_target")"
- fi
-
- # Include watchdog drivers if watchdog module is not omitted
- is_dracut_mod_omitted watchdog || _new_drivers+=" $(get_watchdog_drvs)"
- [[ -z $_new_drivers ]] && return 0
-
- if is_fadump_capable; then
- _old_drivers="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/fadump-kernel-modules.txt | tr '\n' ' ')"
- else
- _old_drivers="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/hostonly-kernel-modules.txt | tr '\n' ' ')"
- fi
-
- ddebug "Modules required for kdump: '$_new_drivers'"
- ddebug "Modules included in old initramfs: '$_old_drivers'"
- for _driver in $_new_drivers; do
- # Skip deprecated/invalid driver name or built-in module
- _module_name=$(modinfo --set-version "$KDUMP_KERNELVER" -F name "$_driver" 2> /dev/null)
- _module_filename=$(modinfo --set-version "$KDUMP_KERNELVER" -n "$_driver" 2> /dev/null)
- if [[ -z $_module_name ]] || [[ -z $_module_filename ]] || [[ $_module_filename == *"(builtin)"* ]]; then
- continue
- fi
- if ! [[ " $_old_drivers " == *" $_module_name "* ]]; then
- dinfo "Detected change in block device driver, new loaded module: $_module_name"
- return 1
- fi
- done
-}
-
-check_fs_modified()
-{
- local _old_dev _old_mntpoint _old_fstype
- local _new_dev _new_mntpoint _new_fstype
- local _target _dracut_args
-
- # No need to check in case of mount target specified via "dracut_args".
- if is_mount_in_dracut_args; then
- return 0
- fi
-
- # No need to check in case of raw target.
- # Currently we do not check also if ssh/nfs/virtiofs/thinp target is specified
- if is_ssh_dump_target || is_nfs_dump_target || is_raw_dump_target ||
- is_virtiofs_dump_target || is_lvm2_thinp_dump_target; then
- return 0
- fi
-
- _target=$(get_block_dump_target)
- _new_fstype=$(get_fs_type_from_target "$_target")
- if [[ -z $_target ]] || [[ -z $_new_fstype ]]; then
- derror "Dump target is invalid"
- return 2
- fi
-
- ddebug "_target=$_target _new_fstype=$_new_fstype"
- _new_dev=$(kdump_get_persistent_dev "$_target")
- if [[ -z $_new_dev ]]; then
- perror "Get persistent device name failed"
- return 2
- fi
-
- _new_mntpoint="$(get_kdump_mntpoint_from_target "$_target")"
- _dracut_args=$(lsinitrd "$TARGET_INITRD" -f usr/lib/dracut/build-parameter.txt)
- if [[ -z $_dracut_args ]]; then
- dwarn "Warning: No dracut arguments found in initrd"
- return 0
- fi
-
- # if --mount argument present then match old and new target, mount
- # point and file system. If any of them mismatches then rebuild
- if echo "$_dracut_args" | grep -q -- "--mount"; then
- # shellcheck disable=SC2046
- set -- $(echo "$_dracut_args" | awk -F "--mount '" '{print $2}' | cut -d' ' -f1,2,3)
- _old_dev=$1
- _old_mntpoint=$2
- _old_fstype=$3
- [[ $_new_dev == "$_old_dev" && $_new_mntpoint == "$_old_mntpoint" && $_new_fstype == "$_old_fstype" ]] && return 0
- # otherwise rebuild if target device is not a root device
- else
- [[ $_target == "$(get_root_fs_device)" ]] && return 0
- fi
-
- dinfo "Detected change in File System"
- return 1
-}
-
-# returns 0 if system is not modified
-# returns 1 if system is modified
-# returns 2 if an error occurred
-is_system_modified()
-{
- local ret
- local CONF_ERROR=2
- local CONF_MODIFY=1
- local CONF_NO_MODIFY=0
- local conf_status=$CONF_NO_MODIFY
-
- [[ -f $TARGET_INITRD ]] || return 1
-
- # in case of fadump mode, check whether the default/target initrd is
- # already built with dump capture capability
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- if ! lsinitrd -f $DRACUT_MODULES_FILE "$TARGET_INITRD" | grep -q -e ^kdumpbase$ -e ^zz-fadumpinit$; then
- dinfo "Rebuild $TARGET_INITRD with dump capture support"
- return 1
- fi
- fi
-
- for _func in check_files_modified check_fs_modified check_drivers_modified; do
- $_func
- ret=$?
- # return immediately if an error occurred.
- [[ $ret -eq "$CONF_ERROR" ]] && return "$ret"
- [[ $ret -eq "$CONF_MODIFY" ]] && { conf_status="$CONF_MODIFY"; }
- done
-
- return $conf_status
-}
-
-# need_initrd_rebuild - check whether the initrd needs to be rebuild
-# Returns:
-# 0 if does not need to be rebuild
-# 1 if it needs to be rebuild
-# 2 if an error occurred
-need_initrd_rebuild()
-{
- local force_rebuild force_no_rebuild
-
- force_no_rebuild=${OPT[force_no_rebuild]:-0}
- if [[ $force_no_rebuild != "0" ]] && [[ $force_no_rebuild != "1" ]]; then
- derror "Error: force_no_rebuild value is invalid"
- return 2
- fi
-
- force_rebuild=${OPT[force_rebuild]:-0}
- if [[ $force_rebuild != "0" ]] && [[ $force_rebuild != "1" ]]; then
- derror "Error: force_rebuild value is invalid"
- return 2
- fi
-
- if [[ $force_no_rebuild == "1" && $force_rebuild == "1" ]]; then
- derror "Error: force_rebuild and force_no_rebuild are enabled simultaneously in kdump.conf"
- return 2
- fi
-
- if [[ $force_no_rebuild == "1" ]]; then
- return 0
- fi
-
- if [[ $force_rebuild == "1" ]]; then
- dinfo "Force rebuild $TARGET_INITRD"
- return 1
- fi
-
- if [[ ! -f $TARGET_INITRD ]]; then
- dinfo "No kdump initial ramdisk found."
- return 1
- fi
-
- is_system_modified
-}
-
-# On ppc64le LPARs, the keys trusted by firmware do not end up in
-# .builtin_trusted_keys. So instead, add the key to the .ima keyring
-function load_kdump_kernel_key()
-{
- # this is only called inside is_secure_boot_enforced,
- # no need to retest
-
- # this is only required if DT /ibm,secure-boot is a file.
- # if it is a dir, we are on OpenPower and don't need this.
- if ! [[ -f /proc/device-tree/ibm,secure-boot ]]; then
- return
- fi
-
- keyctl padd asymmetric "" %:.ima < "/usr/share/doc/kernel-keys/$KDUMP_KERNELVER/kernel-signing-ppc.cer"
-}
-
-# Load the kdump kernel specified in /etc/sysconfig/kdump
-# If none is specified, try to load a kdump kernel with the same version
-# as the currently running kernel.
-load_kdump()
-{
- local ret uki
-
- KEXEC_ARGS=$(prepare_kexec_args "${KEXEC_ARGS}")
- KDUMP_COMMANDLINE=$(prepare_cmdline "${KDUMP_COMMANDLINE}" "${KDUMP_COMMANDLINE_REMOVE}" "${KDUMP_COMMANDLINE_APPEND}")
-
- if is_uki "$KDUMP_KERNEL"; then
- uki=$KDUMP_KERNEL
- KDUMP_KERNEL=$KDUMP_TMPDIR/vmlinuz
- objcopy -O binary --only-section .linux "$uki" "$KDUMP_KERNEL"
- sync -f "$KDUMP_KERNEL"
- # Make sure the temp file has the correct SELinux label.
- # Otherwise starting the kdump.service will fail.
- chcon -t boot_t "$KDUMP_KERNEL"
- fi
-
- ddebug "$KEXEC $KEXEC_ARGS $standard_kexec_args --command-line=$KDUMP_COMMANDLINE --initrd=$TARGET_INITRD $KDUMP_KERNEL"
-
- # The '12' represents an intermediate temporary file descriptor
- # to store the standard error file descriptor '2', and later
- # restore the error file descriptor with the file descriptor '12'
- # and release it.
- exec 12>&2
- exec 2>> $KDUMP_LOG_PATH/kdump.log
- chmod 600 $KDUMP_LOG_PATH/kdump.log
- PS4='+ $(date "+%Y-%m-%d %H:%M:%S") ${BASH_SOURCE}@${LINENO}: '
- set -x
-
- # shellcheck disable=SC2086
- $KEXEC $KEXEC_ARGS $standard_kexec_args \
- --command-line="$KDUMP_COMMANDLINE" \
- --initrd="$TARGET_INITRD" "$KDUMP_KERNEL"
-
- ret=$?
- set +x
- exec 2>&12 12>&-
-
- if [[ $ret == 0 ]]; then
- dinfo "kexec: loaded kdump kernel"
- return 0
- else
- derror "kexec: failed to load kdump kernel"
- return 1
- fi
-}
-
-check_ssh_config()
-{
- local target
-
- [[ "${OPT[_fstype]}" == ssh ]] || return 0
-
- target=$(ssh -G "${OPT[_target]}" | sed -n -e "s/^hostname[[:space:]]\+\([^[:space:]]*\).*$/\1/p")
-
- if [[ ${OPT[_target]} != *@* ]]; then
- derror "Please verify that $KDUMP_CONFIG_FILE contains 'ssh <user>@<host>' and that it is properly formatted."
- return 1
- fi
-
- if [[ ${OPT[_target]#*@} != "$target" ]]; then
- derror "Invalid ssh destination ${OPT[_target]} provided."
- return 1
- fi
-
- return 0
-}
-
-# ipv6 host address may takes a long time to be ready.
-# Instead of checking against ipv6 address, we just check the network reachable
-# by the return val of 'ssh'
-check_and_wait_network_ready()
-{
- local start_time
- local warn_once=1
- local cur
- local diff
- local retval
- local errmsg
-
- [[ "${OPT[_fstype]}" == ssh ]] || return 0
-
- start_time=$(date +%s)
- while true; do
- errmsg=$(ssh -i "${OPT[sshkey]}" -o BatchMode=yes "${OPT[_target]}" mkdir -p "${OPT[path]}" 2>&1)
- retval=$?
-
- # ssh exits with the exit status of the remote command or with 255 if an error occurred
- if [[ $retval -eq 0 ]]; then
- return 0
- elif [[ $retval -ne 255 ]]; then
- derror "Could not create ${OPT[_target]}:${OPT[path]}, you should check the privilege on server side"
- return 1
- fi
-
- # if server removes the authorized_keys or, no /root/.ssh/kdump_id_rsa
- ddebug "$errmsg"
- if echo "$errmsg" | grep -q "Permission denied\|No such file or directory\|Host key verification failed"; then
- derror "Could not create ${OPT[_target]}:${OPT[path]}, you probably need to run \"kdumpctl propagate\""
- return 1
- fi
-
- if [[ $warn_once -eq 1 ]]; then
- dwarn "Network dump target is not usable, waiting for it to be ready..."
- warn_once=0
- fi
-
- cur=$(date +%s)
- diff=$((cur - start_time))
- # time out after 180s
- if [[ $diff -gt 180 ]]; then
- break
- fi
- sleep 1
- done
-
- dinfo "Could not create ${OPT[_target]}:${OPT[path]}, ipaddr is not ready yet. You should check network connection"
- return 1
-}
-
-propagate_ssh_key()
-{
- local SSH_USER SSH_SERVER
-
- parse_config || return 1
-
- if [[ ${OPT[_fstype]} != ssh ]] ; then
- derror "No ssh destination defined in $KDUMP_CONFIG_FILE."
- derror "Please verify that $KDUMP_CONFIG_FILE contains 'ssh <user>@<host>' and that it is properly formatted."
- exit 1
- fi
-
- local KEYFILE=${OPT[sshkey]}
-
- #Check to see if we already created key, if not, create it.
- if [[ -f $KEYFILE ]]; then
- dinfo "Using existing keys..."
- else
- dinfo "Generating new ssh keys... "
- /usr/bin/ssh-keygen -t rsa -f "$KEYFILE" -N "" &> /dev/null
- dinfo "done."
- fi
-
- SSH_USER=${OPT[_target]%@*}
- SSH_SERVER=${OPT[_target]#*@}
- if ssh-copy-id -i "$KEYFILE" "${OPT[_target]}"; then
- dinfo "$KEYFILE has been added to ~$SSH_USER/.ssh/authorized_keys on $SSH_SERVER"
- return 0
- else
- derror "Failed to propagate ssh key, could not transfer $KEYFILE to $SSH_SERVER"
- exit 1
- fi
-}
-
-show_reserved_mem()
-{
- local mem
- local mem_mb
-
- mem=$(get_reserved_mem_size)
- mem_mb=$((mem / 1024 / 1024))
-
- dinfo "Reserved ${mem_mb}MB memory for crash kernel"
-}
-
-save_raw()
-{
- local raw_target
-
- [[ ${OPT[_fstype]} == raw ]] || return 0
-
- raw_target=${OPT[_target]}
- [[ -b $raw_target ]] || {
- derror "raw partition $raw_target not found"
- return 1
- }
- check_fs=$(lsblk --nodeps -npo FSTYPE "$raw_target")
- if [[ $(echo "$check_fs" | wc -w) -ne 0 ]]; then
- dwarn "Warning: Detected '$check_fs' signature on $raw_target, data loss is expected."
- return 0
- fi
-
- coredir="${OPT[path]}/$(date +"%Y-%m-%d-%H:%M")"
- mkdir -p "$coredir"
- [[ -d $coredir ]] || {
- derror "failed to create $coredir"
- return 1
- }
- if makedumpfile -R "$coredir/vmcore" < "$raw_target" > /dev/null 2>&1; then
- # dump found
- dinfo "Dump saved to $coredir/vmcore"
- # wipe makedumpfile header
- dd if=/dev/zero of="$raw_target" bs=1b count=1 2> /dev/null
- else
- rm -rf "$coredir"
- fi
-
- return 0
-}
-
-is_local_target()
-{
- [[ ${OPT[_fstype]} =~ ^ext[234]|^xfs|^btrfs|^minix ]]
-}
-
-path_to_be_relabeled()
-{
- local _path _mnt="/" _rmnt
-
- if is_user_configured_dump_target; then
- if is_mount_in_dracut_args; then
- return
- fi
-
- if is_local_target; then
- _mnt=$(get_mntpoint_from_target "${OPT[_target]}")
- if ! is_mounted "$_mnt"; then
- return
- fi
- else
- return
- fi
- fi
-
- _path=$(get_save_path)
- # if $_path is masked by other mount, we will not relabel it.
- _rmnt=$(df "$_mnt/$_path" 2> /dev/null | tail -1 | awk '{ print $NF }')
- if [[ $_rmnt == "$_mnt" ]]; then
- echo "$_mnt/$_path"
- fi
-}
-
-selinux_relabel()
-{
- local _path _i _attr
-
- _path=$(path_to_be_relabeled)
- if [[ -z $_path ]] || ! [[ -d $_path ]]; then
- return
- fi
-
- while IFS= read -r -d '' _i; do
- _attr=$(getfattr -m "security.selinux" "$_i" 2> /dev/null)
- if [[ -z $_attr ]]; then
- restorecon "$_i"
- fi
- done < <(find "$_path" -print0)
-}
-
-check_fence_kdump_config()
-{
- local hostname
- local ipaddrs
- local nodes
-
- hostname=$(hostname)
- ipaddrs=$(hostname -I)
- nodes=${OPT[fence_kdump_nodes]}
-
- for node in $nodes; do
- if [[ $node == "$hostname" ]]; then
- derror "Option fence_kdump_nodes cannot contain $hostname"
- return 1
- fi
- # node can be ipaddr
- if echo "$ipaddrs " | grep -q "$node "; then
- derror "Option fence_kdump_nodes cannot contain $node"
- return 1
- fi
- done
-
- return 0
-}
-
-check_dump_feasibility()
-{
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- return 0
- fi
-
- check_kdump_feasibility
-}
-
-start_fadump()
-{
- echo 1 > "$FADUMP_REGISTER_SYS_NODE"
- if ! is_kernel_loaded "fadump"; then
- derror "fadump: failed to register"
- return 1
- fi
-
- dinfo "fadump: registered successfully"
- return 0
-}
-
-start_dump()
-{
- # On secure boot enabled Power systems, load kernel signing key on .ima for signature
- # verification using kexec file based syscall.
- if [[ "$(uname -m)" == ppc64le ]] && is_secure_boot_enforced; then
- load_kdump_kernel_key
- fi
-
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- start_fadump
- else
- load_kdump
- fi
-}
-
-check_failure_action_config()
-{
- case "${OPT[failure_action]}" in
- "" | reboot | halt | poweroff | shell | dump_to_rootfs)
- return 0
- ;;
- *)
- dinfo $"Usage kdump.conf: failure_action {reboot|halt|poweroff|shell|dump_to_rootfs}"
- return 1
- ;;
- esac
-}
-
-check_final_action_config()
-{
- case "${OPT[final_action]}" in
- "" | reboot | halt | poweroff)
- return 0
- ;;
- *)
- dinfo $"Usage kdump.conf: final_action {reboot|halt|poweroff}"
- return 1
- ;;
- esac
-}
-
-start()
-{
- check_dump_feasibility || return
- parse_config || return
-
- if sestatus 2> /dev/null | grep -q "SELinux status.*enabled"; then
- selinux_relabel
- fi
-
- save_raw || return
-
- if [[ $DEFAULT_DUMP_MODE == "kdump" ]] && is_kernel_loaded "kdump"; then
- dwarn "Kdump already running: [WARNING]"
- return 0
- fi
-
- check_and_wait_network_ready || return
- setup_initrd || return
- need_initrd_rebuild
- case "$?" in
- 0)
- # Nothing to do
- ;;
- 1)
- rebuild_initrd || return
- ;;
- *)
- return
- ;;
- esac
- start_dump || return
-
- dinfo "Starting kdump: [OK]"
- return 0
-}
-
-reload()
-{
- if ! is_kernel_loaded "$DEFAULT_DUMP_MODE"; then
- dwarn "Kdump was not running: [WARNING]"
- fi
-
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- reload_fadump
- return
- else
- if ! stop_kdump; then
- derror "Stopping kdump: [FAILED]"
- return 1
- fi
- fi
-
- dinfo "Stopping kdump: [OK]"
-
- if ! setup_initrd; then
- derror "Starting kdump: [FAILED]"
- return 1
- fi
-
- if ! start_dump; then
- derror "Starting kdump: [FAILED]"
- return 1
- fi
-
- dinfo "Starting kdump: [OK]"
-}
-
-stop_fadump()
-{
- echo 0 > "$FADUMP_REGISTER_SYS_NODE"
- if is_kernel_loaded "fadump"; then
- derror "fadump: failed to unregister"
- return 1
- fi
-
- dinfo "fadump: unregistered successfully"
- return 0
-}
-
-stop_kdump()
-{
- if is_secure_boot_enforced; then
- $KEXEC -s -p -u
- else
- $KEXEC -p -u
- fi
-
- # shellcheck disable=SC2181
- if [[ $? != 0 ]]; then
- derror "kexec: failed to unload kdump kernel"
- return 1
- fi
-
- dinfo "kexec: unloaded kdump kernel"
- return 0
-}
-
-reload_fadump()
-{
- if echo 1 > "$FADUMP_REGISTER_SYS_NODE"; then
- dinfo "fadump: re-registered successfully"
- return 0
- else
- # FADump could fail on older kernel where re-register
- # support is not enabled. Try stop/start from userspace
- # to handle such scenario.
- if stop_fadump; then
- start_fadump
- return
- fi
- fi
-
- return 1
-}
-
-stop()
-{
- if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
- stop_fadump || return
- else
- stop_kdump || return
- fi
-
- dinfo "Stopping kdump: [OK]"
- return 0
-}
-
-rebuild()
-{
- parse_config || return 1
- check_and_wait_network_ready || return 1
-
- setup_initrd || return 1
-
- rebuild_initrd
-}
-
-check_vmlinux()
-{
- # Use readelf to check if it's a valid ELF
- readelf -h "$1" &> /dev/null || return 1
-}
-
-get_vmlinux_size()
-{
- local size=0 _msize
-
- while read -r _msize; do
- size=$((size + _msize))
- done <<< "$(readelf -l -W "$1" | awk '/^ LOAD/{print $6}' 2> /dev/stderr)"
-
- echo $size
-}
-
-try_decompress()
-{
- # The obscure use of the "tr" filter is to work around older versions of
- # "grep" that report the byte offset of the line instead of the pattern.
-
- # Try to find the header ($1) and decompress from here
- for pos in $(tr "$1\n$2" "\n$2=" < "$4" | grep -abo "^$2"); do
- if ! type -P "$3" > /dev/null; then
- ddebug "Signiature detected but '$3' is missing, skip this decompressor"
- break
- fi
-
- pos=${pos%%:*}
- tail "-c+$pos" "$img" | $3 > "$5" 2> /dev/null
- if check_vmlinux "$5"; then
- ddebug "Kernel is extracted with '$3'"
- return 0
- fi
- done
-
- return 1
-}
-
-# Borrowed from linux/scripts/extract-vmlinux
-get_kernel_size()
-{
- # Prepare temp files:
- local tmp img=$1
-
- tmp="$KDUMP_TMPDIR/vmlinux"
-
- # Try to check if it's a vmlinux already
- check_vmlinux "$img" && get_vmlinux_size "$img" && return 0
-
- # That didn't work, so retry after decompression.
- try_decompress '\037\213\010' xy gunzip "$img" "$tmp" ||
- try_decompress '\3757zXZ\000' abcde unxz "$img" "$tmp" ||
- try_decompress 'BZh' xy bunzip2 "$img" "$tmp" ||
- try_decompress '\135\0\0\0' xxx unlzma "$img" "$tmp" ||
- try_decompress '\211\114\132' xy 'lzop -d' "$img" "$tmp" ||
- try_decompress '\002!L\030' xxx 'lz4 -d' "$img" "$tmp" ||
- try_decompress '(\265/\375' xxx unzstd "$img" "$tmp"
-
- # Finally check for uncompressed images or objects:
- [[ $? -eq 0 ]] && get_vmlinux_size "$tmp" && return 0
-
- # Fallback to use iomem
- local _size=0 _seg
- while read -r _seg; do
- _size=$((_size + 0x${_seg#*-} - 0x${_seg%-*}))
- done <<< "$(grep -E "Kernel (code|rodata|data|bss)" /proc/iomem | cut -d ":" -f 1)"
- echo $_size
-}
-
-do_estimate()
-{
- local kdump_mods
- local -A large_mods
- local baseline
- local kernel_size mod_size initrd_size baseline_size runtime_size reserved_size estimated_size recommended_size _cryptsetup_overhead
- local size_mb=$((1024 * 1024))
-
- setup_initrd
- is_system_modified
- case "$?" in
- 0)
- # Nothing to do
- ;;
- 1)
- rebuild_initrd || return
- ;;
- *)
- return
- ;;
- esac
-
- kdump_mods="$(lsinitrd "$TARGET_INITRD" -f /usr/lib/dracut/hostonly-kernel-modules.txt | tr '\n' ' ')"
- baseline=$(kdump_get_arch_recommend_size)
- if [[ ${baseline: -1} == "M" ]]; then
- baseline=${baseline%M}
- elif [[ ${baseline: -1} == "G" ]]; then
- baseline=$((${baseline%G} * 1024))
- elif [[ ${baseline: -1} == "T" ]]; then
- baseline=$((${baseline%Y} * 1048576))
- fi
-
- # The default pre-reserved crashkernel value
- baseline_size=$((baseline * size_mb))
- # Current reserved crashkernel size
- reserved_size=$(get_reserved_mem_size)
- # A pre-estimated value for userspace usage and kernel
- # runtime allocation, 64M should good for most cases
- runtime_size=$((64 * size_mb))
- # Kernel image size
- kernel_size=$(get_kernel_size "$KDUMP_KERNEL")
- # Kdump initramfs size
- initrd_size=$(du -b "$TARGET_INITRD" | awk '{print $1}')
- # Kernel modules static size after loaded
- mod_size=0
- while read -r _name _size _; do
- if [[ " $kdump_mods " != *" $_name "* ]]; then
- continue
- fi
- mod_size=$((mod_size + _size))
-
- # Mark module with static size larger than 2M as large module
- if [[ $((_size / size_mb)) -ge 1 ]]; then
- large_mods[$_name]=$_size
- fi
- done <<< "$(< /proc/modules)"
-
- # Extra memory usage required for LUKS2 decryption
- crypt_size=0
- for _dev in $(get_all_kdump_crypt_dev); do
- _crypt_info=$(cryptsetup luksDump "/dev/block/$_dev")
- [[ $(echo "$_crypt_info" | sed -n "s/^Version:\s*\(.*\)/\1/p") == "2" ]] || continue
- for _mem in $(echo "$_crypt_info" | sed -n "s/\sMemory:\s*\(.*\)/\1/p" | sort -n -r); do
- crypt_size=$((crypt_size + _mem * 1024))
- break
- done
- done
-
- if [[ $crypt_size -ne 0 ]]; then
- if [[ $(uname -m) == aarch64 ]]; then
- _cryptsetup_overhead=50
- else
- _cryptsetup_overhead=20
- fi
-
- crypt_size=$((crypt_size + _cryptsetup_overhead * size_mb))
- echo -e "Encrypted kdump target requires extra memory, assuming using the keyslot with maximum memory requirement\n"
- fi
-
- estimated_size=$((kernel_size + mod_size + initrd_size + runtime_size + crypt_size))
- if [[ $baseline_size -gt $estimated_size ]]; then
- recommended_size=$baseline_size
- else
- recommended_size=$estimated_size
- fi
-
- echo "Reserved crashkernel: $((reserved_size / size_mb))M"
- echo "Recommended crashkernel: $((recommended_size / size_mb))M"
- echo
- echo "Kernel image size: $((kernel_size / size_mb))M"
- echo "Kernel modules size: $((mod_size / size_mb))M"
- echo "Initramfs size: $((initrd_size / size_mb))M"
- echo "Runtime reservation: $((runtime_size / size_mb))M"
- [[ $crypt_size -ne 0 ]] &&
- echo "LUKS required size: $((crypt_size / size_mb))M"
- echo -n "Large modules:"
- if [[ ${#large_mods[@]} -eq 0 ]]; then
- echo " <none>"
- else
- echo ""
- for _mod in "${!large_mods[@]}"; do
- echo " $_mod: ${large_mods[$_mod]}"
- done
- fi
-
- if [[ $reserved_size -lt $recommended_size ]]; then
- echo "WARNING: Current crashkernel size is lower than recommended size $((recommended_size / size_mb))M."
- fi
-}
-
-get_default_crashkernel()
-{
- local _dump_mode=$1
-
- kdump_get_arch_recommend_crashkernel "$_dump_mode"
-}
-
-# Read kernel cmdline parameter for a specific kernel
-# $1: kernel path, DEFAULT or kernel path, ALL not accepted
-# $2: kernel cmldine parameter
-get_grub_kernel_boot_parameter()
-{
- local _kernel_path=$1 _para=$2
-
- [[ $_kernel_path == ALL ]] && derror "kernel_path=ALL invalid for get_grub_kernel_boot_parameter" && return 1
- grubby --info="$_kernel_path" | sed -En -e "/^args=.*$/{s/^.*(\s|\")${_para}=(\S*).*\"$/\2/p;q}"
-}
-
-# get dump mode by fadump value
-# return
-# - fadump, if fadump=on or fadump=nocma
-# - kdump, if fadump=off or empty fadump, return kdump
-# - error if otherwise
-get_dump_mode_by_fadump_val()
-{
- local _fadump_val=$1
-
- if [[ -z $_fadump_val ]] || [[ $_fadump_val == off ]]; then
- echo -n kdump
- elif [[ $_fadump_val == on ]] || [[ $_fadump_val == nocma ]]; then
- echo -n fadump
- else
- derror "invalid fadump=$_fadump_val"
- return 1
- fi
-}
-
-# get dump mode of a specific kernel
-# based on its fadump kernel cmdline parameter
-get_dump_mode_by_kernel()
-{
- local _kernel_path=$1 _fadump_val _dump_mode
-
- _fadump_val=$(get_grub_kernel_boot_parameter "$_kernel_path" fadump)
- if _dump_mode=$(get_dump_mode_by_fadump_val "$_fadump_val"); then
- echo -n "$_dump_mode"
- else
- derror "failed to get dump mode for kernel $_kernel_path"
- exit
- fi
-}
-
-_filter_grubby_kernel_str()
-{
- local _grubby_kernel_str=$1
- echo -n "$_grubby_kernel_str" | sed -n -e 's/^kernel="\(.*\)"/\1/p'
-}
-
-_find_kernel_path_by_release()
-{
- local _release="$1" _grubby_kernel_str _kernel_path
-
- # Insert '/' before '+' to cope with grep's EREs
- _release=${_release//+/\\+}
- _grubby_kernel_str=$(grubby --info ALL | grep -E "^kernel=.*$_release(/\w+)?\"$")
- _kernel_path=$(_filter_grubby_kernel_str "$_grubby_kernel_str")
- if [[ -z $_kernel_path ]]; then
- ddebug "kernel $_release doesn't exist"
- return 1
- fi
- echo -n "$_kernel_path"
-}
-
-_update_kernel_cmdline()
-{
- local _kernel _param _old _new
-
- _kernel="$1"
- _param="$2"
- _old="$3"
- _new="$4"
-
- # _new = "" removes a _param, so _new = _old = "" is fine
- [[ -n "$_new" ]] && [[ "$_old" == "$_new" ]] && return 1
-
- if is_ostree; then
- if [[ -z "$_new" ]]; then
- rpm-ostree kargs --delete="$_param=$_old"
- elif [[ -n "$_old" ]]; then
- rpm-ostree kargs --replace="$_param=$_new"
- else
- rpm-ostree kargs --append="$_param=$_new"
- fi
- elif has_command grubby; then
- if [[ -n "$_new" ]]; then
- grubby --update-kernel "$_kernel" --args "$_param=$_new"
- else
- grubby --update-kernel "$_kernel" --remove-args "$_param"
- fi
- else
- derror "Unable to update kernel command line"
- exit 1
- fi
-
- # Don't use "[[ CONDITION ]] && COMMAND" which returns 1 under false CONDITION
- if [[ -f /etc/zipl.conf ]]; then
- zipl > /dev/null
- fi
-}
-
-_valid_grubby_kernel_path()
-{
- [[ -n "$1" ]] && grubby --info="$1" > /dev/null 2>&1
-}
-
-# return all the kernel paths given a grubby kernel-path
-#
-# $1: kernel path accepted by grubby, e.g. DEFAULT, ALL,
-# /boot/vmlinuz-`uname -r`
-# return: kernel paths separated by space
-_get_all_kernels_from_grubby()
-{
- local _kernels _line _kernel_path _grubby_kernel_path=$1
-
- for _line in $(grubby --info "$_grubby_kernel_path" | grep "^kernel="); do
- _kernel_path=$(_filter_grubby_kernel_str "$_line")
- _kernels="$_kernels $_kernel_path"
- done
- echo -n "$_kernels"
-}
-
-reset_crashkernel()
-{
- local _opt _val _reboot _grubby_kernel_path _kernel _kernels
- local _dump_mode _new_dump_mode
- local _has_changed _needs_reboot
- local _old_ck _new_ck
- local _old_fadump _new_fadump
-
- for _opt in "$@"; do
- case "$_opt" in
- --fadump=*)
- if [[ $(uname -m) != ppc64le ]]; then
- derror "Option --fadump only valid on PPC"
- exit 1
- fi
- _new_fadump=${_opt#*=}
- if ! _dump_mode=$(get_dump_mode_by_fadump_val $_new_fadump); then
- derror "failed to determine dump mode"
- exit
- fi
- [[ "$_new_fadump" == off ]] && _new_fadump=""
- ;;
- --kernel=*)
- _val=${_opt#*=}
- if ! _valid_grubby_kernel_path $_val; then
- derror "Invalid $_opt, please specify a valid kernel path, ALL or DEFAULT"
- exit
- fi
- _grubby_kernel_path=$_val
- ;;
- --reboot)
- _reboot=yes
- ;;
- *)
- derror "$_opt not recognized"
- exit 1
- ;;
- esac
- done
-
- # 1. OSTree systems use "rpm-ostree kargs" instead of grubby to manage kernel command
- # line. --kernel=ALL doesn't make sense for OStree.
- # 2. We don't have any OSTree POWER systems so the dump mode is always kdump.
- # 3. "rpm-ostree kargs" would prompt the user to reboot the system after
- # modifying the kernel command line so there is no need for kexec-tools
- # to repeat it.
- if is_ostree; then
- _old_ck=$(rpm-ostree kargs | sed -n -E 's/.*(^|\s)crashkernel=(\S*).*/\2/p')
- _new_ck=$(kdump_get_arch_recommend_crashkernel kdump)
- if _update_kernel_cmdline "" crashkernel "$_old_ck" "$_new_ck"; then
- [[ $_reboot == yes ]] && systemctl reboot
- fi
- return
- fi
-
- [[ $(uname -m) != ppc64le ]] && _dump_mode=kdump
-
- # If kernel-path not specified, either
- # - use KDUMP_KERNELVER if it's defined
- # - use current running kernel
- if [[ -z $_grubby_kernel_path ]]; then
- [[ -n $KDUMP_KERNELVER ]] || KDUMP_KERNELVER=$(uname -r)
- if ! _kernels=$(_find_kernel_path_by_release "$KDUMP_KERNELVER"); then
- derror "no kernel for version $KDUMP_KERNELVER found"
- exit 1
- fi
- else
- _kernels=$(_get_all_kernels_from_grubby "$_grubby_kernel_path")
- fi
-
- for _kernel in $_kernels; do
- _has_changed=""
- if [[ -z $_dump_mode ]]; then
- _new_dump_mode=$(get_dump_mode_by_kernel "$_kernel")
- _new_fadump=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
- else
- _new_dump_mode=$_dump_mode
- fi
-
- _old_ck=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel)
- _new_ck=$(kdump_get_arch_recommend_crashkernel "$_new_dump_mode")
- _old_fadump=$(get_grub_kernel_boot_parameter "$_kernel" fadump)
- if _update_kernel_cmdline "$_kernel" fadump "$_old_fadump" "$_new_fadump"; then
- _has_changed="Updated fadump=$_new_fadump"
- fi
- if _update_kernel_cmdline "$_kernel" crashkernel "$_old_ck" "$_new_ck"; then
- _has_changed="Updated crashkernel=$_new_ck"
- fi
- if [[ -n "$_has_changed" ]]; then
- _needs_reboot=1
- dwarn "$_has_changed for kernel=$_kernel. Please reboot the system for the change to take effect."
- fi
- done
-
- if [[ $_reboot == yes && $_needs_reboot == 1 ]]; then
- systemctl reboot
- fi
-}
-
-GRUB_CFG=/boot/grub2/grub.cfg
-_is_bootloader_installed()
-{
- if [[ $(uname -m) == s390x ]]; then
- test -f /etc/zipl.conf
- else
- test -f "$GRUB_CFG"
- fi
-}
-
-_update_crashkernel()
-{
- local _kernel _kver _dump_mode _msg
- local _old_ck _new_ck
-
- _kernel=$1
- _dump_mode=$(get_dump_mode_by_kernel "$_kernel")
- _old_ck=$(get_grub_kernel_boot_parameter "$_kernel" crashkernel)
- _kver=$(parse_kver_from_path "$_kernel")
- # The second argument is for the case of aarch64, where installing a 64k variant on a 4k kernel, or vice versa
- _new_ck=$(kdump_get_arch_recommend_crashkernel "$_dump_mode" "$_kver")
- if _update_kernel_cmdline "$_kernel" crashkernel "$_old_ck" "$_new_ck"; then
- _msg="For kernel=$_kernel, crashkernel=$_new_ck now. Please reboot the system for the change to take effect."
- _msg+=" Note if you don't want kexec-tools to manage the crashkernel kernel parameter, please set auto_reset_crashkernel=no in /etc/kdump.conf."
- dinfo "$_msg"
- fi
-}
-
-
-# shellcheck disable=SC2154 # false positive when dereferencing an array
-reset_crashkernel_after_update()
-{
- local _kernel
-
- if ! _is_bootloader_installed; then
- return
- fi
-
- for _kernel in $(_get_all_kernels_from_grubby ALL); do
- _update_crashkernel "$_kernel"
- done
-}
-
-# read the value of an environ variable from given environ file path
-#
-# The environment variable entries in /proc/[pid]/environ are separated
-# by null bytes instead of by spaces.
-#
-# $1: environment variable
-# $2: environ file path
-read_proc_environ_var()
-{
- local _var=$1 _environ_path=$2
- sed -n -E "s/.*(^|\x00)${_var}=([^\x00]*).*/\2/p" < "$_environ_path"
-}
-
-_OSBUILD_ENVIRON_PATH='/proc/1/environ'
-_is_osbuild()
-{
- [[ $(read_proc_environ_var container "$_OSBUILD_ENVIRON_PATH") == bwrap-osbuild ]]
-}
-
-reset_crashkernel_for_installed_kernel()
-{
- local _installed_kernel
-
- # During package install, only try to reset crashkernel for osbuild
- # thus to avoid calling grubby when installing os via anaconda
- if ! _is_bootloader_installed && ! _is_osbuild; then
- return
- fi
-
- if ! _installed_kernel=$(_find_kernel_path_by_release "$1"); then
- exit 1
- fi
-
- if _is_osbuild; then
- if ! grep -qs crashkernel= /etc/kernel/cmdline; then
- reset_crashkernel "--kernel=$_installed_kernel"
- fi
- return
- fi
-
- _update_crashkernel "$_installed_kernel"
-}
-
-_should_reset_crashkernel() {
- [[ $(kdump_get_conf_val auto_reset_crashkernel) != no ]] && systemctl is-enabled kdump &> /dev/null
-}
-
-main()
-{
- # Determine if the dump mode is kdump or fadump
- determine_dump_mode
-
- case "$1" in
- start)
- if ! start; then
- derror "Starting kdump: [FAILED]"
- exit 1
- fi
- ;;
- stop)
- if ! stop; then
- derror "Stopping kdump: [FAILED]"
- exit 1
- fi
- ;;
- status)
- EXIT_CODE=0
- is_kernel_loaded "$DEFAULT_DUMP_MODE"
- case "$?" in
- 0)
- dinfo "Kdump is operational"
- EXIT_CODE=0
- ;;
- 1)
- dinfo "Kdump is not operational"
- EXIT_CODE=3
- ;;
- esac
- exit $EXIT_CODE
- ;;
- reload)
- reload
- ;;
- restart)
- if ! stop; then
- derror "Stopping kdump: [FAILED]"
- exit 1
- fi
- if ! start; then
- derror "Starting kdump: [FAILED]"
- exit 1
- fi
- ;;
- rebuild)
- rebuild
- ;;
- propagate)
- propagate_ssh_key
- ;;
- showmem)
- show_reserved_mem
- ;;
- estimate)
- do_estimate
- ;;
- get-default-crashkernel)
- get_default_crashkernel "$2"
- ;;
- reset-crashkernel)
- shift
- reset_crashkernel "$@"
- ;;
- _reset-crashkernel-after-update)
- if _should_reset_crashkernel; then
- reset_crashkernel_after_update
- fi
- ;;
- _reset-crashkernel-for-installed_kernel)
- if _should_reset_crashkernel; then
- reset_crashkernel_for_installed_kernel "$2"
- fi
- ;;
- *)
- dinfo $"Usage: $0 {estimate|start|stop|status|restart|reload|rebuild|reset-crashkernel|propagate|showmem}"
- exit 1
- ;;
- esac
-}
-
-if [[ ${__SOURCED__:+x} ]]; then
- return
-fi
-
-if [[ ! -f $KDUMP_CONFIG_FILE ]]; then
- derror "Error: No kdump config file found!"
- exit 1
-fi
-
-# Other kdumpctl instances will block in queue, until this one exits
-single_instance_lock
-
-# To avoid fd 9 leaking, we invoke a subshell, close fd 9 and call main.
-# So that fd isn't leaking when main is invoking a subshell.
-(
- exec 9<&-
- main "$@"
-)
diff --git a/kdumpctl.8 b/kdumpctl.8
deleted file mode 100644
index 33c1115..0000000
--- a/kdumpctl.8
+++ /dev/null
@@ -1,72 +0,0 @@
-.TH KDUMPCTL 8 2015-07-13 kexec-tools
-
-.SH NAME
-kdumpctl \- control interface for kdump
-
-.SH SYNOPSIS
-.B kdumpctl
-.I COMMAND
-
-.SH DESCRIPTION
-.B kdumpctl
-is used to check or control the kdump service.
-In most cases, you should use
-.B systemctl
-to start / stop / enable kdump service instead. However,
-.B kdumpctl
-provides more details for debugging and a helper to set up ssh key authentication.
-
-.SH COMMANDS
-.TP
-.I start
-Start the service.
-.TP
-.I stop
-Stop the service.
-.TP
-.I status
-Prints the current status of kdump service.
-It returns a non-zero value if kdump is not operational.
-.TP
-.I restart
-Is equal to
-.I start; stop
-.TP
-.I reload
-reload the crash kernel image and initramfs without triggering a rebuild.
-.TP
-.I rebuild
-rebuild the crash kernel initramfs.
-.TP
-.I propagate
-Helps to setup key authentication for ssh storage since it's
-impossible to use password authentication during kdump.
-.TP
-.I showmem
-Prints the size of reserved memory for the crash kernel in megabytes.
-.TP
-.I estimate
-Estimate a suitable crashkernel value for the current machine. This is a
-best-effort estimate. It will print a recommended crashkernel value
-based on the current kdump setup, and list some details of memory usage.
-.TP
-.I get-default-crashkernel
-Return the default crashkernel value provided by kexec-tools.
-.TP
-.I reset-crashkernel [--kernel=path_to_kernel] [--reboot]
-Reset crashkernel to default value recommended by kexec-tools. If no kernel
-is specified, will reset KDUMP_KERNELVER if it's defined in /etc/sysconfig/kdump
-or the current running kernel's crashkernel value if KDUMP_KERNELVER is empty. You can
-also specify --kernel=ALL and --kernel=DEFAULT which have the same meaning as
-grubby's kernel-path=ALL and kernel-path=DEFAULT. ppc64le supports FADump and
-supports an additional [--fadump=[on|off|nocma]] parameter to toggle FADump
-on/off.
-
-Note: The memory requirements for kdump varies heavily depending on the
-used hardware and system configuration. Thus the recommended
-crashkernel might not work for your specific setup. Please test if
-kdump works after resetting the crashkernel value.
-
-.SH "SEE ALSO"
-.BR kdump.conf (5),
-.BR mkdumprd (8)
diff --git a/kexec-kdump-howto.txt b/kexec-kdump-howto.txt
deleted file mode 100644
index 6741faf..0000000
--- a/kexec-kdump-howto.txt
+++ /dev/null
@@ -1,1055 +0,0 @@
-=================
-Kexec/Kdump HOWTO
-=================
-
-
-Introduction
-============
-
-Kexec and kdump are new features in the 2.6 mainstream kernel. These features
-are included in Red Hat Enterprise Linux 5. The purpose of these features
-is to ensure faster boot up and creation of reliable kernel vmcores for
-diagnostic purposes.
-
-
-Overview
-========
-
-Kexec
------
-
-Kexec is a fastboot mechanism which allows booting a Linux kernel from the
-context of already running kernel without going through BIOS. BIOS can be very
-time consuming especially on the big servers with lots of peripherals. This can
-save a lot of time for developers who end up booting a machine numerous times.
-
-Kdump
------
-
-Kdump is a new kernel crash dumping mechanism and is very reliable because
-the crash dump is captured from the context of a freshly booted kernel and
-not from the context of the crashed kernel. Kdump uses kexec to boot into
-a second kernel whenever system crashes. This second kernel, often called
-a capture kernel, boots with very little memory and captures the dump image.
-
-The first kernel reserves a section of memory that the second kernel uses
-to boot. Kexec enables booting the capture kernel without going through BIOS
-hence contents of first kernel's memory are preserved, which is essentially
-the kernel crash dump.
-
-Kdump is supported on the i686, x86_64, ia64 and ppc64 platforms. The
-standard kernel and capture kernel are one in the same on i686, x86_64,
-ia64 and ppc64.
-
-If you're reading this document, you should already have kexec-tools
-installed. If not, you install it via the following command:
-
- # dnf install kexec-tools
-
-Now load a kernel with kexec:
-
- # kver=`uname -r` # kexec -l /boot/vmlinuz-$kver
- --initrd=/boot/initrd-$kver.img \
- --command-line="`cat /proc/cmdline`"
-
-NOTE: The above will boot you back into the kernel you're currently running,
-if you want to load a different kernel, substitute it in place of `uname -r`.
-
-Now reboot your system, taking note that it should bypass the BIOS:
-
- # reboot
-
-
-How to configure kdump
-======================
-
-Again, we assume if you're reading this document, you should already have
-kexec-tools installed. If not, you install it via the following command:
-
- # dnf install kexec-tools
-
-To be able to do much of anything interesting in the way of debug analysis,
-you'll also need to install the kernel-debuginfo package, of the same arch
-as your running kernel, and the crash utility:
-
- # dnf --enablerepo=\*debuginfo install kernel-debuginfo.$(uname -m) crash
-
-Next up, we need to reserve a chunk of memory for the capture kernel. To use
-the default crashkernel value, you can kdumpctl:
-
- # kdumpctl reset-crashkernel --kernel=/boot/vmlinuz-`uname -r`
-
-If the default value does not work for your setup you can use
-
- # grubby --args="crashkernel=256M" --update-kernel=/boot/vmlinuz-`uname -r`
-
-to specify a larger value, in this case 256M. You need to experiment to
-find the best value that works for your setup. To begin with
-
- # kdumpctl estimate
-
-gives you an estimation for the crashkernel value based on the currently
-running kernel. For more details, please refer to the "Estimate crashkernel"
-section in /usr/share/doc/kexec-tools/crashkernel-howto.txt.
-
-Note that there is an alternative form in which to specify a crashkernel
-memory reservation, in the event that more control is needed over the size and
-placement of the reserved memory. The format is:
-
-crashkernel=range1:size1[,range2:size2,...][@offset]
-
-Where range<n> specifies a range of values that are matched against the amount
-of physical RAM present in the system, and the corresponding size<n> value
-specifies the amount of kexec memory to reserve. For example:
-
-crashkernel=512M-2G:64M,2G-:128M
-
-This line tells kexec to reserve 64M of ram if the system contains between
-512M and 2G of physical memory. If the system contains 2G or more of physical
-memory, 128M should be reserved.
-
-Besides, since kdump needs to access /proc/kallsyms during a kernel
-loading if KASLR is enabled, check /proc/sys/kernel/kptr_restrict to
-make sure that the content of /proc/kallsyms is exposed correctly.
-We recommend to set the value of kptr_restrict to '1'. Otherwise
-capture kernel loading could fail.
-
-After making said changes, reboot your system, so that the X MB of memory is
-left untouched by the normal system, reserved for the capture kernel. Take note
-that the output of 'free -m' will show X MB less memory than without this
-parameter, which is expected. You may be able to get by with less than 128M, but
-testing with only 64M has proven unreliable of late. On ia64, as much as 512M
-may be required.
-
-Now that you've got that reserved memory region set up, you want to turn on
-the kdump init script:
-
- # chkconfig kdump on
-
-Then, start up kdump as well:
-
- # systemctl start kdump.service
-
-This should load your kernel-kdump image via kexec, leaving the system ready
-to capture a vmcore upon crashing. To test this out, you can force-crash
-your system by echo'ing a c into /proc/sysrq-trigger:
-
- # echo c > /proc/sysrq-trigger
-
-You should see some panic output, followed by the system restarting into
-the kdump kernel. When the boot process gets to the point where it starts
-the kdump service, your vmcore should be copied out to disk (by default,
-in /var/crash/<YYYY-MM-DD-HH:MM>/vmcore), then the system rebooted back into
-your normal kernel.
-
-Once back to your normal kernel, you can use the previously installed crash
-utility in conjunction with the previously installed kernel-debuginfo to
-perform postmortem analysis:
-
- # crash /usr/lib/debug/lib/modules/2.6.17-1.2621.el5/vmlinux
- /var/crash/2006-08-23-15:34/vmcore
-
- crash> bt
-
-and so on...
-
-
-Notes on kdump
-==============
-
-When kdump starts, the kdump kernel is loaded together with the kdump
-initramfs. To save memory usage and disk space, the kdump initramfs is
-generated strictly against the system it will run on, and contains the
-minimum set of kernel modules and utilities to boot the machine to a stage
-where the dump target could be mounted.
-
-With kdump service enabled, kdumpctl will try to detect possible system
-change and rebuild the kdump initramfs if needed. But it can not guarantee
-to cover every possible case. So after a hardware change, disk migration,
-storage setup update or any similar system level changes, it's highly
-recommended to rebuild the initramfs manually with following command:
-
- # kdumpctl rebuild
-
-
-Saving vmcore-dmesg.txt
-=======================
-
-Kernel log bufferes are one of the most important information available
-in vmcore. Now before saving vmcore, kernel log bufferes are extracted
-from /proc/vmcore and saved into a file vmcore-dmesg.txt. After
-vmcore-dmesg.txt, vmcore is saved. Destination disk and directory for
-vmcore-dmesg.txt is same as vmcore. Note that kernel log buffers will
-not be available if dump target is raw device.
-
-
-Dump Triggering methods
-=======================
-
-This section talks about the various ways, other than a Kernel Panic, in which
-Kdump can be triggered. The following methods assume that Kdump is configured
-on your system, with the scripts enabled as described in the section above.
-
-1) AltSysRq C
-
-Kdump can be triggered with the combination of the 'Alt','SysRq' and 'C'
-keyboard keys. Please refer to the following link for more details:
-
-http://kbase.redhat.com/faq/FAQ_43_5559.shtm
-
-In addition, on PowerPC boxes, Kdump can also be triggered via Hardware
-Management Console(HMC) using 'Ctrl', 'O' and 'C' keyboard keys.
-
-2) NMI_WATCHDOG
-
-In case a machine has a hard hang, it is quite possible that it does not
-respond to keyboard interrupts. As a result 'Alt-SysRq' keys will not help
-trigger a dump. In such scenarios Nmi Watchdog feature can prove to be useful.
-The following link has more details on configuring Nmi watchdog option.
-
-http://kbase.redhat.com/faq/FAQ_85_9129.shtm
-
-Once this feature has been enabled in the kernel, any lockups will result in an
-OOPs message to be generated, followed by Kdump being triggered.
-
-3) Kernel OOPs
-
-If we want to generate a dump everytime the Kernel OOPses, we can achieve this
-by setting the 'Panic On OOPs' option as follows:
-
- # echo 1 > /proc/sys/kernel/panic_on_oops
-
-This is enabled by default on RHEL5.
-
-4) NMI(Non maskable interrupt) button
-
-In cases where the system is in a hung state, and is not accepting keyboard
-interrupts, using NMI button for triggering Kdump can be very useful. NMI
-button is present on most of the newer x86 and x86_64 machines. Please refer
-to the User guides/manuals to locate the button, though in most occasions it
-is not very well documented. In most cases it is hidden behind a small hole
-on the front or back panel of the machine. You could use a toothpick or some
-other non-conducting probe to press the button.
-
-For example, on the IBM X series 366 machine, the NMI button is located behind
-a small hole on the bottom center of the rear panel.
-
-To enable this method of dump triggering using NMI button, you will need to set
-the 'unknown_nmi_panic' option as follows:
-
- # echo 1 > /proc/sys/kernel/unknown_nmi_panic
-
-5) PowerPC specific methods:
-
-On IBM PowerPC machines, issuing a soft reset invokes the XMON debugger(if
-XMON is configured). To configure XMON one needs to compile the kernel with
-the CONFIG_XMON and CONFIG_XMON_DEFAULT options, or by compiling with
-CONFIG_XMON and booting the kernel with xmon=on option.
-
-Following are the ways to remotely issue a soft reset on PowerPC boxes, which
-would drop you to XMON. Pressing a 'X' (capital alphabet X) followed by an
-'Enter' here will trigger the dump.
-
-5.1) HMC
-
-Hardware Management Console(HMC) available on Power4 and Power5 machines allow
-partitions to be reset remotely. This is specially useful in hang situations
-where the system is not accepting any keyboard inputs.
-
-Once you have HMC configured, the following steps will enable you to trigger
-Kdump via a soft reset:
-
-On Power4
- Using GUI
-
- * In the right pane, right click on the partition you wish to dump.
- * Select "Operating System->Reset".
- * Select "Soft Reset".
- * Select "Yes".
-
- Using HMC Commandline
-
- # reset_partition -m <machine> -p <partition> -t soft
-
-On Power5
- Using GUI
-
- * In the right pane, right click on the partition you wish to dump.
- * Select "Restart Partition".
- * Select "Dump".
- * Select "OK".
-
- Using HMC Commandline
-
- # chsysstate -m <managed system name> -n <lpar name> -o dumprestart -r lpar
-
-5.2) Blade Management Console for Blade Center
-
-To initiate a dump operation, go to Power/Restart option under "Blade Tasks" in
-the Blade Management Console. Select the corresponding blade for which you want
-to initate the dump and then click "Restart blade with NMI". This issues a
-system reset and invokes xmon debugger.
-
-
-Dump targets
-============
-
-In addition to being able to capture a vmcore to your system's local file
-system, kdump can be configured to capture a vmcore to a number of other
-locations, including a raw disk partition, a dedicated file system, an NFS
-mounted file system, or a remote system via ssh/scp. Additional options
-exist for specifying the relative path under which the dump is captured,
-what to do if the capture fails, and for compressing and filtering the dump
-(so as to produce smaller, more manageable, vmcore files, see "Advanced Setups"
-for more detail on these options).
-
-In theory, dumping to a location other than the local file system should be
-safer than kdump's default setup, as its possible the default setup will try
-dumping to a file system that has become corrupted. The raw disk partition and
-dedicated file system options allow you to still dump to the local system,
-but without having to remount your possibly corrupted file system(s),
-thereby decreasing the chance a vmcore won't be captured. Dumping to an
-NFS server or remote system via ssh/scp also has this advantage, as well
-as allowing for the centralization of vmcore files, should you have several
-systems from which you'd like to obtain vmcore files. Of course, note that
-these configurations could present problems if your network is unreliable.
-
-Kdump target and advanced setups are configured via modifications to
-/etc/kdump.conf, which out of the box, is fairly well documented itself.
-Any alterations to /etc/kdump.conf should be followed by a restart of the
-kdump service, so the changes can be incorporated in the kdump initrd.
-Restarting the kdump service is as simple as '/sbin/systemctl restart kdump.service'.
-
-There are two ways to config the dump target, config dump target only
-using "path", and config dump target explicitly. Interpretation of "path"
-also differs in two config styles.
-
-Config dump target only using "path"
-------------------------------------
-
-You can change the dump target by setting "path" to a mount point where
-dump target is mounted. When there is no explicitly configured dump target,
-"path" in kdump.conf represents the current file system path in which vmcore
-will be saved. Kdump will automatically detect the underlying device of
-"path" and use that as the dump target.
-
-In fact, upon dump, kdump creates a directory $hostip-$date with-in "path"
-and saves vmcore there. So practically dump is saved in $path/$hostip-$date/.
-
-Kdump will only check current mount status for mount entry corresponding to
-"path". So please ensure the dump target is mounted on "path" before kdump
-service starts.
-
-NOTES:
-
-- It's strongly recommanded to put an mount entry for "path" in /etc/fstab
- and have it auto mounted on boot. This make sure the dump target is
- reachable from the machine and kdump's configuration is stable.
-
-EXAMPLES:
-
-- path /var/crash/
-
- This is the default configuration. Assuming there is no disk mounted
- on /var/ or on /var/crash, dump will be saved on disk backing rootfs
- in directory /var/crash.
-
-- path /var/crash/ (A separate disk mounted on /var/crash)
-
- Say a disk /dev/sdb is mounted on /var. In this case dump target will
- become /dev/sdb and path will become "/" and dump will be saved
- on "sdb:/var/crash/" directory.
-
-- path /var/crash/ (NFS mounted on /var)
-
- Say foo.com:/export/tmp is mounted on /var. In this case dump target is
- nfs server and path will be adjusted to "/crash" and dump will be saved to
- foo.com:/export/tmp/crash/ directory.
-
-Config dump target explicitely
-------------------------------
-
-You can set the dump target explicitly in kdump.conf, and "path" will be
-the relative path in the specified dump target. For example, if dump
-target is "ext4 /dev/sda", then dump will be saved in "path" directory
-on /dev/sda.
-
-Same is the case for nfs dump. If user specified "nfs foo.com:/export/tmp/"
-as dump target, then dump will effectively be saved in
-"foo.com:/export/tmp/var/crash/" directory.
-
-If the dump target is "raw", then "path" is ignored.
-
-If it's a filesystem target, kdump will need to know the right mount option.
-Kdump will check current mount status, and then /etc/fstab for mount options
-corresponding to the specified dump target and use it. If there are
-special mount option required for the dump target, it could be set by put
-an entry in fstab.
-
-If there are no related mount entry, mount option is set to "defaults".
-
-NOTES:
-
-- It's recommended to put an entry for the dump target in /etc/fstab
- and have it auto mounted on boot. This make sure the dump target is
- reachable from the machine and kdump won't fail.
-
-- Kdump ignores some mount options, including "noauto", "ro". This
- make it possible to keep the dump target unmounted or read-only
- when not used.
-
-EXAMPLES:
-
-- ext4 /dev/sda (mounted)
- path /var/crash/
-
- In this case dump target is set to /dev/sdb, path is the absolute path
- "/var/crash" in /dev/sda, vmcore path will saved on
- "sda:/var/crash" directory.
-
-- nfs foo.com:/export/tmp (mounted)
- path /var/crash/
-
- In this case dump target is nfs server, path is the absolute path
- "/var/crash", vmcore path will saved on "foo.com:/export/tmp/crash/" directory.
-
-- nfs foo.com:/export/tmp (not mounted)
- path /var/crash/
-
- Same with above case, kdump will use "defaults" as the mount option
- for the dump target.
-
-- nfs foo.com:/export/tmp (not mounted, entry with option "noauto,nolock" exists in /etc/fstab)
- path /var/crash/
-
- In this case dump target is nfs server, vmcore path will saved on
- "foo.com:/export/tmp/crash/" directory, and kdump will inherit "nolock" option.
-
-Dump target and mkdumprd
-------------------------
-
-MKdumprd is the tool used to create kdump initramfs, and it may change
-the mount status of the dump target in some condition.
-
-Usually the dump target should be used only for kdump. If you worry about
-someone uses the filesystem for something else other than dumping vmcore
-you can mount it as read-only or make it a noauto mount. Mkdumprd will
-mount/remount it as read-write for creating dump directory and will
-move it back to it's original state afterwards.
-
-Supported dump target types and requirements
---------------------------------------------
-
-1) Raw partition
-
-Raw partition dumping requires that a disk partition in the system, at least
-as large as the amount of memory in the system, be left unformatted. Assuming
-/dev/vg/lv_kdump is left unformatted, kdump.conf can be configured with
-'raw /dev/vg/lv_kdump', and the vmcore file will be copied via dd directly
-onto partition /dev/vg/lv_kdump. Restart the kdump service via
-'/sbin/systemctl restart kdump.service' to commit this change to your kdump
-initrd. Dump target should be persistent device name, such as lvm or device
-mapper canonical name.
-
-2) Dedicated file system
-
-Similar to raw partition dumping, you can format a partition with the file
-system of your choice, Again, it should be at least as large as the amount
-of memory in the system. Assuming it should be at least as large as the
-amount of memory in the system. Assuming /dev/vg/lv_kdump has been
-formatted ext4, specify 'ext4 /dev/vg/lv_kdump' in kdump.conf, and a
-vmcore file will be copied onto the file system after it has been mounted.
-Dumping to a dedicated partition has the advantage that you can dump multiple
-vmcores to the file system, space permitting, without overwriting previous ones,
-as would be the case in a raw partition setup. Restart the kdump service via
-'/sbin/systemctl restart kdump.service' to commit this change to
-your kdump initrd. Note that for local file systems ext4 and ext2 are
-supported as dumpable targets. Kdump will not prevent you from specifying
-other filesystems, and they will most likely work, but their operation
-cannot be guaranteed. for instance specifying a vfat filesystem or msdos
-filesystem will result in a successful load of the kdump service, but during
-crash recovery, the dump will fail if the system has more than 2GB of memory
-(since vfat and msdos filesystems do not support more than 2GB files).
-Be careful of your filesystem selection when using this target.
-
-It is recommended to use persistent device names or UUID/LABEL for file system
-dumps. One example of persistent device is /dev/vg/<devname>.
-
-3) NFS mount
-
-Dumping over NFS requires an NFS server configured to export a file system
-with full read/write access for the root user. All operations done within
-the kdump initial ramdisk are done as root, and to write out a vmcore file,
-we obviously must be able to write to the NFS mount. Configuring an NFS
-server is outside the scope of this document, but either the no_root_squash
-or anonuid options on the NFS server side are likely of interest to permit
-the kdump initrd operations write to the NFS mount as root.
-
-Assuming your're exporting /dump on the machine nfs-server.example.com,
-once the mount is properly configured, specify it in kdump.conf, via
-'nfs nfs-server.example.com:/dump'. The server portion can be specified either
-by host name or IP address. Following a system crash, the kdump initrd will
-mount the NFS mount and copy out the vmcore to your NFS server. Restart the
-kdump service via '/sbin/systemctl restart kdump.service' to commit this change
-to your kdump initrd.
-
-4) Special mount via "dracut_args"
-
-You can utilize "dracut_args" to pass "--mount" to kdump, see dracut manpage
-about the format of "--mount" for details. If there is any "--mount" specified
-via "dracut_args", kdump will build it as the mount target without doing any
-validation (mounting or checking like mount options, fs size, save path, etc),
-so you must test it to ensure all the correctness. You cannot use other targets
-in /etc/kdump.conf if you use "--mount" in "dracut_args". You also cannot specify
-mutliple "--mount" targets via "dracut_args".
-
-One use case of "--mount" in "dracut_args" is you do not want to mount dump target
-before kdump service startup, for example, to reduce the burden of the shared nfs
-server. Such as the example below:
-dracut_args --mount "192.168.1.1:/share /mnt/test nfs4 defaults"
-
-NOTE:
-- <mountpoint> must be specified as an absolute path.
-
-5) Remote system via ssh/scp
-
-Dumping over ssh/scp requires setting up passwordless ssh keys for every
-machine you wish to have dump via this method. First up, configure kdump.conf
-for ssh/scp dumping, adding a config line of 'ssh user@server', where 'user'
-can be any user on the target system you choose, and 'server' is the host
-name or IP address of the target system. Using a dedicated, restricted user
-account on the target system is recommended, as there will be keyless ssh
-access to this account.
-
-Once kdump.conf is appropriately configured, issue the command
-'kdumpctl propagate' to automatically set up the ssh host keys and transmit
-the necessary bits to the target server. You'll have to type in 'yes'
-to accept the host key for your targer server if this is the first time
-you've connected to it, and then input the target system user's password
-to send over the necessary ssh key file. Restart the kdump service via
-'/sbin/systemctl restart kdump.service' to commit this change to your kdump initrd.
-
-Advanced Setups
-===============
-
-About /etc/sysconfig/kdump
-------------------------------
-
-Currently, there are a few options in /etc/sysconfig/kdump, which are
-usually used to control the behavior of kdump kernel. Basically, all of
-these options have default values, usually we do not need to change them,
-but sometimes, we may modify them in order to better control the behavior
-of kdump kernel such as debug, etc.
-
--KDUMP_BOOTDIR
-
-Usually kdump kernel is the same as 1st kernel. So kdump will try to find
-kdump kernel under /boot according to /proc/cmdline. E.g we execute below
-command and get an output:
- cat /proc/cmdline
- BOOT_IMAGE=/xxx/vmlinuz-3.yyy.zzz root=xxxx .....
-
-Then kdump kernel will be /boot/xxx/vmlinuz-3.yyy.zzz. However, this option
-is provided to user if kdump kernel is put in a different directory.
-
--KDUMP_IMG
-
-This represents the image type used for kdump. The default value is "vmlinuz".
-
--KDUMP_IMG_EXT
-
-This represents the images extension. Relocatable kernels don't have one.
-Currently, it is a null string by default.
-
--KEXEC_ARGS
-
-Any additional kexec arguments required. For example:
-KEXEC_ARGS="--elf32-core-headers".
-
-In most situations, this should be left empty. But, sometimes we hope to get
-additional kexec loading debugging information, we can add the '-d' option
-for the debugging.
-
--KDUMP_KERNELVER
-
-This is a kernel version string for the kdump kernel. If the version is not
-specified, the init script will try to find a kdump kernel with the same
-version number as the running kernel.
-
--KDUMP_COMMANDLINE
-
-The value of 'KDUMP_COMMANDLINE' will be passed to kdump kernel as command
-line parameters, this will likely match the contents of the grub kernel line.
-
-In general, if a command line is not specified, which means that it is a null
-string such as KDUMP_COMMANDLINE="", the default will be taken automatically
-from the '/proc/cmdline'.
-
--KDUMP_COMMANDLINE_REMOVE
-
-This option allows us to remove arguments from the current kdump command line.
-If we don't specify any parameters for the KDUMP_COMMANDLINE, it will inherit
-all values from the '/proc/cmdline', which is not expected. As you know, some
-default kernel parameters could affect kdump, furthermore, that could cause
-the failure of kdump kernel boot.
-
-In addition, the option is also helpful to debug the kdump kernel, we can use
-this option to change kdump kernel command line.
-
-For more kernel parameters, please refer to kernel document.
-
--KDUMP_COMMANDLINE_APPEND
-
-This option allows us to append arguments to the current kdump command line
-after processed by the KDUMP_COMMANDLINE_REMOVE. For kdump kernel, some
-specific modules require to be disabled like the mce, cgroup, numa, hest_disable,
-etc. Those modules may waste memory or kdump kernel doesn't need them,
-furthermore, there may affect kdump kernel boot.
-
-Just like above option, it can be used to disable or enable some kernel
-modules so that we can exclude any errors for kdump kernel, this is very
-meaningful for debugging.
-
--KDUMP_STDLOGLVL | KDUMP_SYSLOGLVL | KDUMP_KMSGLOGLVL
-
-These variables are used to control the kdump log level in the first kernel.
-In the second kernel, kdump will use the rd.kdumploglvl option to set the log
-level in the above KDUMP_COMMANDLINE_APPEND.
-
-Logging levels: no logging(0), error(1), warn(2), info(3), debug(4)
-
-Kdump Post-Capture Executable
------------------------------
-
-It is possible to specify a custom script or binary you wish to run following
-an attempt to capture a vmcore. The executable is passed an exit code from
-the capture process, which can be used to trigger different actions from
-within your post-capture executable.
-If /etc/kdump/post.d directory exist, All files in the directory are
-collectively sorted and executed in lexical order, before binary or script
-specified kdump_post parameter is executed.
-
-In these scripts, the reference to the storage or network device should adhere
-to the section 'Supported dump target types and requirements'
-
-Kdump Pre-Capture Executable
-----------------------------
-
-It is possible to specify a custom script or binary you wish to run before
-capturing a vmcore. Exit status of this binary is interpreted:
-0 - continue with dump process as usual
-non 0 - run the final action (reboot/poweroff/halt)
-If /etc/kdump/pre.d directory exists, all files in the directory are collectively
-sorted and executed in lexical order, after binary or script specified
-kdump_pre parameter is executed.
-Even if the binary or script in /etc/kdump/pre.d directory returns non 0
-exit status, the processing is continued.
-
-In these scripts, the reference to the storage or network device should adhere
-to the section 'Supported dump target types and requirements'
-
-Extra Binaries
---------------
-
-If you have specific binaries or scripts you want to have made available
-within your kdump initrd, you can specify them by their full path, and they
-will be included in your kdump initrd, along with all dependent libraries.
-This may be particularly useful for those running post-capture scripts that
-rely on other binaries.
-
-Extra Modules
--------------
-
-By default, only the bare minimum of kernel modules will be included in your
-kdump initrd. Should you wish to capture your vmcore files to a non-boot-path
-storage device, such as an iscsi target disk or clustered file system, you may
-need to manually specify additional kernel modules to load into your kdump
-initrd.
-
-Failure action
---------------
-
-Failure action specifies what to do when dump to configured dump target
-fails. By default, failure action is "reboot" and that is system reboots
-if attempt to save dump to dump target fails.
-
-There are other failure actions available though.
-
-- dump_to_rootfs
- This option tries to mount root and save dump on root filesystem
- in a path specified by "path". This option will generally make
- sense when dump target is not root filesystem. For example, if
- dump is being saved over network using "ssh" then one can specify
- failure action to "dump_to_rootfs" to try saving dump to root
- filesystem if dump over network fails.
-
-- shell
- Drop into a shell session inside initramfs.
-
-- halt
- Halt system after failure
-
-- poweroff
- Poweroff system after failure.
-
-Compression and filtering
--------------------------
-
-The 'core_collector' parameter in kdump.conf allows you to specify a custom
-dump capture method. The most common alternate method is makedumpfile, which
-is a dump filtering and compression utility provided with kexec-tools. On
-some architectures, it can drastically reduce the size of your vmcore files,
-which becomes very useful on systems with large amounts of memory.
-
-A typical setup is 'core_collector makedumpfile -F -l --message-level 7 -d 31',
-but check the output of '/sbin/makedumpfile --help' for a list of all available
-options (-i and -g don't need to be specified, they're automatically taken care
-of). Note that use of makedumpfile requires that the kernel-debuginfo package
-corresponding with your running kernel be installed.
-
-Core collector command format depends on dump target type. Typically for
-filesystem (local/remote), core_collector should accept two arguments.
-First one is source file and second one is target file. For ex.
-
-- ex1.
-
- core_collector "cp --sparse=always"
-
- Above will effectively be translated to:
-
- cp --sparse=always /proc/vmcore <dest-path>/vmcore
-
-- ex2.
-
- core_collector "makedumpfile -l --message-level 7 -d 31"
-
- Above will effectively be translated to:
-
- makedumpfile -l --message-level 7 -d 31 /proc/vmcore <dest-path>/vmcore
-
-For dump targets like raw and ssh, in general, core collector should expect
-one argument (source file) and should output the processed core on standard
-output (There is one exception of "scp", discussed later). This standard
-output will be saved to destination using appropriate commands.
-
-raw dumps core_collector examples:
-
-- ex3.
-
- core_collector "cat"
-
- Above will effectively be translated to.
-
- cat /proc/vmcore | dd of=<target-device>
-
-- ex4.
-
- core_collector "makedumpfile -F -l --message-level 7 -d 31"
-
- Above will effectively be translated to.
-
- makedumpfile -F -l --message-level 7 -d 31 | dd of=<target-device>
-
-ssh dumps core_collector examples:
-
-- ex5.
-
- core_collector "cat"
-
- Above will effectively be translated to.
-
- cat /proc/vmcore | ssh <options> <remote-location> "dd of=path/vmcore"
-
-- ex6.
-
- core_collector "makedumpfile -F -l --message-level 7 -d 31"
-
- Above will effectively be translated to.
-
- makedumpfile -F -l --message-level 7 -d 31 | ssh <options> <remote-location> "dd of=path/vmcore"
-
-There is one exception to standard output rule for ssh dumps. And that is
-scp. As scp can handle ssh destinations for file transfers, one can
-specify "scp" as core collector for ssh targets (no output on stdout).
-
-- ex7.
-
- core_collector "scp"
-
- Above will effectively be translated to.
-
- scp /proc/vmcore <user@host>:path/vmcore
-
-About default core collector
-----------------------------
-
-Default core_collector for ssh/raw dump is:
-"makedumpfile -F -l --message-level 7 -d 31".
-Default core_collector for other targets is:
-"makedumpfile -l --message-level 7 -d 31".
-
-Even if core_collector option is commented out in kdump.conf, makedumpfile
-is default core collector and kdump uses it internally.
-
-If one does not want makedumpfile as default core_collector, then they
-need to specify one using core_collector option to change the behavior.
-
-Note: If "makedumpfile -F" is used then you will get a flattened format
-vmcore.flat, you will need to use "makedumpfile -R" to rearrange the
-dump data from stdard input to a normal dumpfile (readable with analysis
-tools).
-For example: "makedumpfile -R vmcore < vmcore.flat"
-
-
-Caveats
-=======
-
-Console frame-buffers and X are not properly supported. If you typically run
-with something along the lines of "vga=791" in your kernel config line or
-have X running, console video will be garbled when a kernel is booted via
-kexec. Note that the kdump kernel should still be able to create a dump,
-and when the system reboots, video should be restored to normal.
-
-
-Notes
-=====
-
-Notes on resetting video:
--------------------------
-
-Video is a notoriously difficult issue with kexec. Video cards contain ROM code
-that controls their initial configuration and setup. This code is nominally
-accessed and executed from the Bios, and otherwise not safely executable. Since
-the purpose of kexec is to reboot the system without re-executing the Bios, it
-is rather difficult if not impossible to reset video cards with kexec. The
-result is, that if a system crashes while running in a graphical mode (i.e.
-running X), the screen may appear to become 'frozen' while the dump capture is
-taking place. A serial console will of course reveal that the system is
-operating and capturing a vmcore image, but a casual observer will see the
-system as hung until the dump completes and a true reboot is executed.
-
-There are two possiblilties to work around this issue. One is by adding
---reset-vga to the kexec command line options in /etc/sysconfig/kdump. This
-tells kdump to write some reasonable default values to the video card register
-file, in the hopes of returning it to a text mode such that boot messages are
-visible on the screen. It does not work with all video cards however.
-Secondly, it may be worth trying to add vga15fb.ko to the extra_modules list in
-/etc/kdump.conf. This will attempt to use the video card in framebuffer mode,
-which can blank the screen prior to the start of a dump capture.
-
-Notes on rootfs mount
----------------------
-
-Dracut is designed to mount rootfs by default. If rootfs mounting fails it
-will refuse to go on. So kdump leaves rootfs mounting to dracut currently.
-We make the assumtion that proper root= cmdline is being passed to dracut
-initramfs for the time being. If you need modify "KDUMP_COMMANDLINE=" in
-/etc/sysconfig/kdump, you will need to make sure that appropriate root=
-options are copied from /proc/cmdline. In general it is best to append
-command line options using "KDUMP_COMMANDLINE_APPEND=" instead of replacing
-the original command line completely.
-
-Notes on watchdog module handling
----------------------------------
-
-If a watchdog is active in first kernel then, we must have it's module
-loaded in crash kernel, so that either watchdog is deactivated or started
-being kicked in second kernel. Otherwise, we might face watchdog reboot
-when vmcore is being saved. When dracut watchdog module is enabled, it
-installs kernel watchdog module of active watchdog device in initrd.
-kexec-tools always add "-a watchdog" to the dracut_args if there exists at
-least one active watchdog and user has not added specifically "-o watchdog"
-in dracut_args of kdump.conf. If a watchdog module (such as hp_wdt) has
-not been written in watchdog-core framework then this option will not have
-any effect and module will not be added. Please note that only systemd
-watchdog daemon is supported as watchdog kick application.
-
-Notes for disk images
----------------------
-
-Kdump initramfs is a critical component for capturing the crash dump.
-But it's strictly generated for the machine it will run on, and have
-no generality. If you install a new machine with a previous disk image
-(eg. VMs created with disk image or snapshot), kdump could be broken
-easily due to hardware changes or disk ID changes. So it's strongly
-recommended to not include the kdump initramfs in the disk image in the
-first place, this helps to save space, and kdumpctl will build the
-initramfs automatically if it's missing. If you have already installed
-a machine with a disk image which have kdump initramfs embedded, you
-should rebuild the initramfs using "kdumpctl rebuild" command manually,
-or else kdump may not work as expeceted.
-
-Notes on encrypted dump target
-------------------------------
-
-Currently, kdump is not working well with encrypted dump target.
-First, user have to give the password manually in capture kernel,
-so a working interactive terminal is required in the capture kernel.
-And another major issue is that an OOM problem will occur with certain
-encryption setup. For example, the default setup for LUKS2 will use a
-memory hard key derivation function to mitigate brute force attach,
-it's impossible to reduce the memory usage for mounting the encrypted
-target. In such case, you have to either reserved enough memory for
-crash kernel according, or update your encryption setup.
-It's recommanded to use a non-encrypted target (eg. remote target)
-instead.
-
-Notes on device dump
---------------------
-
-Device dump allows drivers to append dump data to vmcore, so you can
-collect driver specified debug info. The drivers could append the
-data without any limit, and the data is stored in memory, this may
-bring a significant memory stress. So device dump is disabled by default
-by passing "novmcoredd" command line option to the kdump capture kernel.
-If you want to collect debug data with device dump, you need to modify
-"KDUMP_COMMANDLINE_APPEND=" value in /etc/sysconfig/kdump and remove the
-"novmcoredd" option. You also need to increase the "crashkernel=" value
-accordingly in case of OOM issue.
-Besides, kdump initramfs won't automatically include the device drivers
-which support device dump, only device drivers that are required for
-the dump target setup will be included. To ensure the device dump data
-will be included in the vmcore, you need to force include related
-device drivers by using "extra_modules" option in /etc/kdump.conf
-
-
-Parallel Dumping Operation
-==========================
-
-Kexec allows kdump using multiple cpus. So parallel feature can accelerate
-dumping substantially, especially in executing compression and filter.
-For example:
-
- 1."makedumpfile -c --num-threads [THREAD_NUM] /proc/vmcore dumpfile"
- 2."makedumpfile -c /proc/vmcore dumpfile",
-
- 1 has better performance than 2, if THREAD_NUM is larger than two
- and the usable cpus number is larger than THREAD_NUM.
-
-Notes on how to use multiple cpus on a capture kernel on x86 system:
-
-Make sure that you are using a kernel that supports disable_cpu_apicid
-kernel option as a capture kernel, which is needed to avoid x86 specific
-hardware issue (*). The disable_cpu_apicid kernel option is automatically
-appended by kdumpctl script and is ignored if the kernel doesn't support it.
-
-You need to specify how many cpus to be used in a capture kernel by specifying
-the number of cpus in nr_cpus kernel option in /etc/sysconfig/kdump. nr_cpus
-is 1 at default.
-
-You should use necessary and sufficient number of cpus on a capture kernel.
-Warning: Don't use too many cpus on a capture kernel, or the capture kernel
-may lead to panic due to Out Of Memory.
-
-(*) Without disable_cpu_apicid kernel option, capture kernel may lead to
-hang, system reset or power-off at boot, depending on your system and runtime
-situation at the time of crash.
-
-
-Debugging Tips
-==============
-
-- One can drop into a shell before/after saving vmcore with the help of
- using kdump_pre/kdump_post hooks. Use following in one of the pre/post
- scripts to drop into a shell.
-
- #!/bin/bash
- _ctty=/dev/ttyS0
- setsid /bin/sh -i -l 0<>$_ctty 1<>$_ctty 2<>$_ctty
-
- One might have to change the terminal depending on what they are using.
-
-- Serial console logging for virtual machines
-
- I generally use "virsh console <domain-name>" to get to serial console.
- I noticed after dump saving system reboots and when grub menu shows up
- some of the previously logged messages are no more there. That means
- any important debugging info at the end will be lost.
-
- One can log serial console as follows to make sure messages are not lost.
-
- virsh ttyconsole <domain-name>
- ln -s <name-of-tty> /dev/modem
- minicom -C /tmp/console-logs
-
- Now minicom should be logging serial console in file console-logs.
-
-- Using the logger to output kdump log messages
-
- You can configure the kdump log level for the first kernel in the
- /etc/sysconfig/kdump. For example:
-
- KDUMP_STDLOGLVL=3
- KDUMP_SYSLOGLVL=0
- KDUMP_KMSGLOGLVL=0
-
- The above configurations indicate that kdump messages will be printed
- to the console, and the KDUMP_STDLOGLVL is set to 3(info), but the
- KDUMP_SYSLOGLVL and KDUMP_KMSGLOGLVL are set to 0(no logging). This
- is also the current default log levels in the first kernel.
-
- In the second kernel, you can add the 'rd.kdumploglvl=X' option to the
- KDUMP_COMMANDLINE_APPEND in the /etc/sysconfig/kdump so that you can also
- set the log levels for the second kernel. The 'X' represents the logging
- levels, the default log level is 3(info) in the second kernel, for example:
-
- # cat /etc/sysconfig/kdump |grep rd.kdumploglvl
- KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 acpi_no_memhotplug transparent_hugepage=never nokaslr hest_disable novmcoredd rd.kdumploglvl=3"
-
- Logging levels: no logging(0), error(1),warn(2),info(3),debug(4)
-
- The ERROR level designates error events that might still allow the application
- to continue running.
-
- The WARN level designates potentially harmful situations.
-
- The INFO level designates informational messages that highlight the progress
- of the application at coarse-grained level.
-
- The DEBUG level designates fine-grained informational events that are most
- useful to debug an application.
-
- Note: if you set the log level to 0, that will disable the logs at the
- corresponding log level, which indicates that it has no log output.
-
- At present, the logger works in both the first kernel(kdump service debugging)
- and the second kernel.
-
- In the first kernel, you can find the historical logs with the journalctl
- command and check kdump service debugging information. In addition, the
- 'kexec -d' debugging messages are also saved to /var/log/kdump.log in the
- first kernel. For example:
-
- [root@ibm-z-109 ~]# ls -al /var/log/kdump.log
- -rw-r--r--. 1 root root 63238 Oct 28 06:40 /var/log/kdump.log
-
- If you want to get the debugging information of building kdump initramfs, you
- can enable the '--debug' option for the dracut_args in the /etc/kdump.conf, and
- then rebuild the kdump initramfs as below:
-
- # systemctl restart kdump.service
-
- That will rebuild the kdump initramfs and gerenate some logs to journald, you
- can find the dracut logs with the journalctl command.
-
- In the second kernel, kdump will automatically put the kexec-dmesg.log to a same
- directory with the vmcore, the log file includes the debugging messages like dmesg
- and journald logs. For example:
-
- [root@ibm-z-109 ~]# ls -al /var/crash/127.0.0.1-2020-10-28-02\:01\:23/
- drwxr-xr-x. 2 root root 67 Oct 28 02:02 .
- drwxr-xr-x. 6 root root 154 Oct 28 02:01 ..
- -rw-r--r--. 1 root root 21164 Oct 28 02:01 kexec-dmesg.log
- -rw-------. 1 root root 74238698 Oct 28 02:01 vmcore
- -rw-r--r--. 1 root root 17532 Oct 28 02:01 vmcore-dmesg.txt
-
- If you want to get more debugging information in the second kernel, you can add
- the 'rd.debug' option to the KDUMP_COMMANDLINE_APPEND in the /etc/sysconfig/kdump,
- and then reload them in order to make the changes take effect.
-
- In addition, you can also add the 'rd.memdebug=X' option to the KDUMP_COMMANDLINE_APPEND
- in the /etc/sysconfig/kdump in order to output the additional information about
- kernel module memory consumption during loading.
-
- For more details, please refer to the /etc/sysconfig/kdump, or the man page of
- dracut.cmdline and kdump.conf.
diff --git a/live-image-kdump-howto.txt b/live-image-kdump-howto.txt
deleted file mode 100644
index 1695a1c..0000000
--- a/live-image-kdump-howto.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Kdump now works on live images with some manual configurations. Here is the step
-by step guide.
-
-1. Enable crashkernel reservation
-
-Since there isn't any config file that can be used to configure kernel
-parameters for live images before booting them, we have to append 'crashkernel'
-argument in boot menu every time we boot a live image.
-
-2. Change dump target in /etc/kdump.conf
-
-When kdump kernel boots in a live environment, the default target /var/crash is
-in RAM so you need to change the dump target to an external disk or a network
-dump target.
-
-Besides, make sure that "default dump_to_rootfs" is not specified.
-
-3. Start kdump service
-
- $ kdumpctl start
-
-4. Trigger a kdump test
-
- $ echo 1 > /proc/sys/kernel/sysrq
- $ echo c > /proc/sysrq-trigger
diff --git a/mkdumprd b/mkdumprd
deleted file mode 100644
index 31c4b76..0000000
--- a/mkdumprd
+++ /dev/null
@@ -1,417 +0,0 @@
-#!/bin/bash --norc
-# New mkdumprd
-#
-# Copyright 2011 Red Hat, Inc.
-#
-# Written by Cong Wang <amwang(a)redhat.com>
-#
-
-if [[ -f /etc/sysconfig/kdump ]]; then
- . /etc/sysconfig/kdump
-fi
-
-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
-. $dracutbasedir/dracut-functions.sh
-. /lib/kdump/kdump-lib.sh
-. /lib/kdump/kdump-logger.sh
-export IN_KDUMP=1
-
-#initiate the kdump logger
-if ! dlog_init; then
- echo "failed to initiate the kdump logger."
- exit 1
-fi
-
-SSH_KEY_LOCATION=$DEFAULT_SSHKEY
-SAVE_PATH=$(get_save_path)
-
-extra_modules=""
-dracut_args=(--add kdumpbase --quiet --hostonly --hostonly-cmdline --hostonly-i18n --hostonly-mode strict --hostonly-nics '' --aggressive-strip -o "plymouth resume ifcfg earlykdump")
-
-MKDUMPRD_TMPDIR="$(mktemp -d -t mkdumprd.XXXXXX)"
-[ -d "$MKDUMPRD_TMPDIR" ] || perror_exit "dracut: mktemp -p -d -t dracut.XXXXXX failed."
-MKDUMPRD_TMPMNT="$MKDUMPRD_TMPDIR/target"
-
-trap '
- ret=$?;
- is_mounted $MKDUMPRD_TMPMNT && umount -f $MKDUMPRD_TMPMNT;
- [[ -d $MKDUMPRD_TMPDIR ]] && rm --one-file-system -rf -- "$MKDUMPRD_TMPDIR";
- exit $ret;
- ' EXIT
-
-# clean up after ourselves no matter how we die.
-trap 'exit 1;' SIGINT
-
-add_dracut_arg()
-{
- dracut_args+=("$@")
-}
-
-add_dracut_mount()
-{
- add_dracut_arg "--mount" "$1"
-}
-
-add_dracut_sshkey()
-{
- add_dracut_arg "--sshkey" "$1"
-}
-
-# caller should ensure $1 is valid and mounted in 1st kernel
-to_mount()
-{
- local _target=$1 _fstype=$2 _options=$3 _sed_cmd _new_mntpoint _pdev
-
- _new_mntpoint=$(get_kdump_mntpoint_from_target "$_target")
- _fstype="${_fstype:-$(get_fs_type_from_target "$_target")}"
- _options="${_options:-$(get_mntopt_from_target "$_target")}"
- _options="${_options:-defaults}"
-
- if [[ $_fstype == "nfs"* ]]; then
- _pdev=$_target
- _sed_cmd+='s/,\(mount\)\?addr=[^,]*//g;'
- _sed_cmd+='s/,\(mount\)\?proto=[^,]*//g;'
- _sed_cmd+='s/,clientaddr=[^,]*//;'
- else
- # for non-nfs _target converting to use udev persistent name
- _pdev="$(kdump_get_persistent_dev "$_target")"
- if [[ -z $_pdev ]]; then
- return 1
- fi
- fi
-
- # mount fs target as rw in 2nd kernel
- _sed_cmd+='s/\(^\|,\)ro\($\|,\)/\1rw\2/g;'
- # with 'noauto' in fstab nfs and non-root disk mount will fail in 2nd
- # kernel, filter it out here.
- _sed_cmd+='s/\(^\|,\)noauto\($\|,\)/\1/g;'
- # drop nofail or nobootwait
- _sed_cmd+='s/\(^\|,\)nofail\($\|,\)/\1/g;'
- _sed_cmd+='s/\(^\|,\)nobootwait\($\|,\)/\1/g;'
-
- _options=$(echo "$_options" | sed "$_sed_cmd")
-
- echo "$_pdev $_new_mntpoint $_fstype $_options"
-}
-
-#Function: get_ssh_size
-#$1=dump target
-#called from while loop and shouldn't read from stdin, so we're using "ssh -n"
-get_ssh_size()
-{
- local _out
- local _opt=("-i" "$SSH_KEY_LOCATION" "-o" "BatchMode=yes" "-o" "StrictHostKeyChecking=yes")
-
- if ! _out=$(ssh -q -n "${_opt[@]}" "$1" "df" "--output=avail" "$SAVE_PATH"); then
- perror_exit "checking remote ssh server available size failed."
- fi
-
- echo -n "$_out" | tail -1
-}
-
-#mkdir if save path does not exist on ssh dump target
-#$1=ssh dump target
-#caller should ensure write permission on $1:$SAVE_PATH
-#called from while loop and shouldn't read from stdin, so we're using "ssh -n"
-mkdir_save_path_ssh()
-{
- local _opt _dir
- _opt=(-i "$SSH_KEY_LOCATION" -o BatchMode=yes -o StrictHostKeyChecking=yes)
- ssh -qn "${_opt[@]}" "$1" mkdir -p "$SAVE_PATH" &> /dev/null ||
- perror_exit "mkdir failed on $1:$SAVE_PATH"
-
- # check whether user has write permission on $1:$SAVE_PATH
- _dir=$(ssh -qn "${_opt[@]}" "$1" mktemp -dqp "$SAVE_PATH" 2> /dev/null) ||
- perror_exit "Could not create temporary directory on $1:$SAVE_PATH. Make sure user has write permission on destination"
- ssh -qn "${_opt[@]}" "$1" rmdir "$_dir"
-
- return 0
-}
-
-#Function: get_fs_size
-#$1=dump target
-get_fs_size()
-{
- df --output=avail "$(get_mntpoint_from_target "$1")/$SAVE_PATH" | tail -1
-}
-
-#Function: get_raw_size
-#$1=dump target
-get_raw_size()
-{
- fdisk -s "$1"
-}
-
-#Function: check_size
-#$1: dump type string ('raw', 'fs', 'ssh')
-#$2: dump target
-check_size()
-{
- local avail memtotal
-
- memtotal=$(awk '/MemTotal/{print $2}' /proc/meminfo)
- case "$1" in
- raw)
- avail=$(get_raw_size "$2")
- ;;
- ssh)
- avail=$(get_ssh_size "$2")
- ;;
- fs)
- avail=$(get_fs_size "$2")
- ;;
- *)
- return
- ;;
- esac || perror_exit "Check dump target size failed"
-
- if [[ $avail -lt $memtotal ]]; then
- dwarn "Warning: There might not be enough space to save a vmcore."
- dwarn " The size of $2 should be greater than $memtotal kilo bytes."
- fi
-}
-
-check_save_path_fs()
-{
- local _path=$1
-
- if [[ ! -d $_path ]]; then
- perror_exit "Dump path $_path does not exist."
- fi
-}
-
-mount_failure()
-{
- local _target=$1
- local _mnt=$2
- local _fstype=$3
- local msg="Failed to mount $_target"
-
- if [[ -n $_mnt ]]; then
- msg="$msg on $_mnt"
- fi
-
- msg="$msg for kdump preflight check."
-
- if [[ $_fstype == "nfs" ]]; then
- msg="$msg Please make sure nfs-utils has been installed."
- fi
-
- perror_exit "$msg"
-}
-
-check_user_configured_target()
-{
- local _target=$1 _cfg_fs_type=$2 _mounted
- local _mnt _opt _fstype
-
- _mnt=$(get_mntpoint_from_target "$_target")
- _opt=$(get_mntopt_from_target "$_target")
- _fstype=$(get_fs_type_from_target "$_target")
-
- if [[ -n $_fstype ]]; then
- # In case of nfs4, nfs should be used instead, nfs* options is deprecated in kdump.conf
- [[ $_fstype == "nfs"* ]] && _fstype=nfs
-
- if [[ -n $_cfg_fs_type ]] && [[ $_fstype != "$_cfg_fs_type" ]]; then
- perror_exit "\"$_target\" have a wrong type config \"$_cfg_fs_type\", expected \"$_fstype\""
- fi
- else
- _fstype="$_cfg_fs_type"
- _fstype="$_cfg_fs_type"
- fi
-
- # For noauto mount, mount it inplace with default value.
- # Else use the temporary target directory
- if [[ -n $_mnt ]]; then
- if ! is_mounted "$_mnt"; then
- if [[ $_opt == *",noauto"* ]]; then
- mount "$_mnt" || mount_failure "$_target" "$_mnt" "$_fstype"
- _mounted=$_mnt
- else
- perror_exit "Dump target \"$_target\" is neither mounted nor configured as \"noauto\""
- fi
- fi
- else
- _mnt=$MKDUMPRD_TMPMNT
- mkdir -p "$_mnt"
- mount "$_target" "$_mnt" -t "$_fstype" -o defaults || mount_failure "$_target" "" "$_fstype"
- _mounted=$_mnt
- fi
-
- # For user configured target, use $SAVE_PATH as the dump path within the target
- if [[ ! -d "$_mnt/$SAVE_PATH" ]]; then
- perror_exit "Dump path \"$SAVE_PATH\" does not exist in dump target \"$_target\""
- fi
-
- check_size fs "$_target"
-
- # Unmount it early, if function is interrupted and didn't reach here, the shell trap will clear it up anyway
- if [[ -n $_mounted ]]; then
- umount -f -- "$_mounted"
- fi
-}
-
-# $1: core_collector config value
-verify_core_collector()
-{
- local _cmd="${1%% *}"
- local _params="${1#* }"
-
- if [[ $_cmd != "makedumpfile" ]]; then
- if is_raw_dump_target; then
- dwarn "Warning: specifying a non-makedumpfile core collector, you will have to recover the vmcore manually."
- fi
- return
- fi
-
- if is_ssh_dump_target || is_raw_dump_target; then
- if ! strstr "$_params" "-F"; then
- perror_exit 'The specified dump target needs makedumpfile "-F" option.'
- fi
- _params="$_params vmcore"
- else
- _params="$_params vmcore dumpfile"
- fi
-
- # shellcheck disable=SC2086
- if ! $_cmd --check-params $_params; then
- perror_exit "makedumpfile parameter check failed."
- fi
-}
-
-add_mount()
-{
- local _mnt
-
- _mnt=$(to_mount "$@") || exit 1
-
- add_dracut_mount "$_mnt"
-}
-
-#handle the case user does not specify the dump target explicitly
-handle_default_dump_target()
-{
- local _target
- local _mntpoint
-
- is_user_configured_dump_target && return
-
- check_save_path_fs "$SAVE_PATH"
-
- _save_path=$(get_bind_mount_source "$SAVE_PATH")
- _target=$(get_target_from_path "$_save_path")
- _mntpoint=$(get_mntpoint_from_target "$_target")
-
- SAVE_PATH=${_save_path##"$_mntpoint"}
- add_mount "$_target"
- check_size fs "$_target"
-}
-
-check_crypt()
-{
- local _dev
-
- for _dev in $(get_kdump_targets); do
- if [[ -n $(get_luks_crypt_dev "$(get_maj_min "$_dev")") ]]; then
- derror "Device $_dev is encrypted." && return 1
- fi
- done
-}
-
-if ! check_crypt; then
- dwarn "Warning: Encrypted device is in dump path, which is not recommended, see kexec-kdump-howto.txt for more details."
-fi
-
-# firstly get right SSH_KEY_LOCATION
-keyfile=$(kdump_get_conf_val sshkey)
-if [[ -f $keyfile ]]; then
- # canonicalize the path
- SSH_KEY_LOCATION=$(/usr/bin/readlink -m "$keyfile")
-fi
-
-while read -r config_opt config_val; do
- # remove inline comments after the end of a directive.
- case "$config_opt" in
- extra_modules)
- extra_modules="$extra_modules $config_val"
- ;;
- ext[234] | xfs | btrfs | minix | nfs | virtiofs)
- check_user_configured_target "$config_val" "$config_opt"
- add_mount "$config_val" "$config_opt"
- ;;
- raw)
- # checking raw disk writable
- dd if="$config_val" count=1 of=/dev/null > /dev/null 2>&1 || {
- perror_exit "Bad raw disk $config_val"
- }
- _praw=$(persistent_policy="by-id" kdump_get_persistent_dev "$config_val")
- if [[ -z $_praw ]]; then
- exit 1
- fi
- add_dracut_arg "--device" "$_praw"
- check_size raw "$config_val"
- ;;
- ssh)
- if strstr "$config_val" "@"; then
- mkdir_save_path_ssh "$config_val"
- check_size ssh "$config_val"
- add_dracut_sshkey "$SSH_KEY_LOCATION"
- else
- perror_exit "Bad ssh dump target $config_val"
- fi
- ;;
- core_collector)
- verify_core_collector "$config_val"
- ;;
- dracut_args)
-
- # When users specify nfs dumping via dracut_args, kexec-tools won't
- # mount nfs fs beforehand thus nfsv4-related drivers won't be installed
- # because we call dracut with --hostonly-mode strict. So manually install
- # nfsv4-related drivers.
- if [[ $(get_dracut_args_fstype "$config_val") == nfs* ]]; then
- add_dracut_arg "--add-drivers" nfs_layout_nfsv41_files
- fi
-
- while read -r dracut_arg; do
- add_dracut_arg "$dracut_arg"
- done <<< "$(echo "$config_val" | xargs -n 1 echo)"
- ;;
- *) ;;
-
- esac
-done <<< "$(kdump_read_conf)"
-
-handle_default_dump_target
-
-if ! have_compression_in_dracut_args; then
- if is_squash_available && dracut_have_option "--squash-compressor"; then
- add_dracut_arg "--squash-compressor" "zstd"
- elif has_command zstd; then
- add_dracut_arg "--compress" "zstd"
- fi
-fi
-
-if [[ -n $extra_modules ]]; then
- add_dracut_arg "--add-drivers" "$extra_modules"
-fi
-
-# TODO: The below check is not needed anymore with the introduction of
-# 'zz-fadumpinit' module, that isolates fadump's capture kernel initrd,
-# but still sysroot.mount unit gets generated based on 'root=' kernel
-# parameter available in fadump case. So, find a way to fix that first
-# before removing this check.
-if ! is_fadump_capable; then
- # The 2nd rootfs mount stays behind the normal dump target mount,
- # so it doesn't affect the logic of check_dump_fs_modified().
- is_dump_to_rootfs && add_mount "$(to_dev_name "$(get_root_fs_device)")"
-
- add_dracut_arg "--no-hostonly-default-device"
-
- if fips-mode-setup --is-enabled 2> /dev/null; then
- add_dracut_arg --add-device "$(findmnt -n -o SOURCE --target /boot)"
- fi
-fi
-
-dracut "${dracut_args[@]}" "$@"
diff --git a/mkdumprd.8 b/mkdumprd.8
deleted file mode 100644
index 2ac3d5a..0000000
--- a/mkdumprd.8
+++ /dev/null
@@ -1,39 +0,0 @@
-.TH MKDUMRD 8 "Fri Feb 9 2007"
-.SH NAME
-mkdumprd \- creates initial ramdisk images for kdump crash recovery
-.SH SYNOPSIS
-\fBmkdumprd\fR [OPTION]
-
-.SH DESCRIPTION
-\fBmkdumprd\fR creates an initial ram file system for use in conjunction with
-the booting of a kernel within the kdump framework for crash recovery.
-\fBmkdumprds\fR purpose is to create an initial ram filesystem capable of copying
-the crashed systems vmcore image to a location specified in \fI/etc/kdump.conf
-
-\fBmkdumprd\fR interrogates the running system to understand what modules need to
-be loaded in the initramfs (based on configuration retrieved from
-\fI/etc/kdump.conf)\fR
-
-\fBmkdumprd\fR add a new \fBdracut\fR module 99kdumpbase and use \fBdracut\fR
-utility to generate the initramfs. When generating a kdump initramfs, \fBmkdumprd\fR
-will determine how much disk space is available, if the dump target's available
-space is not greater than the total system memory, \fBmkdumprd\fR will print a
-warning to remind that there might not be enough space to save a vmcore. The
-warning covers extreme scenarios such as the slab explodes with non-zero data or
-a full vmcore, etc. Therefore, need to prevent users from having minimum disk
-space for crash dump.
-
-\fBmkdumprd\fR was not intended for casual use outside of the service
-initialization script for the kdump utility, and should not be run manually. If
-you require a custom kdump initramfs image, it is suggested that you use the
-kdump service infrastructure to create one, and then manually unpack, modify and
-repack the image.
-
-
-.SH OPTIONS
-.TP
-All options here are passed to dracut directly, please refer \fBdracut\fR docs
-for the info.
-
-.SH "SEE ALSO"
-.BR dracut (8)
diff --git a/mkfadumprd b/mkfadumprd
deleted file mode 100755
index dd6840f..0000000
--- a/mkfadumprd
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash --norc
-# Generate an initramfs image that isolates dump capture capability within
-# the default initramfs using zz-fadumpinit dracut module.
-
-if [[ -f /etc/sysconfig/kdump ]]; then
- . /etc/sysconfig/kdump
-fi
-
-[[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
-. $dracutbasedir/dracut-functions.sh
-. /lib/kdump/kdump-lib.sh
-. /lib/kdump/kdump-logger.sh
-
-#initiate the kdump logger
-if ! dlog_init; then
- echo "mkfadumprd: failed to initiate the kdump logger."
- exit 1
-fi
-
-MKFADUMPRD_TMPDIR="$(mktemp -d -t mkfadumprd.XXXXXX)"
-[ -d "$MKFADUMPRD_TMPDIR" ] || perror_exit "mkfadumprd: mktemp -d -t mkfadumprd.XXXXXX failed."
-trap '
- ret=$?;
- [[ -d $MKFADUMPRD_TMPDIR ]] && rm --one-file-system -rf -- "$MKFADUMPRD_TMPDIR";
- exit $ret;
- ' EXIT
-
-# clean up after ourselves no matter how we die.
-trap 'exit 1;' SIGINT
-
-MKDUMPRD="/sbin/mkdumprd -f"
-# Default boot initramfs to be rebuilt
-REBUILD_INITRD="$1" && shift
-TARGET_INITRD="$1" && shift
-FADUMP_INITRD="$MKFADUMPRD_TMPDIR/fadump.img"
-
-### First build an initramfs with dump capture capability
-# this file tells the initrd is fadump enabled
-touch "$MKFADUMPRD_TMPDIR/fadump.initramfs"
-ddebug "rebuild fadump initrd: $FADUMP_INITRD"
-# Don't use squash for capture image or default image as it negatively impacts
-# compression ratio and increases the size of the initramfs image.
-# Don't compress the capture image as uncompressed image is needed immediately.
-# Also, early microcode would not be needed here.
-if ! $MKDUMPRD "$FADUMP_INITRD" -i "$MKFADUMPRD_TMPDIR/fadump.initramfs" /etc/fadump.initramfs --omit squash --no-compress --no-early-microcode; then
- perror_exit "mkfadumprd: failed to build image with dump capture support"
-fi
-
-### Unpack the initramfs having dump capture capability retaining previous file modification time.
-# This helps in saving space by hardlinking identical files.
-mkdir -p "$MKFADUMPRD_TMPDIR/fadumproot"
-if ! cpio -id --preserve-modification-time --quiet -D "$MKFADUMPRD_TMPDIR/fadumproot" < "$FADUMP_INITRD"; then
- derror "mkfadumprd: failed to unpack '$MKFADUMPRD_TMPDIR'"
- exit 1
-fi
-
-### Pack it into the normal boot initramfs with zz-fadumpinit module
-_dracut_isolate_args=(
- --rebuild "$REBUILD_INITRD" --add zz-fadumpinit
- -i "$MKFADUMPRD_TMPDIR/fadumproot" /fadumproot
- -i "$MKFADUMPRD_TMPDIR/fadumproot/usr/lib/dracut/hostonly-kernel-modules.txt"
- /usr/lib/dracut/fadump-kernel-modules.txt
-)
-
-# Use zstd compression method, if available
-if ! have_compression_in_dracut_args; then
- if has_command zstd; then
- _dracut_isolate_args+=(--compress zstd)
- fi
-fi
-
-if ! dracut --force --quiet "${_dracut_isolate_args[@]}" "$@" "$TARGET_INITRD"; then
- perror_exit "mkfadumprd: failed to setup '$TARGET_INITRD' with dump capture capability"
-fi
diff --git a/sources b/sources
index 61c3db7..5fc0aed 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,4 @@
SHA512 (kexec-tools-2.0.28.tar.xz) = 889a7bf1d26bb309e4ff7ce1c8dbcf48c01e47221ea3acf1c4ef2a98a652c496e31bddcdb627d3adebd85f7541d1fb9122c60e741e10b3726e31a9733cadc753
SHA512 (eppic-e8844d3.tar.gz) = d86b9f90c57e694107272d8f71b87f66a30743b9530480fb6f665026bbada4c6b0205a83e40b5383663a945681cfbfcf1ee79469fc219ddf679473c4b2290763
SHA512 (makedumpfile-1.7.4.tar.gz) = 6c3455b711bd4e120173ee07fcc5ff708ae6d34eaee0f4c135eca7ee0e0475b4d391429c23cf68e848b156ee3edeab956e693a390d67ccc634c43224c7129a96
+SHA512 (kdump-utils-1.0.42.tar.gz) = 2d8717a010bfbffd4410ef57ade1402316cda07faa1063631b8665ac273fac618bff0afd9bdc02292c859d956790e06a51d81b141db158957ef97eb8408111c4
diff --git a/supported-kdump-targets.txt b/supported-kdump-targets.txt
deleted file mode 100644
index 936a42b..0000000
--- a/supported-kdump-targets.txt
+++ /dev/null
@@ -1,119 +0,0 @@
-Supported Kdump Targets
-
-This document try to list all supported kdump targets, and those supported
-or unknown/tech-preview targets, this can help users to decide whether a dump
-solution is available.
-
-Dump Target support status
-==========================
-This section tries to come up with some kind of guidelines in terms of
-what dump targets are supported/not supported. Whatever is listed here
-is not binding in any manner. It is just sharing of current understanding
-and if something is not right, this section needs to be edited.
-
-Following are 3 lists. First one contains supported targets. These are
-generic configurations which should work and some configuration most
-likely has worked in testing. Second list is known unsupported targets.
-These targets we know either don't work or we don't support. And third
-list is unknown/tech-preview. We either don't yet know the status of kdump
-on these targets or these are under tech-preview.
-
-Note, these lists are not set in stone and can be changed at any point of
-time. Also these lists might not be complete. We will add/remove items to
-it as we get more testing information. Also, there are many corner cases
-which can't possibly be listed. For example in general we might be
-supporting software iscsi but there might be some configurations of it
-which don't work.
-
-So if any target is listed in supported section, it does not mean it works
-in all possible configurations. It just means that in common configurations
-it should work but there can be issues with particular configurations which
-are not supported. As we come to know of particular issues, we will keep on
-updating lists accordingly.
-
-
-Supported Dump targets
-----------------------
-storage:
- LVM volume
- Thin provisioning volume
- FC disks (qla2xxx, lpfc, bnx2fc, bfa)
- software initiator based iSCSI
- software RAID (mdraid)
- hardware RAID (smartpqi, hpsa, megaraid, mpt3sas, aacraid, mpi3mr)
- SCSI/SATA disks
- iSCSI HBA (all offload)
- hardware FCoE (qla2xxx, lpfc)
- software FCoE (bnx2fc) (Extra configuration required,
- please read "Note on FCoE" section below)
- NVMe-FC (qla2xxx, lpfc)
-
-network:
- Hardware using kernel modules: (igb, ixgbe, ice, i40e, e1000e, igc,
- tg3, bnx2x, bnxt_en, qede, cxgb4, be2net, enic, sfc, mlx4_en,
- mlx5_core, r8169, atlantic, nfp, ionic; nicvf (aarch64 only))
- protocol: ipv4
- bonding
- vlan
- bridge
- vlan tagged bonding
- bridge over bond/vlan
-
-filesystem:
- ext[234]
- xfs
- nfs
- virtiofs
-
-firmware:
- BIOS
- UEFI
-
-hypervisor:
- kvm
- xen (selected configurations only)
- VMWare ESXi 4.x 5.x would not be tested/supported any more.
- only support ESXi 6.6, 6.7, 7.0
- Hyper-V 2012 R2 (RHEL Gen1 UP Guest only), later version will
- also be tested/supported
-
-Unsupported Dump targets
-------------------------
-storage:
- BIOS RAID
- Software iSCSI with iBFT (bnx2i, cxgb3i, cxgb4i)
- Software iSCSI with hybrid (be2iscsi)
- FCoE
- legacy IDE
- glusterfs
- gfs2/clvm/halvm
-
-network:
- hardware using kernel modules: (sfc SRIOV, cxgb4vf, pch_gbe)
- protocol: ipv6
- wireless
- Infiniband (IB)
- vlan over bridge/team
-
-filesystem:
- btrfs
-
-Unknown/tech-preview
---------------------
-storage:
- PCI Express based SSDs
-
-hypervisor:
- Hyper-V 2008
- Hyper-V 2012
-
-
-Note on FCoE
-=====================
-If you are trying to dump to a software FCoE target, you may encounter OOM
-issue, because some software FCoE requires more memory to work. In such case,
-you may need to increase the kdump reserved memory size in "crashkernel="
-kernel parameter.
-
-For hardware FCoE, kdump should work naturally as firmware will do the
-initialization job. The capture kernel and kdump tools will run just fine.
diff --git a/zanata-notes.txt b/zanata-notes.txt
deleted file mode 100644
index 2358c7a..0000000
--- a/zanata-notes.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-Zanata is a web-based system for managing localisation projects.
-For kexec-tools firstboot module, I created a zanata project with name of
-"kexec-tools": https://translate.zanata.org/zanata/project/view/kexec-tools
-
-There's several clients available for zanata translation management, such as
-python client and Maven client. It's suggested to use maven client for latest
-zanata issues
-
-Firstly you need install mvn rpms, just do below for fedora 16 and beyond:
-yum install maven
-
-create zanata.ini in your home dir:
->~/.config/zanata.ini
-There should be something need to change like below:
-translate_zanata_org.url=https://translate.zanata.org/zanata/
-translate_zanata_org.username=
-translate_zanata_org.key=
-
-Change username to your zanata username
-Change the key to the "API key" of zanata which can be generate from
-zanata web page.
- Open user profile page of zanata.org, click "Generate API Key" to create it.
-
-zanata is a plugin of maven, to activate it, you need do below configurations:
-1. cd kexec-tools/po, (assume kexec-tools is the git repo)
-2. add a pom.xml like below: (note: version 2.0.0 is better than 1.7.5
-for performance improvement)
-<project>
-...
- <build>
- <plugins>
- <plugin>
- <groupId>org.zanata</groupId>
- <artifactId>zanata-maven-plugin</artifactId>
- <version>1.7.5</version>
- </plugin>
- </plugins>
- </build>
-...
-</project>
-3. add zanata.xml for your project with content like below:
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<config xmlns="http://zanata.org/namespace/config/">
- <url>https://translate.zanata.org/zanata/</url>
- <project>kexec-tools</project>
- <project-version>F18</project-version>
- <project-type>gettext</project-type>
-
- <locales>
- <locale>ar</locale>
-...
-</config>
-
-You can get mostly-complete zanata.xml from the project version page on zanata
-Things need to be modified is:
-a) project-type, please use gettext
-b) for locales which are diffrent between local name and zanata server name,
- for example for kexec-tools we have bn_IN but zanata server accept bn-IN,
- so we need to add below line:
- <locale map-from="bn_IN">bn-IN</locale>
-
-The first running of "mvn zanata:help" will download and activate the new
-version of zanata plugin for you.
-
-I use below command to upload both pot file and translated po files:
-mvn zanata:push -Dzanata.pushType=both
-If you only need to upload po files, you can use:
-mvn zanata:push -Dzanata.pushType=trans
-
-You can use mvn zanata:help to lookup the detail help content of param names
-
-The other thing to be careful is specifying the correct source and
-translation directories.
-They are relative path. You can also put the pom.xml and zanata.xml under toplevel directory and run:
-mvn zanata:push -Dzanata.pushType=both -Dzanata.srcDir=po -Dzanata.transDir=po
-
---
-[1] https://github.com/zanata/zanata/wiki/Zanata-Maven-Integration
-[2] https://github.com/zanata/zanata/wiki/client-configuration
commit b3620b0dbc3e0fb9a92ab5faf34ac3b4e7bb7bd9
Author: Coiby Xu <coxu(a)redhat.com>
Date: Tue Apr 9 09:25:48 2024 +0800
makedumpfile: remove explicit-lib-dependency zlib
Fix the following error found by rpmlint,
makedumpfile.x86_64: E: explicit-lib-dependency zlib
You must let rpm find the library dependencies by itself. Do not put unneeded
explicit Requires: tags.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 32fddaf..254d88a 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -71,7 +71,6 @@ License: GPL-2.0-only
URL: https://github.com/makedumpfile/makedumpfile
Conflicts: kexec-tools < 2.0.28-5
-Requires(pre): zlib
BuildRequires: make
BuildRequires: gcc
BuildRequires: zlib-devel
commit 2ed88633ade0f1e5523d8097d96df3fde1287ea7
Author: Coiby Xu <coxu(a)redhat.com>
Date: Tue Apr 9 09:04:11 2024 +0800
kexec-tools: use make_install
use consistent build flags %make_install to have the benefits like
enabling parallel building automatically.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index cf88e5b..32fddaf 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -159,7 +159,7 @@ autoreconf
%endif
--sbindir=/usr/sbin
rm -f kexec-tools.spec.in
-make
+%make_build
# makedumpfile
make -C eppic-%{eppic_ver}/libeppic
commit a5c17afe7e871f7a2593d04b97e8e77fb434642c
Author: Coiby Xu <coxu(a)redhat.com>
Date: Fri Jan 12 20:00:53 2024 +0800
Fix potential-bashisms in monitor_dd_progress
As suggested by Carl [1],
> /usr/lib/dracut/modules.d/99kdumpbase/monitor_dd_progress has some
> inconsistencies with other scripts in that directory. It is missing the
> .sh extension and is not executable. The latter is resulting in an
> rpmlint error.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=2239566#c2
Suggested-by: Carl George <carl(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/dracut-kdump.sh b/dracut-kdump.sh
index 1fc2231..7b3ad7a 100755
--- a/dracut-kdump.sh
+++ b/dracut-kdump.sh
@@ -377,7 +377,7 @@ dump_raw()
if ! echo "$CORE_COLLECTOR" | grep -q makedumpfile; then
_src_size=$(stat --format %s /proc/vmcore)
_src_size_mb=$((_src_size / 1048576))
- /kdumpscripts/monitor_dd_progress $_src_size_mb &
+ /kdumpscripts/monitor_dd_progress.sh $_src_size_mb &
fi
dinfo "saving vmcore"
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index daa6b26..7e1cb9f 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -1020,8 +1020,7 @@ install() {
kdump_install_random_seed
fi
dracut_install -o /etc/adjtime /etc/localtime
- inst "$moddir/monitor_dd_progress" "/kdumpscripts/monitor_dd_progress"
- chmod +x "${initdir}/kdumpscripts/monitor_dd_progress"
+ inst "$moddir/monitor_dd_progress.sh" "/kdumpscripts/monitor_dd_progress.sh"
inst "/bin/dd" "/bin/dd"
inst "/bin/tail" "/bin/tail"
inst "/bin/date" "/bin/date"
diff --git a/dracut-monitor_dd_progress b/dracut-monitor_dd_progress.sh
similarity index 100%
rename from dracut-monitor_dd_progress
rename to dracut-monitor_dd_progress.sh
commit fe372afddde500249cd02fc3f152a164cfed321f
Author: Coiby Xu <coxu(a)redhat.com>
Date: Fri Mar 1 17:37:24 2024 +0800
Upstream kdump-utils
This patch upstreams the to-be-split-out kdump-utils to
https://github.com/rhkdump/kdump-utils. And it also simplify the .spec
file by putting the installation logic into a Makefile.
Cc: Philipp Rudo <prudo(a)redhat.com>
Cc: Carl George <carl(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e1a511c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,83 @@
+prefix ?= /usr
+libdir ?= ${prefix}/lib
+datadir ?= ${prefix}/share
+pkglibdir ?= ${libdir}/kdump
+sysconfdir ?= /etc
+bindir ?= ${prefix}/bin
+sbindir ?= ${prefix}/sbin
+mandir ?= ${prefix}/share/man
+localstatedir ?= /var
+sharedstatedir ?= /var/lib
+udevrulesdir ?= ${libdir}/udev/rules.d
+systemdsystemunitdir ?= ${libdir}/systemd/system/
+ARCH ?= $(shell uname -m)
+dracutmoddir = $(DESTDIR)${libdir}/dracut/modules.d
+kdumpbasemoddir = $(dracutmoddir)/99kdumpbase
+
+dracut-modules:
+ mkdir -p $(dracutmoddir)
+ mkdir -p -m755 $(kdumpbasemoddir)
+
+ install -m 755 dracut-kdump.sh $(kdumpbasemoddir)/kdump.sh
+ install -m 755 dracut-module-setup.sh $(kdumpbasemoddir)/module-setup.sh
+ install -m 755 dracut-monitor_dd_progress.sh $(kdumpbasemoddir)/monitor_dd_progress.sh
+ install -m 644 dracut-kdump-emergency.service $(kdumpbasemoddir)/kdump-emergency.service
+ install -m 644 dracut-kdump-capture.service $(kdumpbasemoddir)/kdump-capture.service
+ install -m 644 dracut-kdump-emergency.target $(kdumpbasemoddir)/kdump-emergency.target
+
+ mkdir -p -m755 $(dracutmoddir)/99earlykdump
+ install -m 755 dracut-early-kdump.sh $(dracutmoddir)/99earlykdump/kdump.sh
+ install -m 755 dracut-early-kdump-module-setup.sh $(dracutmoddir)/99earlykdump/kdump-module-setup.sh
+
+ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
+ mkdir -p -m755 $(dracutmoddir)/99zz-fadumpinit
+ install -m 755 dracut-fadump-init-fadump.sh $(dracutmoddir)/99zz-fadumpinit/init-fadump.sh
+ install -m 755 dracut-fadump-module-setup.sh $(dracutmoddir)/99zz-fadumpinit/module-setup.sh
+endif
+
+kdump-conf: gen-kdump-conf.sh
+ ./gen-kdump-conf.sh $(ARCH) > kdump.conf
+
+kdump-sysconfig: gen-kdump-sysconfig.sh
+ ./gen-kdump-sysconfig.sh $(ARCH) > kdump.sysconfig
+
+manpages:
+ install -D -m 644 mkdumprd.8 kdumpctl.8 -t $(DESTDIR)$(mandir)/man8
+ install -D -m 644 kdump.conf.5 $(DESTDIR)$(mandir)/man5/kdump.conf.5
+
+install: dracut-modules kdump-conf kdump-sysconfig manpages
+ mkdir -p $(DESTDIR)$(pkglibdir)
+ mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/pre.d
+ mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/post.d
+ mkdir -p -m755 $(DESTDIR)$(localstatedir)/crash
+ mkdir -p -m755 $(DESTDIR)$(udevrulesdir)
+ mkdir -p -m755 $(DESTDIR)$(sharedstatedir)/kdump
+ mkdir -p -m755 $(DESTDIR)$(libdir)/kernel/install.d/
+
+ install -D -m 755 kdumpctl $(DESTDIR)$(bindir)/kdumpctl
+ install -D -m 755 mkdumprd $(DESTDIR)$(sbindir)/mkdumprd
+ install -D -m 644 kdump.conf $(DESTDIR)$(sysconfdir)
+ install -D -m 644 kdump.sysconfig $(DESTDIR)$(sysconfdir)/sysconfig/kdump
+ install -D -m 755 kdump-lib.sh kdump-lib-initramfs.sh kdump-logger.sh -t $(DESTDIR)$(pkglibdir)
+
+ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
+ install -m 755 mkfadumprd $(DESTDIR)$(sbindir)
+ install -m 755 kdump-migrate-action.sh kdump-restart.sh -t $(DESTDIR)$(pkglibdir)
+ install -m 755 60-fadump.install $(DESTDIR)$(libdir)/kernel/install.d/
+endif
+
+ifneq ($(ARCH),s390x)
+ install -m 755 kdump-udev-throttler $(DESTDIR)$(udevrulesdir)/../kdump-udev-throttler
+ # For s390x the ELF header is created in the kdump kernel and therefore kexec
+ # udev rules are not required
+ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
+ install -m 644 98-kexec.rules.ppc64 $(DESTDIR)$(udevrulesdir)/98-kexec.rules
+else
+ install -m 644 98-kexec.rules $(DESTDIR)$(udevrulesdir)/98-kexec.rules
+endif
+endif
+
+ install -D -m 644 kdump.service $(DESTDIR)$(systemdsystemunitdir)/kdump.service
+ install -m 755 -D kdump-dep-generator.sh $(DESTDIR)$(libdir)/systemd/system-generators/kdump-dep-generator.sh
+ install -m 755 60-kdump.install $(DESTDIR)$(libdir)/kernel/install.d/
+ install -m 755 92-crashkernel.install $(DESTDIR)$(libdir)/kernel/install.d/
diff --git a/kexec-tools.spec b/kexec-tools.spec
index f1d4ff9..cf88e5b 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -1,6 +1,7 @@
%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
%global mkdf_ver 1.7.4
+%global kdump_utils_ver 1.0.42
%global mkdf_shortver %(c=%{mkdf_ver}; echo ${c:0:7})
Name: kexec-tools
@@ -12,52 +13,9 @@ Summary: The kexec/kdump userspace component
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.xz
Recommends: kdump-utils
-Source1: kdumpctl
-Source3: gen-kdump-sysconfig.sh
-Source4: gen-kdump-conf.sh
-Source7: mkdumprd
+Source1: https://github.com/rhkdump/kdump-utils/archive/v%{kdump_utils_ver}/kdump-...
Source9: https://github.com/makedumpfile/makedumpfile/archive/%{mkdf_ver}/makedump...
-Source10: kexec-kdump-howto.txt
-Source11: fadump-howto.txt
-Source12: mkdumprd.8
-Source13: 98-kexec.rules
-Source14: 98-kexec.rules.ppc64
-Source15: kdump.conf.5
-Source16: kdump.service
Source19: https://github.com/lucchouina/eppic/archive/%{eppic_ver}/eppic-%{eppic_sh...
-Source20: kdump-lib.sh
-Source21: kdump-in-cluster-environment.txt
-Source22: kdump-dep-generator.sh
-Source23: kdump-lib-initramfs.sh
-Source25: kdumpctl.8
-Source26: live-image-kdump-howto.txt
-Source27: early-kdump-howto.txt
-Source28: kdump-udev-throttler
-Source30: 60-kdump.install
-Source31: kdump-logger.sh
-Source32: mkfadumprd
-Source33: 92-crashkernel.install
-Source34: crashkernel-howto.txt
-Source35: kdump-migrate-action.sh
-Source36: kdump-restart.sh
-Source37: 60-fadump.install
-Source38: supported-kdump-targets.txt
-
-#######################################
-# These are sources for mkdumpramfs
-# Which is currently in development
-#######################################
-Source100: dracut-kdump.sh
-Source101: dracut-module-setup.sh
-Source102: dracut-monitor_dd_progress
-Source104: dracut-kdump-emergency.service
-Source106: dracut-kdump-capture.service
-Source107: dracut-kdump-emergency.target
-Source108: dracut-early-kdump.sh
-Source109: dracut-early-kdump-module-setup.sh
-
-Source200: dracut-fadump-init-fadump.sh
-Source201: dracut-fadump-module-setup.sh
BuildRequires: automake
BuildRequires: autoconf
@@ -174,6 +132,8 @@ target.
%prep
%setup -q
+tar -z -x -v -f %{SOURCE1}
+
mkdir -p -m755 kcp
tar -z -x -v -f %{SOURCE9}
tar -z -x -v -f %{SOURCE19}
@@ -201,21 +161,6 @@ autoreconf
rm -f kexec-tools.spec.in
make
-# kdump-utils
-# setup the docs
-cp %{SOURCE10} .
-cp %{SOURCE11} .
-cp %{SOURCE21} .
-cp %{SOURCE26} .
-cp %{SOURCE27} .
-cp %{SOURCE34} .
-cp %{SOURCE38} .
-
-# Generate sysconfig file
-%{SOURCE3} %{_target_cpu} > kdump.sysconfig
-%{SOURCE4} %{_target_cpu} > kdump.conf
-
-
# makedumpfile
make -C eppic-%{eppic_ver}/libeppic
make -C makedumpfile-%{mkdf_ver} LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
@@ -227,60 +172,8 @@ make -C makedumpfile-%{mkdf_ver} LDFLAGS="$LDFLAGS -I../eppic-%{eppic_ver}/libep
rm -f %{buildroot}/%{_libdir}/kexec-tools/kexec_test
# kdump-utils
-mkdir -p -m755 %{buildroot}%{_sysconfdir}/kdump/pre.d
-mkdir -p -m755 %{buildroot}%{_sysconfdir}/kdump/post.d
-mkdir -p -m755 %{buildroot}%{_localstatedir}/crash
-mkdir -p -m755 %{buildroot}%{_udevrulesdir}
-mkdir -p -m755 %{buildroot}%{_sharedstatedir}/kdump
-
-install -D -m 755 %{SOURCE1} %{buildroot}%{_bindir}/kdumpctl
-install -D -m 755 %{SOURCE7} %{buildroot}%{_sbindir}/mkdumprd
-install -D -m 644 kdump.conf %{buildroot}%{_sysconfdir}/kdump.conf
-install -D -m 644 kdump.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/kdump
-install -D -m 644 %{SOURCE12} %{SOURCE25} -t %{buildroot}%{_mandir}/man8
-install -D -m 755 %{SOURCE20} %{SOURCE23} %{SOURCE31} -t %{buildroot}%{_prefix}/lib/kdump
-%ifarch ppc64 ppc64le
-install -m 755 %{SOURCE32} %{buildroot}%{_sbindir}/mkfadumprd
-install -m 755 %{SOURCE35} %{SOURCE36} -t %{buildroot}%{_prefix}/lib/kdump
-%endif
-%ifnarch s390x
-install -m 755 %{SOURCE28} %{buildroot}%{_udevrulesdir}/../kdump-udev-throttler
-%endif
-%ifnarch s390x ppc64 ppc64le
-# For s390x the ELF header is created in the kdump kernel and therefore kexec
-# udev rules are not required
-install -m 644 %{SOURCE13} %{buildroot}%{_udevrulesdir}/98-kexec.rules
-%endif
-%ifarch ppc64 ppc64le
-install -m 644 %{SOURCE14} %{buildroot}%{_udevrulesdir}/98-kexec.rules
-install -m 755 -D %{SOURCE37} %{buildroot}%{_prefix}/lib/kernel/install.d/60-fadump.install
-%endif
-install -D -m 644 %{SOURCE15} %{buildroot}%{_mandir}/man5/kdump.conf.5
-install -D -m 644 %{SOURCE16} %{buildroot}%{_unitdir}/kdump.service
-install -m 755 -D %{SOURCE22} %{buildroot}%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
-install -m 755 -D %{SOURCE30} %{buildroot}%{_prefix}/lib/kernel/install.d/60-kdump.install
-install -m 755 -D %{SOURCE33} %{buildroot}%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-
-%define dracutdir %{_prefix}/lib/dracut/modules.d
-
-# deal with dracut modules
-mkdir -p -m755 %{buildroot}/%{dracutdir}/99kdumpbase
-install -m 755 %{SOURCE100} %{buildroot}/%{dracutdir}/99kdumpbase/kdump.sh
-install -m 755 %{SOURCE101} %{buildroot}/%{dracutdir}/99kdumpbase/module-setup.sh
-install -m 755 %{SOURCE102} %{buildroot}/%{dracutdir}/99kdumpbase/monitor_dd_progress.sh
-install -m 644 %{SOURCE104} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-emergency.service
-install -m 644 %{SOURCE106} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-capture.service
-install -m 644 %{SOURCE107} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-emergency.target
-
-mkdir -p -m755 %{buildroot}/%{dracutdir}/99earlykdump
-install -m 755 %{SOURCE108} %{buildroot}/%{dracutdir}/99earlykdump/kdump.sh
-install -m 755 %{SOURCE109} %{buildroot}/%{dracutdir}/99earlykdump/kdump-module-setup.sh
-
-%ifarch ppc64 ppc64le
-mkdir -p -m755 %{buildroot}/%{dracutdir}/99zz-fadumpinit
-install -m 755 %{SOURCE200} %{buildroot}/%{dracutdir}/99zz-fadumpinit/init-fadump.sh
-install -m 755 %{SOURCE201} %{buildroot}/%{dracutdir}/99zz-fadumpinit/module-setup.sh
-%endif
+%define kdump_utils_dir kdump-utils-%{kdump_utils_ver}
+make DESTDIR=%{buildroot} -C %kdump_utils_dir install
# makedumpfile
@@ -366,7 +259,7 @@ fi
%{_udevrulesdir}
%{_udevrulesdir}/../kdump-udev-throttler
%endif
-%{dracutdir}/*
+%{_prefix}/lib/dracut/modules.d/*
%dir %{_localstatedir}/crash
%dir %{_sysconfdir}/kdump
%dir %{_sysconfdir}/kdump/pre.d
@@ -379,14 +272,14 @@ fi
%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
%{_prefix}/lib/kernel/install.d/60-kdump.install
%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-%license COPYING
-%doc kexec-kdump-howto.txt
-%doc early-kdump-howto.txt
-%doc fadump-howto.txt
-%doc kdump-in-cluster-environment.txt
-%doc live-image-kdump-howto.txt
-%doc crashkernel-howto.txt
-%doc supported-kdump-targets.txt
+%license %kdump_utils_dir/COPYING
+%doc %kdump_utils_dir/kexec-kdump-howto.txt
+%doc %kdump_utils_dir/early-kdump-howto.txt
+%doc %kdump_utils_dir/fadump-howto.txt
+%doc %kdump_utils_dir/kdump-in-cluster-environment.txt
+%doc %kdump_utils_dir/live-image-kdump-howto.txt
+%doc %kdump_utils_dir/crashkernel-howto.txt
+%doc %kdump_utils_dir/supported-kdump-targets.txt
%files -n makedumpfile
@@ -400,7 +293,7 @@ fi
%changelog
-* Tue Mar 19 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-8
+* Tue Apr 09 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-8
- Add a kdump-utils subpackage
* Sun Apr 07 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-7
commit 3fa5df9a684f63e9aa5b42a4c9de538d3be457ed
Author: Coiby Xu <coxu(a)redhat.com>
Date: Mon Apr 8 13:17:23 2024 +0800
Add URL for kexec-tools and kump-utils
Suggested-by: Dave Young <dyoung(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index ce3a97b..f1d4ff9 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -6,6 +6,7 @@
Name: kexec-tools
Version: 2.0.28
Release: 8%{?dist}
+URL: https://kernel.org/pub/linux/utils/kernel/kexec
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -138,6 +139,7 @@ dumps to reduce its file size. It is typically used with the kdump mechanism.
%package -n kdump-utils
Version: 1.0.42
License: GPL-2.0-only AND LGPL-2.1-or-later
+URL: https://github.com/rhkdump/kdump-utils
Summary: Kernel crash dump collection utilities
%ifarch ppc64 ppc64le
commit f7bd239656269ea777454fe6c541aa0decaa4545
Author: Coiby Xu <coxu(a)redhat.com>
Date: Tue Apr 9 07:26:13 2024 +0800
makedumpfile: re-use source Makefile's install logic
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index a5d8bba..ce3a97b 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -281,14 +281,12 @@ install -m 755 %{SOURCE201} %{buildroot}/%{dracutdir}/99zz-fadumpinit/module-set
%endif
# makedumpfile
-install -m 755 makedumpfile-%{mkdf_ver}/makedumpfile $RPM_BUILD_ROOT/usr/sbin/makedumpfile
-install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.8 $RPM_BUILD_ROOT/%{_mandir}/man8/makedumpfile.8
-install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf.5 $RPM_BUILD_ROOT/%{_mandir}/man5/makedumpfile.conf.5
-install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf $RPM_BUILD_ROOT/%{_sysconfdir}/makedumpfile.conf.sample
-install -m 755 -D makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so $RPM_BUILD_ROOT/%{_libdir}/eppic_makedumpfile.so
-mkdir -p $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
-install -m 644 makedumpfile-%{mkdf_ver}/eppic_scripts/* $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
+make DESTDIR=%{buildroot} -C makedumpfile-%{mkdf_ver} install
+install -m 644 -D makedumpfile-%{mkdf_ver}/makedumpfile.conf %{buildroot}/%{_sysconfdir}/makedumpfile.conf.sample
+rm %{buildroot}/%{_sbindir}/makedumpfile-R.pl
+
+install -m 755 -D makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so %{buildroot}/%{_libdir}/eppic_makedumpfile.so
%post -n kdump-utils
# don't try to systemctl preset the kdump service for old kexec-tools
@@ -392,8 +390,8 @@ fi
%files -n makedumpfile
%license makedumpfile-%{mkdf_ver}/COPYING
%{_sbindir}/makedumpfile
-%{_mandir}/man5/makedumpfile.conf.5.gz
-%{_mandir}/man8/makedumpfile.8.gz
+%{_mandir}/man5/makedumpfile.conf.5.*
+%{_mandir}/man8/makedumpfile.8.*
%{_sysconfdir}/makedumpfile.conf.sample
%{_libdir}/eppic_makedumpfile.so
%{_datadir}/makedumpfile/
commit a442b4e51222114cbed354f298fce8f37c88cc75
Author: Coiby Xu <coxu(a)redhat.com>
Date: Tue Mar 26 19:08:00 2024 +0800
Remove unused scriptlets
Suggested-by: Philipp Rudo <prudo(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 2dfe7fb..a5d8bba 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -320,27 +320,6 @@ servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/de
%endif
%systemd_preun kdump.service
-%triggerin -n kdump-utils -- kernel-kdump
-touch %{_sysconfdir}/kdump.conf
-
-
-%triggerpostun -n kdump-utils -- kernel kernel-xen kernel-debug kernel-PAE kernel-kdump
-# List out the initrds here, strip out version nubmers
-# and search for corresponding kernel installs, if a kernel
-# is not found, remove the corresponding kdump initrd
-
-
-IMGDIR=/boot
-for i in `ls $IMGDIR/initramfs*kdump.img 2>/dev/null`
-do
- KDVER=`echo $i | sed -e's/^.*initramfs-//' -e's/kdump.*$//'`
- if [ ! -e $IMGDIR/vmlinuz-$KDVER ]
- then
- # We have found an initrd with no corresponding kernel
- # so we should be able to remove it
- rm -f $i
- fi
-done
%posttrans -n kdump-utils
# don't try to systemctl preset the kdump service for old kexec-tools
commit c7683d8aabdbbbaaefdeee4a3e6c35482dca48c7
Author: Coiby Xu <coxu(a)redhat.com>
Date: Thu Feb 29 11:18:00 2024 +0800
Don't disrupt current kdump users
Majority of current kexec-tools users have installed kexec-tools out of
the need for the kdump feature. To ensure a smooth transition, add
kdump-utils as weak dependency. If users only want to use kexec-tools,
they can uninstall kdump-utils.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Suggested-by: Carl George <carl(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index c8f89f0..2dfe7fb 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -10,6 +10,7 @@ License: GPL-2.0-only
Summary: The kexec/kdump userspace component
Source0: http://kernel.org/pub/linux/utils/kernel/kexec/%{name}-%{version}.tar.xz
+Recommends: kdump-utils
Source1: kdumpctl
Source3: gen-kdump-sysconfig.sh
Source4: gen-kdump-conf.sh
commit 5fe098fec8eb19a942a608f19324601066c0467d
Author: Coiby Xu <coxu(a)redhat.com>
Date: Thu Feb 29 11:05:14 2024 +0800
Don't systemctl preset kdump when updating kexec-tools to kdump-utils
When an old version of kexec-tools gets replaced by kdump-utils,
"%systemd_post" will be executed in the post scriptlet which has the
purpose to "systemctl preset kdump" for freshly installed kexec-tools.
But in the case of kdump-utils replacing kexec-tools, it is not needed
so skip this case.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Suggested-by: Zbigniew Jędrzejewski-Szmek <zbyszek(a)in.waw.pl>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index b18df5c..c8f89f0 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -290,8 +290,16 @@ install -m 644 makedumpfile-%{mkdf_ver}/eppic_scripts/* $RPM_BUILD_ROOT/usr/shar
%post -n kdump-utils
-# Initial installation
-%systemd_post kdump.service
+# don't try to systemctl preset the kdump service for old kexec-tools
+#
+# when the old kexec-tools gets removed, this trigger will be excuted to
+# create a file. So later the posttrans scriptlet will know there is no need to
+# systemctl preset the kdump service.
+# This solution can be dropped in F41 when we assume no users will use old
+# version of kexec-tools.
+%define kexec_tools_no_preset %{_localstatedir}/lib/rpm-state/kexec-tools.no-preset
+%triggerun -- kexec-tools
+touch %{kexec_tools_no_preset}
touch /etc/kdump.conf
@@ -334,6 +342,14 @@ do
done
%posttrans -n kdump-utils
+# don't try to systemctl preset the kdump service for old kexec-tools
+if [[ -f %{kexec_tools_no_preset} ]]; then
+ # this if branch can be removed in F41 when we assume no users will use the old kexec-tools
+ rm %{kexec_tools_no_preset}
+else
+ # Initial installation
+ %systemd_post kdump.service
+fi
# Try to reset kernel crashkernel value to new default value or set up
# crasherkernel value for new install
#
commit 372b4c6c1597c3d9aaddda2d691260474973989e
Author: Coiby Xu <coxu(a)redhat.com>
Date: Thu Feb 29 10:23:51 2024 +0800
Add kdump-utils subpackage
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Dave Young <dyoung(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 2c7d88c..b18df5c 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -5,7 +5,7 @@
Name: kexec-tools
Version: 2.0.28
-Release: 7%{?dist}
+Release: 8%{?dist}
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -57,28 +57,10 @@ Source109: dracut-early-kdump-module-setup.sh
Source200: dracut-fadump-init-fadump.sh
Source201: dracut-fadump-module-setup.sh
-%ifarch ppc64 ppc64le
-Requires(post): servicelog
-Recommends: keyutils
-%endif
-Requires(pre): coreutils sed
-Requires: makedumpfile
-Requires: dracut >= 058
-Requires: dracut-network >= 058
-Requires: dracut-squash >= 058
-Requires: ethtool
-Requires: util-linux
-# Needed for UKI support
-Recommends: binutils
-Recommends: grubby
-Recommends: hostname
-BuildRequires: make
-BuildRequires: systemd-rpm-macros
-BuildRequires: automake autoconf libtool
-
-%ifnarch s390x
-Requires: systemd-udev%{?_isa}
-%endif
+BuildRequires: automake
+BuildRequires: autoconf
+BuildRequires: libtool
+BuildRequires: gcc
#START INSERT
@@ -152,6 +134,40 @@ makedumpfile is a tool to compress and filter out unneeded data from kernel
dumps to reduce its file size. It is typically used with the kdump mechanism.
+%package -n kdump-utils
+Version: 1.0.42
+License: GPL-2.0-only AND LGPL-2.1-or-later
+Summary: Kernel crash dump collection utilities
+
+%ifarch ppc64 ppc64le
+Requires(post): servicelog
+Recommends: keyutils
+%endif
+Requires(pre): coreutils
+Requires(pre): sed
+Requires: kexec-tools >= 2.0.28-8
+Requires: makedumpfile
+Requires: dracut >= 058
+Requires: dracut-network >= 058
+Requires: dracut-squash >= 058
+Requires: ethtool
+Requires: util-linux
+# Needed for UKI support
+Recommends: binutils
+Recommends: grubby
+Recommends: hostname
+BuildRequires: systemd-rpm-macros
+
+%ifnarch s390x
+Requires: systemd-udev%{?_isa}
+%endif
+%description -n kdump-utils
+kdump-utils is responsible for collecting the crash kernel dump. It builds and
+loads the kdump initramfs so when a kernel crashes, the system will boot the
+kdump kernel and initramfs to save the collected crash kernel dump to specified
+target.
+
+
%prep
%setup -q
@@ -180,6 +196,9 @@ autoreconf
%endif
--sbindir=/usr/sbin
rm -f kexec-tools.spec.in
+make
+
+# kdump-utils
# setup the docs
cp %{SOURCE10} .
cp %{SOURCE11} .
@@ -193,7 +212,6 @@ cp %{SOURCE38} .
%{SOURCE3} %{_target_cpu} > kdump.sysconfig
%{SOURCE4} %{_target_cpu} > kdump.conf
-make
# makedumpfile
make -C eppic-%{eppic_ver}/libeppic
@@ -202,93 +220,76 @@ make -C makedumpfile-%{mkdf_ver} LDFLAGS="$LDFLAGS -I../eppic-%{eppic_ver}/libep
%install
-mkdir -p -m755 $RPM_BUILD_ROOT/usr/sbin
-mkdir -p -m755 $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
-mkdir -p -m755 $RPM_BUILD_ROOT%{_sysconfdir}/kdump
-mkdir -p -m755 $RPM_BUILD_ROOT%{_sysconfdir}/kdump/pre.d
-mkdir -p -m755 $RPM_BUILD_ROOT%{_sysconfdir}/kdump/post.d
-mkdir -p -m755 $RPM_BUILD_ROOT%{_localstatedir}/crash
-mkdir -p -m755 $RPM_BUILD_ROOT%{_mandir}/man8/
-mkdir -p -m755 $RPM_BUILD_ROOT%{_mandir}/man5/
-mkdir -p -m755 $RPM_BUILD_ROOT%{_docdir}
-mkdir -p -m755 $RPM_BUILD_ROOT%{_datadir}/kdump
-mkdir -p -m755 $RPM_BUILD_ROOT%{_udevrulesdir}
-mkdir -p $RPM_BUILD_ROOT%{_unitdir}
-mkdir -p -m755 $RPM_BUILD_ROOT%{_bindir}
-mkdir -p -m755 $RPM_BUILD_ROOT%{_libdir}
-mkdir -p -m755 $RPM_BUILD_ROOT%{_prefix}/lib/kdump
-mkdir -p -m755 $RPM_BUILD_ROOT%{_sharedstatedir}/kdump
-install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_bindir}/kdumpctl
-
-install -m 755 build/sbin/kexec $RPM_BUILD_ROOT/usr/sbin/kexec
-install -m 755 build/sbin/vmcore-dmesg $RPM_BUILD_ROOT/usr/sbin/vmcore-dmesg
-install -m 644 build/man/man8/kexec.8 $RPM_BUILD_ROOT%{_mandir}/man8/
-install -m 644 build/man/man8/vmcore-dmesg.8 $RPM_BUILD_ROOT%{_mandir}/man8/
-
-install -m 755 %{SOURCE7} $RPM_BUILD_ROOT/usr/sbin/mkdumprd
-install -m 644 kdump.conf $RPM_BUILD_ROOT%{_sysconfdir}/kdump.conf
-install -m 644 kdump.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/kdump
-install -m 644 kexec/kexec.8 $RPM_BUILD_ROOT%{_mandir}/man8/kexec.8
-install -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_mandir}/man8/mkdumprd.8
-install -m 644 %{SOURCE25} $RPM_BUILD_ROOT%{_mandir}/man8/kdumpctl.8
-install -m 755 %{SOURCE20} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib.sh
-install -m 755 %{SOURCE23} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-lib-initramfs.sh
-install -m 755 %{SOURCE31} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-logger.sh
+%make_install
+rm -f %{buildroot}/%{_libdir}/kexec-tools/kexec_test
+
+# kdump-utils
+mkdir -p -m755 %{buildroot}%{_sysconfdir}/kdump/pre.d
+mkdir -p -m755 %{buildroot}%{_sysconfdir}/kdump/post.d
+mkdir -p -m755 %{buildroot}%{_localstatedir}/crash
+mkdir -p -m755 %{buildroot}%{_udevrulesdir}
+mkdir -p -m755 %{buildroot}%{_sharedstatedir}/kdump
+
+install -D -m 755 %{SOURCE1} %{buildroot}%{_bindir}/kdumpctl
+install -D -m 755 %{SOURCE7} %{buildroot}%{_sbindir}/mkdumprd
+install -D -m 644 kdump.conf %{buildroot}%{_sysconfdir}/kdump.conf
+install -D -m 644 kdump.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/kdump
+install -D -m 644 %{SOURCE12} %{SOURCE25} -t %{buildroot}%{_mandir}/man8
+install -D -m 755 %{SOURCE20} %{SOURCE23} %{SOURCE31} -t %{buildroot}%{_prefix}/lib/kdump
%ifarch ppc64 ppc64le
-install -m 755 %{SOURCE32} $RPM_BUILD_ROOT/usr/sbin/mkfadumprd
-install -m 755 %{SOURCE35} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-migrate-action.sh
-install -m 755 %{SOURCE36} $RPM_BUILD_ROOT%{_prefix}/lib/kdump/kdump-restart.sh
+install -m 755 %{SOURCE32} %{buildroot}%{_sbindir}/mkfadumprd
+install -m 755 %{SOURCE35} %{SOURCE36} -t %{buildroot}%{_prefix}/lib/kdump
%endif
%ifnarch s390x
-install -m 755 %{SOURCE28} $RPM_BUILD_ROOT%{_udevrulesdir}/../kdump-udev-throttler
+install -m 755 %{SOURCE28} %{buildroot}%{_udevrulesdir}/../kdump-udev-throttler
%endif
%ifnarch s390x ppc64 ppc64le
# For s390x the ELF header is created in the kdump kernel and therefore kexec
# udev rules are not required
-install -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{_udevrulesdir}/98-kexec.rules
+install -m 644 %{SOURCE13} %{buildroot}%{_udevrulesdir}/98-kexec.rules
%endif
%ifarch ppc64 ppc64le
-install -m 644 %{SOURCE14} $RPM_BUILD_ROOT%{_udevrulesdir}/98-kexec.rules
-install -m 755 -D %{SOURCE37} $RPM_BUILD_ROOT%{_prefix}/lib/kernel/install.d/60-fadump.install
+install -m 644 %{SOURCE14} %{buildroot}%{_udevrulesdir}/98-kexec.rules
+install -m 755 -D %{SOURCE37} %{buildroot}%{_prefix}/lib/kernel/install.d/60-fadump.install
+%endif
+install -D -m 644 %{SOURCE15} %{buildroot}%{_mandir}/man5/kdump.conf.5
+install -D -m 644 %{SOURCE16} %{buildroot}%{_unitdir}/kdump.service
+install -m 755 -D %{SOURCE22} %{buildroot}%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
+install -m 755 -D %{SOURCE30} %{buildroot}%{_prefix}/lib/kernel/install.d/60-kdump.install
+install -m 755 -D %{SOURCE33} %{buildroot}%{_prefix}/lib/kernel/install.d/92-crashkernel.install
+
+%define dracutdir %{_prefix}/lib/dracut/modules.d
+
+# deal with dracut modules
+mkdir -p -m755 %{buildroot}/%{dracutdir}/99kdumpbase
+install -m 755 %{SOURCE100} %{buildroot}/%{dracutdir}/99kdumpbase/kdump.sh
+install -m 755 %{SOURCE101} %{buildroot}/%{dracutdir}/99kdumpbase/module-setup.sh
+install -m 755 %{SOURCE102} %{buildroot}/%{dracutdir}/99kdumpbase/monitor_dd_progress.sh
+install -m 644 %{SOURCE104} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-emergency.service
+install -m 644 %{SOURCE106} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-capture.service
+install -m 644 %{SOURCE107} %{buildroot}/%{dracutdir}/99kdumpbase/kdump-emergency.target
+
+mkdir -p -m755 %{buildroot}/%{dracutdir}/99earlykdump
+install -m 755 %{SOURCE108} %{buildroot}/%{dracutdir}/99earlykdump/kdump.sh
+install -m 755 %{SOURCE109} %{buildroot}/%{dracutdir}/99earlykdump/kdump-module-setup.sh
+
+%ifarch ppc64 ppc64le
+mkdir -p -m755 %{buildroot}/%{dracutdir}/99zz-fadumpinit
+install -m 755 %{SOURCE200} %{buildroot}/%{dracutdir}/99zz-fadumpinit/init-fadump.sh
+install -m 755 %{SOURCE201} %{buildroot}/%{dracutdir}/99zz-fadumpinit/module-setup.sh
%endif
-install -m 644 %{SOURCE15} $RPM_BUILD_ROOT%{_mandir}/man5/kdump.conf.5
-install -m 644 %{SOURCE16} $RPM_BUILD_ROOT%{_unitdir}/kdump.service
-install -m 755 -D %{SOURCE22} $RPM_BUILD_ROOT%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
-install -m 755 -D %{SOURCE30} $RPM_BUILD_ROOT%{_prefix}/lib/kernel/install.d/60-kdump.install
-install -m 755 -D %{SOURCE33} $RPM_BUILD_ROOT%{_prefix}/lib/kernel/install.d/92-crashkernel.install
# makedumpfile
install -m 755 makedumpfile-%{mkdf_ver}/makedumpfile $RPM_BUILD_ROOT/usr/sbin/makedumpfile
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.8 $RPM_BUILD_ROOT/%{_mandir}/man8/makedumpfile.8
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf.5 $RPM_BUILD_ROOT/%{_mandir}/man5/makedumpfile.conf.5
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf $RPM_BUILD_ROOT/%{_sysconfdir}/makedumpfile.conf.sample
-install -m 755 makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so $RPM_BUILD_ROOT/%{_libdir}/eppic_makedumpfile.so
+install -m 755 -D makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so $RPM_BUILD_ROOT/%{_libdir}/eppic_makedumpfile.so
mkdir -p $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
install -m 644 makedumpfile-%{mkdf_ver}/eppic_scripts/* $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
-%define dracutdir %{_prefix}/lib/dracut/modules.d
-%define remove_prefix() %(echo -n %2|sed 's/.*%1-//g')
-
-# deal with dracut modules
-mkdir -p -m755 $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase
-install -m 755 %{SOURCE100} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE100}}
-install -m 755 %{SOURCE101} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE101}}
-install -m 644 %{SOURCE102} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE102}}
-install -m 644 %{SOURCE104} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE104}}
-install -m 644 %{SOURCE106} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE106}}
-install -m 644 %{SOURCE107} $RPM_BUILD_ROOT/%{dracutdir}/99kdumpbase/%{remove_prefix dracut %{SOURCE107}}
-
-mkdir -p -m755 $RPM_BUILD_ROOT/%{dracutdir}/99earlykdump
-install -m 755 %{SOURCE108} $RPM_BUILD_ROOT/%{dracutdir}/99earlykdump/%{remove_prefix dracut %{SOURCE108}}
-install -m 755 %{SOURCE109} $RPM_BUILD_ROOT/%{dracutdir}/99earlykdump/%{remove_prefix dracut-early-kdump %{SOURCE109}}
-
-%ifarch ppc64 ppc64le
-mkdir -p -m755 $RPM_BUILD_ROOT/%{dracutdir}/99zz-fadumpinit
-install -m 755 %{SOURCE200} $RPM_BUILD_ROOT/%{dracutdir}/99zz-fadumpinit/%{remove_prefix dracut-fadump %{SOURCE200}}
-install -m 755 %{SOURCE201} $RPM_BUILD_ROOT/%{dracutdir}/99zz-fadumpinit/%{remove_prefix dracut-fadump %{SOURCE201}}
-%endif
-%post
+%post -n kdump-utils
# Initial installation
%systemd_post kdump.service
@@ -301,20 +302,20 @@ servicelog_notify --add --command=/usr/lib/kdump/kdump-migrate-action.sh --match
:
-%postun
+%postun -n kdump-utils
%systemd_postun_with_restart kdump.service
-%preun
+%preun -n kdump-utils
%ifarch ppc64 ppc64le
servicelog_notify --remove --command=/usr/lib/kdump/kdump-migrate-action.sh >/dev/null
%endif
%systemd_preun kdump.service
-%triggerin -- kernel-kdump
+%triggerin -n kdump-utils -- kernel-kdump
touch %{_sysconfdir}/kdump.conf
-%triggerpostun -- kernel kernel-xen kernel-debug kernel-PAE kernel-kdump
+%triggerpostun -n kdump-utils -- kernel kernel-xen kernel-debug kernel-PAE kernel-kdump
# List out the initrds here, strip out version nubmers
# and search for corresponding kernel installs, if a kernel
# is not found, remove the corresponding kdump initrd
@@ -332,7 +333,7 @@ do
fi
done
-%posttrans
+%posttrans -n kdump-utils
# Try to reset kernel crashkernel value to new default value or set up
# crasherkernel value for new install
#
@@ -347,20 +348,26 @@ fi
%files
-/usr/sbin/kexec
+%{_sbindir}/kexec
+%{_mandir}/man8/kexec.8*
+%{_sbindir}/vmcore-dmesg
+%{_mandir}/man8/vmcore-dmesg.8*
+%doc News
+%license COPYING
+%doc TODO
+
+%files -n kdump-utils
%ifarch ppc64 ppc64le
-/usr/sbin/mkfadumprd
+%{_sbindir}/mkfadumprd
%{_prefix}/lib/kernel/install.d/60-fadump.install
%endif
-/usr/sbin/mkdumprd
-/usr/sbin/vmcore-dmesg
+%{_sbindir}/mkdumprd
%{_bindir}/*
-%{_datadir}/kdump
%{_prefix}/lib/kdump
%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
%ifnarch s390x
-%config %{_udevrulesdir}
+%{_udevrulesdir}
%{_udevrulesdir}/../kdump-udev-throttler
%endif
%{dracutdir}/*
@@ -369,18 +376,14 @@ fi
%dir %{_sysconfdir}/kdump/pre.d
%dir %{_sysconfdir}/kdump/post.d
%dir %{_sharedstatedir}/kdump
-%{_mandir}/man8/kdumpctl.8.gz
-%{_mandir}/man8/kexec.8.gz
-%{_mandir}/man8/mkdumprd.8.gz
-%{_mandir}/man8/vmcore-dmesg.8.gz
-%{_mandir}/man5/kdump.conf.5.gz
+%{_mandir}/man8/kdumpctl.8*
+%{_mandir}/man8/mkdumprd.8*
+%{_mandir}/man5/kdump.conf.5*
%{_unitdir}/kdump.service
%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
%{_prefix}/lib/kernel/install.d/60-kdump.install
%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-%doc News
%license COPYING
-%doc TODO
%doc kexec-kdump-howto.txt
%doc early-kdump-howto.txt
%doc fadump-howto.txt
@@ -401,6 +404,9 @@ fi
%changelog
+* Tue Mar 19 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-8
+- Add a kdump-utils subpackage
+
* Sun Apr 07 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-7
- Release 2.0.28-7
commit 20dc67f0ea5bd73289be99666cf0871c5ad7a6e6
Author: Coiby Xu <coxu(a)redhat.com>
Date: Sun Apr 7 14:49:11 2024 +0800
Release 2.0.26-7
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2269991
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kexec-tools-2.0.23-s390_handle_R_390_PLT32DBL_reloc_entries_in_machine_apply_elf_rel_.patch b/kexec-tools-2.0.23-s390_handle_R_390_PLT32DBL_reloc_entries_in_machine_apply_elf_rel_.patch
deleted file mode 100644
index 10bc5ef..0000000
--- a/kexec-tools-2.0.23-s390_handle_R_390_PLT32DBL_reloc_entries_in_machine_apply_elf_rel_.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-commit 186e7b0752d8fce1618fa37519671c834c46340e
-Author: Alexander Egorenkov <egorenar(a)linux.ibm.com>
-Date: Wed Dec 15 18:48:53 2021 +0100
-
- s390: handle R_390_PLT32DBL reloc entries in machine_apply_elf_rel()
-
- Starting with gcc 11.3, the C compiler will generate PLT-relative function
- calls even if they are local and do not require it. Later on during linking,
- the linker will replace all PLT-relative calls to local functions with
- PC-relative ones. Unfortunately, the purgatory code of kexec/kdump is
- not being linked as a regular executable or shared library would have been,
- and therefore, all PLT-relative addresses remain in the generated purgatory
- object code unresolved. This in turn lets kexec-tools fail with
- "Unknown rela relocation: 0x14 0x73c0901c" for such relocation types.
-
- Furthermore, the clang C compiler has always behaved like described above
- and this commit should fix the purgatory code built with the latter.
-
- Because the purgatory code is no regular executable or shared library,
- contains only calls to local functions and has no PLT, all R_390_PLT32DBL
- relocation entries can be resolved just like a R_390_PC32DBL one.
-
- * https://refspecs.linuxfoundation.org/ELF/zSeries/lzsabi0_zSeries/x1633.ht...
-
- Relocation entries of purgatory code generated with gcc 11.3
- ------------------------------------------------------------
-
- $ readelf -r purgatory/purgatory.o
-
- Relocation section '.rela.text' at offset 0x6e8 contains 27 entries:
- Offset Info Type Sym. Value Sym. Name + Addend
- 00000000000c 000300000013 R_390_PC32DBL 0000000000000000 .data + 2
- 00000000001a 001000000014 R_390_PLT32DBL 0000000000000000 sha256_starts + 2
- 000000000030 001100000014 R_390_PLT32DBL 0000000000000000 sha256_update + 2
- 000000000046 001200000014 R_390_PLT32DBL 0000000000000000 sha256_finish + 2
- 000000000050 000300000013 R_390_PC32DBL 0000000000000000 .data + 102
- 00000000005a 001300000014 R_390_PLT32DBL 0000000000000000 memcmp + 2
- ...
- 000000000118 001600000014 R_390_PLT32DBL 0000000000000000 setup_arch + 2
- 00000000011e 000300000013 R_390_PC32DBL 0000000000000000 .data + 2
- 00000000012c 000f00000014 R_390_PLT32DBL 0000000000000000 verify_sha256_digest + 2
- 000000000142 001700000014 R_390_PLT32DBL 0000000000000000
- post_verification[...] + 2
-
- Relocation entries of purgatory code generated with gcc 11.2
- ------------------------------------------------------------
-
- $ readelf -r purgatory/purgatory.o
-
- Relocation section '.rela.text' at offset 0x6e8 contains 27 entries:
- Offset Info Type Sym. Value Sym. Name + Addend
- 00000000000e 000300000013 R_390_PC32DBL 0000000000000000 .data + 2
- 00000000001c 001000000013 R_390_PC32DBL 0000000000000000 sha256_starts + 2
- 000000000036 001100000013 R_390_PC32DBL 0000000000000000 sha256_update + 2
- 000000000048 001200000013 R_390_PC32DBL 0000000000000000 sha256_finish + 2
- 000000000052 000300000013 R_390_PC32DBL 0000000000000000 .data + 102
- 00000000005c 001300000013 R_390_PC32DBL 0000000000000000 memcmp + 2
- ...
- 00000000011a 001600000013 R_390_PC32DBL 0000000000000000 setup_arch + 2
- 000000000120 000300000013 R_390_PC32DBL 0000000000000000 .data + 122
- 000000000130 000f00000013 R_390_PC32DBL 0000000000000000 verify_sha256_digest + 2
- 000000000146 001700000013 R_390_PC32DBL 0000000000000000 post_verification[...] + 2
-
- Corresponding s390 kernel discussion:
- * https://lore.kernel.org/linux-s390/20211208105801.188140-1-egorenar@linux...
-
- Signed-off-by: Alexander Egorenkov <egorenar(a)linux.ibm.com>
- Reported-by: Tao Liu <ltao(a)redhat.com>
- Suggested-by: Philipp Rudo <prudo(a)redhat.com>
- Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
- [hca(a)linux.ibm.com: changed commit message as requested by Philipp Rudo]
- Signed-off-by: Heiko Carstens <hca(a)linux.ibm.com>
- Signed-off-by: Simon Horman <horms(a)verge.net.au>
-
-diff --git a/kexec/arch/s390/kexec-elf-rel-s390.c b/kexec/arch/s390/kexec-elf-rel-s390.c
-index a5e1b73455785ae3bc3aa72b3beee13ae202e82f..91ba86a9991dad4271b834fc3b24861c40309e52 100644
---- a/kexec/arch/s390/kexec-elf-rel-s390.c
-+++ b/kexec/arch/s390/kexec-elf-rel-s390.c
-@@ -56,6 +56,7 @@ void machine_apply_elf_rel(struct mem_ehdr *UNUSED(ehdr),
- case R_390_PC16: /* PC relative 16 bit. */
- case R_390_PC16DBL: /* PC relative 16 bit shifted by 1. */
- case R_390_PC32DBL: /* PC relative 32 bit shifted by 1. */
-+ case R_390_PLT32DBL: /* 32 bit PC rel. PLT shifted by 1. */
- case R_390_PC32: /* PC relative 32 bit. */
- case R_390_PC64: /* PC relative 64 bit. */
- val -= address;
-@@ -63,7 +64,7 @@ void machine_apply_elf_rel(struct mem_ehdr *UNUSED(ehdr),
- *(unsigned short *) loc = val;
- else if (r_type == R_390_PC16DBL)
- *(unsigned short *) loc = val >> 1;
-- else if (r_type == R_390_PC32DBL)
-+ else if (r_type == R_390_PC32DBL || r_type == R_390_PLT32DBL)
- *(unsigned int *) loc = val >> 1;
- else if (r_type == R_390_PC32)
- *(unsigned int *) loc = val;
diff --git a/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch b/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
new file mode 100644
index 0000000..1ee904a
--- /dev/null
+++ b/kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
@@ -0,0 +1,132 @@
+From: Coiby Xu <coxu(a)redhat.com>
+
+Subject: [PATCH] ppc64: get vmalloc start address from vmcoreinfo
+
+Bugzilla: https://bugzilla.redhat.com/2269991
+
+commit 94241fd2feed059227a243618f2acc6aabf366e8
+Author: Aditya Gupta <adityag(a)linux.ibm.com>
+Date: Sat Feb 24 00:33:42 2024 +0530
+
+ [PATCH] ppc64: get vmalloc start address from vmcoreinfo
+
+ Below error was noticed when running makedumpfile on linux-next kernel
+ crash (linux-next tag next-20240121):
+
+ Checking for memory holes : [100.0 %] | readpage_elf: Attempt to read non-existent page at 0xc000000000000.
+ [ 17.551718] kdump.sh[404]: readmem: type_addr: 0, addr:c00c000000000000, size:16384
+ [ 17.551793] kdump.sh[404]: __exclude_unnecessary_pages: Can't read the buffer of struct page.
+ [ 17.551864] kdump.sh[404]: create_2nd_bitmap: Can't exclude unnecessary pages.
+ [ 17.562632] kdump.sh[404]: The kernel version is not supported.
+ [ 17.562708] kdump.sh[404]: The makedumpfile operation may be incomplete.
+ [ 17.562773] kdump.sh[404]: makedumpfile Failed.
+ [ 17.564335] kdump[406]: saving vmcore failed, _exitcode:1
+
+ Above error was due to 'vmap_area_list' and 'vmlist' symbols missing
+ from the vmcore. 'vmap_area_list' was removed in the linux kernel
+ 6.9-rc1 by the commit below:
+
+ commit 55c49fee57af99f3c663e69dedc5b85e691bbe50
+ mm/vmalloc: remove vmap_area_list
+
+ Subsequently the commit also introduced 'VMALLOC_START' in vmcoreinfo to
+ get base address of vmalloc area, instead of depending on 'vmap_area_list'
+
+ Hence if 'VMALLOC_START' symbol is there in vmcoreinfo:
+ 1. Set vmalloc_start based on 'VMALLOC_START'
+ 2. Don't error if vmap_area_list/vmlist are not defined
+
+ Reported-by: Sachin Sant <sachinp(a)linux.ibm.com>
+ Signed-off-by: Aditya Gupta <adityag(a)linux.ibm.com>
+
+Signed-off-by: Coiby Xu <coxu(a)redhat.com>
+
+diff --git a/makedumpfile-1.7.4/arch/ppc64.c b/makedumpfile-1.7.4/arch/ppc64.c
+index 3b4f91981f71d035b94282f6c7e33323a4e4c1fd..a54f9a04db7f26eac2f1bd065b134a7e2fdaeb67 100644
+--- a/makedumpfile-1.7.4/arch/ppc64.c
++++ b/makedumpfile-1.7.4/arch/ppc64.c
+@@ -568,7 +568,9 @@ get_machdep_info_ppc64(void)
+ /*
+ * Get vmalloc_start value from either vmap_area_list or vmlist.
+ */
+- if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
++ if (NUMBER(vmalloc_start) != NOT_FOUND_NUMBER) {
++ vmalloc_start = NUMBER(vmalloc_start);
++ } else if ((SYMBOL(vmap_area_list) != NOT_FOUND_SYMBOL)
+ && (OFFSET(vmap_area.va_start) != NOT_FOUND_STRUCTURE)
+ && (OFFSET(vmap_area.list) != NOT_FOUND_STRUCTURE)) {
+ if (!readmem(VADDR, SYMBOL(vmap_area_list) + OFFSET(list_head.next),
+@@ -689,11 +691,16 @@ vaddr_to_paddr_ppc64(unsigned long vaddr)
+ if ((SYMBOL(vmap_area_list) == NOT_FOUND_SYMBOL)
+ || (OFFSET(vmap_area.va_start) == NOT_FOUND_STRUCTURE)
+ || (OFFSET(vmap_area.list) == NOT_FOUND_STRUCTURE)) {
+- if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
+- || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
+- ERRMSG("Can't get info for vmalloc translation.\n");
+- return NOT_PADDR;
+- }
++ /*
++ * Don't depend on vmap_area_list/vmlist if vmalloc_start is set in
++ * vmcoreinfo, in that case proceed without error
++ */
++ if (NUMBER(vmalloc_start) == NOT_FOUND_NUMBER)
++ if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL)
++ || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) {
++ ERRMSG("Can't get info for vmalloc translation.\n");
++ return NOT_PADDR;
++ }
+ }
+
+ return ppc64_vtop_level4(vaddr);
+diff --git a/makedumpfile-1.7.4/makedumpfile.c b/makedumpfile-1.7.4/makedumpfile.c
+index 58c6639f289f19cdbf39ed3899be9893fdc317fe..d7f1dd41d2cab526d7d40e809ddccf656c586811 100644
+--- a/makedumpfile-1.7.4/makedumpfile.c
++++ b/makedumpfile-1.7.4/makedumpfile.c
+@@ -2978,6 +2978,8 @@ read_vmcoreinfo(void)
+ READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
+ READ_NUMBER("phys_base", phys_base);
+ READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
++
++ READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
+ #ifdef __aarch64__
+ READ_NUMBER("VA_BITS", VA_BITS);
+ READ_NUMBER("TCR_EL1_T1SZ", TCR_EL1_T1SZ);
+@@ -2989,7 +2991,6 @@ read_vmcoreinfo(void)
+ READ_NUMBER("VA_BITS", va_bits);
+ READ_NUMBER_UNSIGNED("phys_ram_base", phys_ram_base);
+ READ_NUMBER_UNSIGNED("PAGE_OFFSET", page_offset);
+- READ_NUMBER_UNSIGNED("VMALLOC_START", vmalloc_start);
+ READ_NUMBER_UNSIGNED("VMALLOC_END", vmalloc_end);
+ READ_NUMBER_UNSIGNED("VMEMMAP_START", vmemmap_start);
+ READ_NUMBER_UNSIGNED("VMEMMAP_END", vmemmap_end);
+diff --git a/makedumpfile-1.7.4/makedumpfile.h b/makedumpfile-1.7.4/makedumpfile.h
+index c04c330b69ecbe5fb232a2eabbd2d71f14b60cc0..c31f3a4371af8aae38dcba8cac4d6de1012b4cfd 100644
+--- a/makedumpfile-1.7.4/makedumpfile.h
++++ b/makedumpfile-1.7.4/makedumpfile.h
+@@ -541,8 +541,6 @@ do { \
+ * The value of dependence on machine
+ */
+ #define PAGE_OFFSET (info->page_offset)
+-#define VMALLOC_START (info->vmalloc_start)
+-#define VMALLOC_END (info->vmalloc_end)
+ #define VMEMMAP_START (info->vmemmap_start)
+ #define VMEMMAP_END (info->vmemmap_end)
+ #define PMASK (0x7ffffffffffff000UL)
+@@ -2263,6 +2261,9 @@ struct number_table {
+ long HUGETLB_PAGE_DTOR;
+ long phys_base;
+ long KERNEL_IMAGE_SIZE;
++
++ unsigned long vmalloc_start;
++
+ #ifdef __aarch64__
+ long VA_BITS;
+ long TCR_EL1_T1SZ;
+@@ -2273,7 +2274,6 @@ struct number_table {
+ long va_bits;
+ unsigned long phys_ram_base;
+ unsigned long page_offset;
+- unsigned long vmalloc_start;
+ unsigned long vmalloc_end;
+ unsigned long vmemmap_start;
+ unsigned long vmemmap_end;
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 304bbb7..2c7d88c 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -5,7 +5,7 @@
Name: kexec-tools
Version: 2.0.28
-Release: 6%{?dist}
+Release: 7%{?dist}
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -112,6 +112,8 @@ Patch101: kexec-tools-2.0.28-Fix-building-on-x86_64-with-binutils-2.41.patch
# Author: Jiri Bohac <jbohac(a)suse.cz>
Patch601: kexec-tools-2.0.28-kexec-don-t-use-kexec_file_load-on-XEN.patch
+Patch602: kexec-tools-2.0.28-makedumfpile-0001-PATCH-ppc64-get-vmalloc-start-address-from-vmcoreinf.patch
+
%description
kexec-tools provides /sbin/kexec binary that facilitates a new
kernel to boot using the kernel's kexec feature either on a
@@ -159,6 +161,7 @@ tar -z -x -v -f %{SOURCE19}
%patch 101 -p1
%patch 601 -p1
+%patch 602 -p1
%ifarch ppc
%define archdef ARCH=ppc
@@ -398,6 +401,9 @@ fi
%changelog
+* Sun Apr 07 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-7
+- Release 2.0.28-7
+
* Sat Mar 16 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-6
- let kexec-tools depends on makedumpfile
commit 858de28447ff05b15ef3c7004f60c7babf1ab15c
Author: Coiby Xu <coxu(a)redhat.com>
Date: Wed Mar 13 14:18:24 2024 +0800
doc/kdump.conf: properly format list
man files doesn't preserve line breaks. Construct a list to list the
cases where additional memory will be reserved.
Fixes: c752cbb2 ("Explain the auto_reset_crashkernel option in more details")
Reported-by: Jie Li <jieli(a)redhat.com>
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
diff --git a/kdump.conf.5 b/kdump.conf.5
index f738dba..20b1620 100644
--- a/kdump.conf.5
+++ b/kdump.conf.5
@@ -32,17 +32,22 @@ determine whether to reset kernel crashkernel parameter to the default value
or not when kexec-tools is updated or a new kernel is installed. The default
crashkernel values are different for different architectures and also take the
following factors into consideration,
- - AMD Secure Memory Encryption (SME) and Secure Encrypted Virtualization (SEV)
- - Mellanox 5th generation network driver
- - aarch64 64k kernel
- - Firmware-assisted dump (FADump)
-
+.IP
+\- AMD Secure Memory Encryption (SME) and Secure Encrypted Virtualization (SEV)
+.IP
+\- Mellanox 5th generation network driver
+.IP
+\- aarch64 64k kernel
+.IP
+\- Firmware-assisted dump (FADump)
+.PP
Since the kernel crasherkernel parameter will be only reset when kexec-tools is
updated or a new kernel is installed, you need to call "kdumpctl
reset-crashkernel [--kernel=path_to_kernel]" if you want to use the default
value set after having enabled features like SME/SEV for a specific kernel. And
you should also reboot the system for the new crashkernel value to take effect.
Also see kdumpctl(8).
+.PP
.RE
.B raw <partition>
commit d6e1edc677bfd15fb4553101ffb5a34130959861
Author: Coiby Xu <coxu(a)redhat.com>
Date: Wed Mar 13 14:12:58 2024 +0800
doc/kdump.conf: correctly align the options
Currently, the other options like "raw <partition>" become child items
of the auto_reset_crashkernel option,
auto_reset_crashkernel <yes|no>
...
raw <partition>
...
nfs <nfs mount>
...
...
Fix it by ending the auto_reset_crashkernel with ".RE".
Fixes: 73ced7f4 ("introduce the auto_reset_crashkernel option to kdump.conf")
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
Reviewed-by: Philipp Rudo <prudo(a)redhat.com>
diff --git a/kdump.conf.5 b/kdump.conf.5
index 0e6ff21..f738dba 100644
--- a/kdump.conf.5
+++ b/kdump.conf.5
@@ -43,6 +43,7 @@ reset-crashkernel [--kernel=path_to_kernel]" if you want to use the default
value set after having enabled features like SME/SEV for a specific kernel. And
you should also reboot the system for the new crashkernel value to take effect.
Also see kdumpctl(8).
+.RE
.B raw <partition>
.RS
commit 44a1b7da908a52c15a2b7ed286b59cfe7319b4c9
Author: Sourabh Jain <sourabhjain(a)linux.ibm.com>
Date: Wed Feb 28 22:51:15 2024 +0530
ppc64le: replace kernel cmdline maxcpu=1 with nr_cpus=1
With patch series [1], PowerPC supports nr_cpus=1,
so use nr_cpus=1 instead of maxcpu=1 in the kdump environment.
Note this changes is dependent on kernel changes [1]
[1] https://lore.kernel.org/all/170800202447.601034.7290612623478478380.b4-ty...
Signed-off-by: Sourabh Jain <sourabhjain(a)linux.ibm.com>
Cc: Hari Bathini <hbathini(a)linux.ibm.com>
Cc: Mahesh Salgaonkar <mahesh(a)linux.ibm.com>
Acked-by: Pingfan Liu <piliu(a)redhat.com>
diff --git a/gen-kdump-sysconfig.sh b/gen-kdump-sysconfig.sh
index 4a28350..78b0bb7 100755
--- a/gen-kdump-sysconfig.sh
+++ b/gen-kdump-sysconfig.sh
@@ -92,7 +92,7 @@ ppc64le)
update_param KDUMP_COMMANDLINE_REMOVE \
"hugepages hugepagesz slub_debug quiet log_buf_len swiotlb hugetlb_cma ignition.firstboot"
update_param KDUMP_COMMANDLINE_APPEND \
- "irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
+ "irqpoll nr_cpus=1 noirqdistrib reset_devices cgroup_disable=memory numa=off udev.children-max=2 ehea.use_mcs=0 panic=10 kvm_cma_resv_ratio=0 transparent_hugepage=never novmcoredd hugetlb_cma=0"
;;
s390x)
update_param KEXEC_ARGS "-s"
commit d2b6547f55ca960463de6dca6791db3c7d10ec06
Author: Philipp Rudo <prudo(a)redhat.com>
Date: Thu Feb 8 17:06:12 2024 +0100
Supported targets: Merge hypervisor sections
The supported targets list has two separate hypervisor sections. Merge
them into one.
Signed-off-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/supported-kdump-targets.txt b/supported-kdump-targets.txt
index f282adf..936a42b 100644
--- a/supported-kdump-targets.txt
+++ b/supported-kdump-targets.txt
@@ -59,10 +59,6 @@ network:
vlan tagged bonding
bridge over bond/vlan
-hypervisor:
- kvm
- xen (Supported in select configurations only)
-
filesystem:
ext[234]
xfs
@@ -74,6 +70,8 @@ firmware:
UEFI
hypervisor:
+ kvm
+ xen (selected configurations only)
VMWare ESXi 4.x 5.x would not be tested/supported any more.
only support ESXi 6.6, 6.7, 7.0
Hyper-V 2012 R2 (RHEL Gen1 UP Guest only), later version will
commit b6a066db5368d53a5e460ca1c948c0b43d66b1ef
Author: Philipp Rudo <prudo(a)redhat.com>
Date: Thu Feb 8 17:06:11 2024 +0100
Supported targets: Import from CentOS Stream 9
In CentOS Stream a list of supported targets is maintained. Where
"supported" means that these targets are tested regularly. Even though
there are some small differences between CentOS Stream and Fedora when
it comes to provided/supported packages and kernel configs, having this
list in Fedora as well makes sense. As it provides a entry point for
users to find out if a given setup is meant to work or not. Thus include
the supported-kdump-targets.txt from CentOS Stream 9 [1] into Fedora.
[1] https://gitlab.com/redhat/centos-stream/rpms/kexec-tools/-/blob/0a09d12d8...
Signed-off-by: Philipp Rudo <prudo(a)redhat.com>
Reviewed-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 0a0b342..304bbb7 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -39,6 +39,7 @@ Source34: crashkernel-howto.txt
Source35: kdump-migrate-action.sh
Source36: kdump-restart.sh
Source37: 60-fadump.install
+Source38: supported-kdump-targets.txt
#######################################
# These are sources for mkdumpramfs
@@ -183,6 +184,7 @@ cp %{SOURCE21} .
cp %{SOURCE26} .
cp %{SOURCE27} .
cp %{SOURCE34} .
+cp %{SOURCE38} .
# Generate sysconfig file
%{SOURCE3} %{_target_cpu} > kdump.sysconfig
@@ -382,6 +384,7 @@ fi
%doc kdump-in-cluster-environment.txt
%doc live-image-kdump-howto.txt
%doc crashkernel-howto.txt
+%doc supported-kdump-targets.txt
%files -n makedumpfile
diff --git a/supported-kdump-targets.txt b/supported-kdump-targets.txt
new file mode 100644
index 0000000..f282adf
--- /dev/null
+++ b/supported-kdump-targets.txt
@@ -0,0 +1,121 @@
+Supported Kdump Targets
+
+This document try to list all supported kdump targets, and those supported
+or unknown/tech-preview targets, this can help users to decide whether a dump
+solution is available.
+
+Dump Target support status
+==========================
+This section tries to come up with some kind of guidelines in terms of
+what dump targets are supported/not supported. Whatever is listed here
+is not binding in any manner. It is just sharing of current understanding
+and if something is not right, this section needs to be edited.
+
+Following are 3 lists. First one contains supported targets. These are
+generic configurations which should work and some configuration most
+likely has worked in testing. Second list is known unsupported targets.
+These targets we know either don't work or we don't support. And third
+list is unknown/tech-preview. We either don't yet know the status of kdump
+on these targets or these are under tech-preview.
+
+Note, these lists are not set in stone and can be changed at any point of
+time. Also these lists might not be complete. We will add/remove items to
+it as we get more testing information. Also, there are many corner cases
+which can't possibly be listed. For example in general we might be
+supporting software iscsi but there might be some configurations of it
+which don't work.
+
+So if any target is listed in supported section, it does not mean it works
+in all possible configurations. It just means that in common configurations
+it should work but there can be issues with particular configurations which
+are not supported. As we come to know of particular issues, we will keep on
+updating lists accordingly.
+
+
+Supported Dump targets
+----------------------
+storage:
+ LVM volume
+ Thin provisioning volume
+ FC disks (qla2xxx, lpfc, bnx2fc, bfa)
+ software initiator based iSCSI
+ software RAID (mdraid)
+ hardware RAID (smartpqi, hpsa, megaraid, mpt3sas, aacraid, mpi3mr)
+ SCSI/SATA disks
+ iSCSI HBA (all offload)
+ hardware FCoE (qla2xxx, lpfc)
+ software FCoE (bnx2fc) (Extra configuration required,
+ please read "Note on FCoE" section below)
+ NVMe-FC (qla2xxx, lpfc)
+
+network:
+ Hardware using kernel modules: (igb, ixgbe, ice, i40e, e1000e, igc,
+ tg3, bnx2x, bnxt_en, qede, cxgb4, be2net, enic, sfc, mlx4_en,
+ mlx5_core, r8169, atlantic, nfp, ionic; nicvf (aarch64 only))
+ protocol: ipv4
+ bonding
+ vlan
+ bridge
+ vlan tagged bonding
+ bridge over bond/vlan
+
+hypervisor:
+ kvm
+ xen (Supported in select configurations only)
+
+filesystem:
+ ext[234]
+ xfs
+ nfs
+ virtiofs
+
+firmware:
+ BIOS
+ UEFI
+
+hypervisor:
+ VMWare ESXi 4.x 5.x would not be tested/supported any more.
+ only support ESXi 6.6, 6.7, 7.0
+ Hyper-V 2012 R2 (RHEL Gen1 UP Guest only), later version will
+ also be tested/supported
+
+Unsupported Dump targets
+------------------------
+storage:
+ BIOS RAID
+ Software iSCSI with iBFT (bnx2i, cxgb3i, cxgb4i)
+ Software iSCSI with hybrid (be2iscsi)
+ FCoE
+ legacy IDE
+ glusterfs
+ gfs2/clvm/halvm
+
+network:
+ hardware using kernel modules: (sfc SRIOV, cxgb4vf, pch_gbe)
+ protocol: ipv6
+ wireless
+ Infiniband (IB)
+ vlan over bridge/team
+
+filesystem:
+ btrfs
+
+Unknown/tech-preview
+--------------------
+storage:
+ PCI Express based SSDs
+
+hypervisor:
+ Hyper-V 2008
+ Hyper-V 2012
+
+
+Note on FCoE
+=====================
+If you are trying to dump to a software FCoE target, you may encounter OOM
+issue, because some software FCoE requires more memory to work. In such case,
+you may need to increase the kdump reserved memory size in "crashkernel="
+kernel parameter.
+
+For hardware FCoE, kdump should work naturally as firmware will do the
+initialization job. The capture kernel and kdump tools will run just fine.
commit f9986edd25e8b414b2fc7f11f08d6d8f51a9b843
Author: Coiby Xu <coxu(a)redhat.com>
Date: Sat Mar 16 10:22:54 2024 +0800
Release 2.0.28-6
Resovles: https://bugzilla.redhat.com/show_bug.cgi?id=2269640
Let kexec-tools depends on makedumpfile.
Signed-off-by: Coiby Xu <coxu(a)redhat.com>
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 6104e46..0a0b342 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -5,7 +5,7 @@
Name: kexec-tools
Version: 2.0.28
-Release: 5%{?dist}
+Release: 6%{?dist}
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -61,6 +61,7 @@ Requires(post): servicelog
Recommends: keyutils
%endif
Requires(pre): coreutils sed
+Requires: makedumpfile
Requires: dracut >= 058
Requires: dracut-network >= 058
Requires: dracut-squash >= 058
@@ -394,6 +395,9 @@ fi
%changelog
+* Sat Mar 16 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-6
+- let kexec-tools depends on makedumpfile
+
* Fri Feb 23 2024 Carl George <carlwgeorge(a)fedoraproject.org> - 2.0.28-5
- Add a makedumpfile subpackage
commit ec3bccdf326881decd13f0ac7b4558f4a22875bd
Author: Carl George <carlwgeorge(a)fedoraproject.org>
Date: Fri Feb 23 16:32:28 2024 -0600
Add a makedumpfile subpackage
diff --git a/kexec-tools.spec b/kexec-tools.spec
index af24741..6104e46 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -5,7 +5,7 @@
Name: kexec-tools
Version: 2.0.28
-Release: 4%{?dist}
+Release: 5%{?dist}
License: GPL-2.0-only
Summary: The kexec/kdump userspace component
@@ -60,7 +60,7 @@ Source201: dracut-fadump-module-setup.sh
Requires(post): servicelog
Recommends: keyutils
%endif
-Requires(pre): coreutils sed zlib
+Requires(pre): coreutils sed
Requires: dracut >= 058
Requires: dracut-network >= 058
Requires: dracut-squash >= 058
@@ -71,8 +71,6 @@ Recommends: binutils
Recommends: grubby
Recommends: hostname
BuildRequires: make
-BuildRequires: zlib-devel elfutils-devel glib2-devel bzip2-devel ncurses-devel bison flex lzo-devel snappy-devel libzstd-devel
-BuildRequires: pkgconfig intltool gettext
BuildRequires: systemd-rpm-macros
BuildRequires: automake autoconf libtool
@@ -119,6 +117,37 @@ normal or a panic reboot. This package contains the /sbin/kexec
binary and ancillary utilities that together form the userspace
component of the kernel's kexec feature.
+
+%package -n makedumpfile
+Version: %{mkdf_ver}
+Summary: make a small dumpfile of kdump
+License: GPL-2.0-only
+URL: https://github.com/makedumpfile/makedumpfile
+
+Conflicts: kexec-tools < 2.0.28-5
+Requires(pre): zlib
+BuildRequires: make
+BuildRequires: gcc
+BuildRequires: zlib-devel
+BuildRequires: elfutils-devel
+BuildRequires: glib2-devel
+BuildRequires: bzip2-devel
+BuildRequires: ncurses-devel
+BuildRequires: bison
+BuildRequires: flex
+BuildRequires: lzo-devel
+BuildRequires: snappy-devel
+BuildRequires: libzstd-devel
+BuildRequires: pkgconfig
+BuildRequires: intltool
+BuildRequires: gettext
+
+
+%description -n makedumpfile
+makedumpfile is a tool to compress and filter out unneeded data from kernel
+dumps to reduce its file size. It is typically used with the kdump mechanism.
+
+
%prep
%setup -q
@@ -159,11 +188,12 @@ cp %{SOURCE34} .
%{SOURCE4} %{_target_cpu} > kdump.conf
make
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
+
+# makedumpfile
make -C eppic-%{eppic_ver}/libeppic
make -C makedumpfile-%{mkdf_ver} LINKTYPE=dynamic USELZO=on USESNAPPY=on USEZSTD=on
make -C makedumpfile-%{mkdf_ver} LDFLAGS="$LDFLAGS -I../eppic-%{eppic_ver}/libeppic -L../eppic-%{eppic_ver}/libeppic" eppic_makedumpfile.so
-%endif
+
%install
mkdir -p -m755 $RPM_BUILD_ROOT/usr/sbin
@@ -221,7 +251,7 @@ install -m 755 -D %{SOURCE22} $RPM_BUILD_ROOT%{_prefix}/lib/systemd/system-gener
install -m 755 -D %{SOURCE30} $RPM_BUILD_ROOT%{_prefix}/lib/kernel/install.d/60-kdump.install
install -m 755 -D %{SOURCE33} $RPM_BUILD_ROOT%{_prefix}/lib/kernel/install.d/92-crashkernel.install
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
+# makedumpfile
install -m 755 makedumpfile-%{mkdf_ver}/makedumpfile $RPM_BUILD_ROOT/usr/sbin/makedumpfile
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.8 $RPM_BUILD_ROOT/%{_mandir}/man8/makedumpfile.8
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf.5 $RPM_BUILD_ROOT/%{_mandir}/man5/makedumpfile.conf.5
@@ -229,7 +259,6 @@ install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf $RPM_BUILD_ROOT/%{_sys
install -m 755 makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so $RPM_BUILD_ROOT/%{_libdir}/eppic_makedumpfile.so
mkdir -p $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
install -m 644 makedumpfile-%{mkdf_ver}/eppic_scripts/* $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
-%endif
%define dracutdir %{_prefix}/lib/dracut/modules.d
%define remove_prefix() %(echo -n %2|sed 's/.*%1-//g')
@@ -313,9 +342,6 @@ fi
%files
/usr/sbin/kexec
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
-/usr/sbin/makedumpfile
-%endif
%ifarch ppc64 ppc64le
/usr/sbin/mkfadumprd
%{_prefix}/lib/kernel/install.d/60-fadump.install
@@ -325,9 +351,6 @@ fi
%{_bindir}/*
%{_datadir}/kdump
%{_prefix}/lib/kdump
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
-%{_sysconfdir}/makedumpfile.conf.sample
-%endif
%config(noreplace,missingok) %{_sysconfdir}/sysconfig/kdump
%config(noreplace,missingok) %verify(not mtime) %{_sysconfdir}/kdump.conf
%ifnarch s390x
@@ -342,12 +365,9 @@ fi
%dir %{_sharedstatedir}/kdump
%{_mandir}/man8/kdumpctl.8.gz
%{_mandir}/man8/kexec.8.gz
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
-%{_mandir}/man8/makedumpfile.8.gz
-%endif
%{_mandir}/man8/mkdumprd.8.gz
%{_mandir}/man8/vmcore-dmesg.8.gz
-%{_mandir}/man5/*
+%{_mandir}/man5/kdump.conf.5.gz
%{_unitdir}/kdump.service
%{_prefix}/lib/systemd/system-generators/kdump-dep-generator.sh
%{_prefix}/lib/kernel/install.d/60-kdump.install
@@ -361,12 +381,22 @@ fi
%doc kdump-in-cluster-environment.txt
%doc live-image-kdump-howto.txt
%doc crashkernel-howto.txt
-%ifarch %{ix86} x86_64 ppc64 s390x ppc64le aarch64
+
+
+%files -n makedumpfile
+%license makedumpfile-%{mkdf_ver}/COPYING
+%{_sbindir}/makedumpfile
+%{_mandir}/man5/makedumpfile.conf.5.gz
+%{_mandir}/man8/makedumpfile.8.gz
+%{_sysconfdir}/makedumpfile.conf.sample
%{_libdir}/eppic_makedumpfile.so
-/usr/share/makedumpfile/
-%endif
+%{_datadir}/makedumpfile/
+
%changelog
+* Fri Feb 23 2024 Carl George <carlwgeorge(a)fedoraproject.org> - 2.0.28-5
+- Add a makedumpfile subpackage
+
* Fri Feb 02 2024 Coiby Xu <coxu(a)redhat.com> - 2.0.28-4
- kexec: don't use kexec_file_load on XEN
- Fix building on x86_64 with binutils 2.41
2 days, 16 hours
Architecture specific change in rpms/mozjs115.git
by githook-noreply@fedoraproject.org
The package rpms/mozjs115.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/mozjs115.git/commit/?id=7e91920bb....
Change:
-%ifarch aarch64
Thanks.
Full change:
============
commit 0efa8f179746c459df2b33c046482e0cd8f5a947
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Wed Jun 12 18:50:49 2024 +0200
mozjs115-115.12.0 (RHBZ#2264868)
diff --git a/.gitignore b/.gitignore
index 17a4d3e..329ca55 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@
/firefox-115.3.1esr.source.tar.xz
/firefox-115.6.0esr.source.tar.xz
/firefox-115.7.0esr.source.tar.xz
+/firefox-115.12.0esr.source.tar.xz
diff --git a/mozjs115.spec b/mozjs115.spec
index ffa8995..9e30da0 100644
--- a/mozjs115.spec
+++ b/mozjs115.spec
@@ -18,7 +18,7 @@
%endif
Name: mozjs%{major}
-Version: 115.7.0
+Version: 115.12.0
Release: %autorelease
Summary: SpiderMonkey JavaScript library
diff --git a/sources b/sources
index 9f926e7..4cc0c1a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (firefox-115.7.0esr.source.tar.xz) = d468d8ef117d76e0660c5359c3becf0502354c61bdaaeb4137d86f52b50143abec2ac4578af69afa5670700b57efff1c7323ca23e3339a9eaaa888dee7e8e922
+SHA512 (firefox-115.12.0esr.source.tar.xz) = d98475061d870e0f3aa920b7c0b9b0c1cbdb3f4102f760f1d1c5ea3e45e216c673c8d3662501e7e78af4950a003a519e94b57e9b1eda8d615c159cdf62130e89
commit 7e91920bb84d9b7346cc063649de493abf632ec0
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Wed Jun 12 18:09:47 2024 +0200
Re-enable lto on aarch64
diff --git a/mozjs115.spec b/mozjs115.spec
index 39a5e92..ffa8995 100644
--- a/mozjs115.spec
+++ b/mozjs115.spec
@@ -12,12 +12,6 @@
%define _lto_cflags %{nil}
%endif
-# Disable LTO on aarch64 (borked since GCC14)
-# https://bugzilla.redhat.com/show_bug.cgi?id=2260867
-%ifarch aarch64
-%define _lto_cflags %{nil}
-%endif
-
# Big endian platforms
%ifarch ppc ppc64 s390 s390x
%global big_endian 1
commit 2529838aad39ce21648f41720766c4f69fdc8fca
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Wed Jun 12 18:09:12 2024 +0200
tests: Replace pipes with shlex for Python 3.13
diff --git a/mozjs115.spec b/mozjs115.spec
index 912eabb..39a5e92 100644
--- a/mozjs115.spec
+++ b/mozjs115.spec
@@ -61,6 +61,9 @@ Patch20: spidermonkey_checks_disable.patch
# s390x/ppc64 fixes
Patch21: 0001-Skip-failing-tests-on-ppc64-and-s390x.patch
+# Tests Fixes
+Patch30: tests-Replace-pipes-with-shlex-for-Python-3.13.patch
+
BuildRequires: cargo
%if !0%{?rhel}
BuildRequires: ccache
diff --git a/tests-Replace-pipes-with-shlex-for-Python-3.13.patch b/tests-Replace-pipes-with-shlex-for-Python-3.13.patch
new file mode 100644
index 0000000..50c49de
--- /dev/null
+++ b/tests-Replace-pipes-with-shlex-for-Python-3.13.patch
@@ -0,0 +1,32 @@
+From dae1848488117166227b00cd7dcadf704b770339 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= <fzatlouk(a)redhat.com>
+Date: Wed, 12 Jun 2024 15:56:03 +0200
+Subject: [PATCH] tests: Replace pipes with shlex for Python 3.13
+
+---
+ js/src/tests/lib/results.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
+index f902060..ba0c7c6 100644
+--- a/js/src/tests/lib/results.py
++++ b/js/src/tests/lib/results.py
+@@ -1,5 +1,5 @@
+ import json
+-import pipes
++import shlex
+ import re
+
+ from .progressbar import NullProgressBar, ProgressBar
+@@ -9,7 +9,7 @@ from .structuredlog import TestLogger
+
+
+ def escape_cmdline(args):
+- return " ".join([pipes.quote(a) for a in args])
++ return " ".join([shlex.quote(a) for a in args])
+
+
+ class TestOutput:
+--
+2.45.1
+
commit 35fbe3fd5f585f10b8f346910446a115b6dfe8f0
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Wed Jun 12 15:53:53 2024 +0200
Adjust file paths
diff --git a/mozjs115.spec b/mozjs115.spec
index 9bab7a8..912eabb 100644
--- a/mozjs115.spec
+++ b/mozjs115.spec
@@ -230,8 +230,8 @@ pushd js/src/
%endif
%files
-%doc README.html
-%license LICENSE
+%doc js/src/README.html
+%license js/src/LICENSE
%{_libdir}/libmozjs-%{major}.so.0*
%files devel
commit 16033c6f96131d071fa9f0c2709dc486e11bb114
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Tue Jun 11 16:06:15 2024 +0200
Adjust known failures
diff --git a/known_failures.txt b/known_failures.txt
index c586972..dcce71b 100644
--- a/known_failures.txt
+++ b/known_failures.txt
@@ -6,6 +6,7 @@ non262/Intl/DateTimeFormat/day-period-hour-cycle.js
non262/Intl/DateTimeFormat/fractional-second-digits-append-item.js
non262/Intl/DateTimeFormat/related-year.js
non262/Intl/DateTimeFormat/timeZone_backzone.js
+non262/Intl/DateTimeFormat/timeZone_version.js
non262/Intl/DisplayNames/calendar.js
non262/Intl/DisplayNames/currency.js
non262/Intl/DisplayNames/language-dialect.js
commit b0f7540df35bc1631c870c8d9e08ada7cb986926
Author: František Zatloukal <fzatlouk(a)redhat.com>
Date: Tue Jun 11 16:03:13 2024 +0200
spec cleanup
diff --git a/mozjs115.spec b/mozjs115.spec
index a0b3c4d..9bab7a8 100644
--- a/mozjs115.spec
+++ b/mozjs115.spec
@@ -101,10 +101,7 @@ The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%prep
-%autosetup -n firefox-%{version}/js/src -N
-
-pushd ../..
-%autopatch -p1
+%autosetup -n firefox-%{version} -p1
# Purge the bundled six library incompatible with Python 3.12
rm third_party/python/six/six.py
@@ -126,8 +123,6 @@ rm -rf js/src/devtools/automation/variants/
rm -rf js/src/octane/
rm -rf js/src/ctypes/libffi/
-popd
-
%build
%if 0%{?build_with_lto}
# https://github.com/ptomato/mozjs/commit/36bb7982b41e0ef9a65f7174252ab996c...
@@ -137,11 +132,11 @@ export CARGO_PROFILE_RELEASE_LTO=true
# Use bundled autoconf
export M4=m4
export AWK=awk
-export AC_MACRODIR=/builddir/build/BUILD/firefox-%{version}/build/autoconf/
+export AC_MACRODIR=./build/autoconf/
+pushd js/src/
#sh ../../build/autoconf/autoconf.sh --localdir=/builddir/build/BUILD/firefox-%%{version}/js/src configure.in > configure
#chmod +x configure
-
%configure \
--with-system-icu \
--with-system-zlib \
@@ -158,6 +153,7 @@ export AC_MACRODIR=/builddir/build/BUILD/firefox-%{version}/build/autoconf/
%make_build
%install
+pushd js/src/
%make_install
# Fix permissions
@@ -211,6 +207,7 @@ ln -s libmozjs-%{major}.so.0.0.0 %{buildroot}%{_libdir}/libmozjs-%{major}.so.0
ln -s libmozjs-%{major}.so.0 %{buildroot}%{_libdir}/libmozjs-%{major}.so
%check
+pushd js/src/
# Run SpiderMonkey tests
%if 0%{?require_tests}
%{python3} tests/jstests.py -d -s -t 2400 --exclude-file=known_failures.txt --no-progress --wpt=disabled ../../js/src/dist/bin/js%{major}
2 days, 17 hours
Architecture specific change in rpms/vtk.git
by githook-noreply@fedoraproject.org
The package rpms/vtk.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/vtk.git/commit/?id=37872b22acd365...
https://src.fedoraproject.org/cgit/rpms/vtk.git/commit/?id=1a12f28665b2f2...
https://src.fedoraproject.org/cgit/rpms/vtk.git/commit/?id=54bf13eec1a651....
Change:
+%ifarch %{arm} riscv64
+%ifnarch %{ix86}
+%ifarch %{ix86}
Thanks.
Full change:
============
commit 1a9901bfad9773c52e4f5e5761beeb59f2702b56
Author: Orion Poplawski <orion(a)nwra.com>
Date: Tue Feb 27 17:13:16 2024 -0700
Better changelog entry
diff --git a/vtk.spec b/vtk.spec
index ec6b1b8..688d2fe 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -845,7 +845,7 @@ cat xorg.log
%changelog
* Sat Feb 24 2024 David Abdurachmanov <davidlt(a)rivosinc.com> - 9.2.6-13
-- Reduce memory and ncpu usage
+- Reduce memory and ncpu usage during riscv64 builds
* Wed Jan 24 2024 Orion Poplawski <orion(a)nwra.com> - 9.2.6-12
- Drop mpi4py-mpich BR on i686 (bz#2259594)
commit 37872b22acd365439a9a3bef050d788ac7ad48b3
Author: David Abdurachmanov <davidlt(a)rivosinc.com>
Date: Mon Dec 11 09:56:47 2023 +0200
Reduce memory and ncpu usage
The builds jobs keep restarting. We are most likely hitting OOM.
Signed-off-by: David Abdurachmanov <davidlt(a)rivosinc.com>
diff --git a/vtk.spec b/vtk.spec
index cebaf62..ec6b1b8 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -54,7 +54,7 @@
Summary: The Visualization Toolkit - A high level 3D visualization library
Name: vtk
Version: 9.2.6
-Release: 12%{?dist}
+Release: 13%{?dist}
License: BSD-3-Clause
Source0: https://www.vtk.org/files/release/9.2/VTK-%{version}.tar.gz
Source1: https://www.vtk.org/files/release/9.2/VTKData-%{version}.tar.gz
@@ -590,11 +590,11 @@ export CXXFLAGS="%{optflags} -D_UNICODE -DHAVE_UINTPTR_T"
export CPPFLAGS=-DACCEPT_USE_OF_DEPRECATED_PROJ_API_H
%if %{with java}
export JAVA_HOME=/usr/lib/jvm/java
-%ifarch %{arm} s390x
+%ifarch %{arm} s390x riscv64
# getting "java.lang.OutOfMemoryError: Java heap space" during the build
export JAVA_TOOL_OPTIONS=-Xmx2048m
%endif
-%ifarch %{arm}
+%ifarch %{arm} riscv64
# Likely running out of memory during build
%global _smp_ncpus_max 2
%endif
@@ -844,6 +844,9 @@ cat xorg.log
%changelog
+* Sat Feb 24 2024 David Abdurachmanov <davidlt(a)rivosinc.com> - 9.2.6-13
+- Reduce memory and ncpu usage
+
* Wed Jan 24 2024 Orion Poplawski <orion(a)nwra.com> - 9.2.6-12
- Drop mpi4py-mpich BR on i686 (bz#2259594)
commit 1a12f28665b2f24537b98fcf4b3fb3a176fa7fba
Author: Orion Poplawski <orion(a)nwra.com>
Date: Wed Jan 24 21:43:42 2024 -0700
Drop mpi4py-mpich BR on i686 (bz#2259594)
diff --git a/vtk.spec b/vtk.spec
index f270330..cebaf62 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -146,7 +146,9 @@ BuildRequires: gnuplot
BuildRequires: wget
%if %{with mpich}
BuildRequires: mpich-devel
+%ifnarch %{ix86}
BuildRequires: python%{?python3_pkgversion}-mpi4py-mpich
+%endif
BuildRequires: netcdf-mpich-devel
%endif
%if %{with openmpi}
@@ -842,6 +844,9 @@ cat xorg.log
%changelog
+* Wed Jan 24 2024 Orion Poplawski <orion(a)nwra.com> - 9.2.6-12
+- Drop mpi4py-mpich BR on i686 (bz#2259594)
+
* Wed Jan 17 2024 Jonathan Wakely <jwakely(a)redhat.com> - 9.2.6-12
- Rebuilt for Boost 1.83
commit 72c3dccfc9680817ec4b78f612093dae03c1cba5
Author: Jonathan Wakely <jwakely(a)redhat.com>
Date: Wed Jan 17 22:45:52 2024 +0000
Rebuilt for Boost 1.83
diff --git a/vtk.spec b/vtk.spec
index ceef52c..f270330 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -54,7 +54,7 @@
Summary: The Visualization Toolkit - A high level 3D visualization library
Name: vtk
Version: 9.2.6
-Release: 11%{?dist}
+Release: 12%{?dist}
License: BSD-3-Clause
Source0: https://www.vtk.org/files/release/9.2/VTK-%{version}.tar.gz
Source1: https://www.vtk.org/files/release/9.2/VTKData-%{version}.tar.gz
@@ -842,6 +842,9 @@ cat xorg.log
%changelog
+* Wed Jan 17 2024 Jonathan Wakely <jwakely(a)redhat.com> - 9.2.6-12
+- Rebuilt for Boost 1.83
+
* Wed Nov 15 2023 Sandro Mani <manisandro(a)gmail.com> - 9.2.6-11
- Rebuild (gdal)
commit 669f31d92649c2adbd7695111003c9a5ff3cb352
Author: Sandro Mani <manisandro(a)gmail.com>
Date: Wed Nov 15 15:03:19 2023 +0100
Rebuild (gdal)
diff --git a/vtk.spec b/vtk.spec
index 1b1a70d..ceef52c 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -54,7 +54,7 @@
Summary: The Visualization Toolkit - A high level 3D visualization library
Name: vtk
Version: 9.2.6
-Release: 10%{?dist}
+Release: 11%{?dist}
License: BSD-3-Clause
Source0: https://www.vtk.org/files/release/9.2/VTK-%{version}.tar.gz
Source1: https://www.vtk.org/files/release/9.2/VTKData-%{version}.tar.gz
@@ -842,6 +842,9 @@ cat xorg.log
%changelog
+* Wed Nov 15 2023 Sandro Mani <manisandro(a)gmail.com> - 9.2.6-11
+- Rebuild (gdal)
+
* Thu Nov 02 2023 Philip Matura <pfed(a)tura-home.de> - 9.2.6-10
- Move API docs to separate doc sub-package (bz#2247327)
commit 54bf13eec1a65103c407ccb97938350f2f5126cb
Author: Orion Poplawski <orion(a)nwra.com>
Date: Wed Nov 1 19:48:44 2023 -0600
No openmpi on i668 with openmpi 5 in Fedora 40+
diff --git a/vtk.spec b/vtk.spec
index 6893d62..1b1a70d 100644
--- a/vtk.spec
+++ b/vtk.spec
@@ -19,8 +19,17 @@
%bcond_with openmpi
%else
%bcond_without mpich
+# No openmpi on i668 with openmpi 5 in Fedora 40+
+%if 0%{?fedora} >= 40
+%ifarch %{ix86}
+%bcond_with openmpi
+%else
+%bcond_without openmpi
+%endif
+%else
%bcond_without openmpi
%endif
+%endif
# s390x on EL8 does not have xorg-x11-drv-dummy
%if 0%{?rhel}
%ifarch s390x
3 days, 4 hours
Architecture specific change in rpms/objfw.git
by githook-noreply@fedoraproject.org
The package rpms/objfw.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/objfw.git/commit/?id=b9d0679fb212....
Change:
-ExcludeArch: ppc64le
Thanks.
Full change:
============
commit b9d0679fb212f4ec785633e6d2ec5ee4d8c88ac2
Author: Jonathan Schleifer <js(a)nil.im>
Date: Sun Jun 23 14:21:12 2024 +0200
Re-enable ppc64le now that the compiler is fixed
diff --git a/objfw.spec b/objfw.spec
index 6849d80..45450c3 100644
--- a/objfw.spec
+++ b/objfw.spec
@@ -34,9 +34,6 @@ Requires: ofdns%{_isa} = %{version}-%{release}
Requires: ofhash%{_isa} = %{version}-%{release}
Requires: ofhttp%{_isa} = %{version}-%{release}
-# RHBZ#2275090
-ExcludeArch: ppc64le
-
%description
ObjFW is a portable, lightweight framework for the Objective-C language. It
enables you to write an application in Objective-C that will run on any
commit 69ce9c69baaaaa8abe13eebe0d666891bbdee2e6
Merge: 79014b6 5b1e6dd
Author: Jonathan Schleifer <js(a)nil.im>
Date: Sun Jun 23 14:21:03 2024 +0200
Merge branch 'rawhide' into f40
commit 5b1e6ddbc69ab80c706e0221f8c8a03ee7e025a8
Author: Jonathan Schleifer <js(a)nil.im>
Date: Sun Jun 23 14:19:56 2024 +0200
Update to 1.1.4
diff --git a/.gitignore b/.gitignore
index fd93ee3..306a2f1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
/gpgkey-objfw.gpg
-/objfw-1.1.3.tar.gz
-/objfw-1.1.3.tar.gz.sig
+/objfw-1.1.4.tar.gz.sig
+/objfw-1.1.4.tar.gz
diff --git a/objfw.spec b/objfw.spec
index 469bbe7..45450c3 100644
--- a/objfw.spec
+++ b/objfw.spec
@@ -3,7 +3,7 @@
%global _lto_cflags %nil
Name: objfw
-Version: 1.1.3
+Version: 1.1.4
Release: 1%{?dist}
Summary: Portable, lightweight framework for the Objective-C language
diff --git a/sources b/sources
index b16fc0c..3dd31a6 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
SHA512 (gpgkey-objfw.gpg) = 7357ebdcccef0da7e9ad32a11ef060eac8fc76a66df318ca3ec6c0819aad78a93fb0e95724fbc361f5645e17f897845f879a535116e89323a2441f275549cade
-SHA512 (objfw-1.1.3.tar.gz) = c5372451f02ad7a8c1090a9ab9a8df8d106dbc789f2e9857b0543317d5be2f3f321c70ce55ac7179333134e31b24be4e2810a6a4024274ae72def882b63f5132
-SHA512 (objfw-1.1.3.tar.gz.sig) = 179eef19e80ba4b90068585e6d74961e24d5dbc0fef2901f70e603f49a65ac584e9a3bc2f44ba2f9ee6e4fcb3fe3783523b12f7582a3d95f4fc3bcf823a776ea
+SHA512 (objfw-1.1.4.tar.gz.sig) = 5f0440a6cc71ccc93c41c588f64714c887b7c58135338b2b80da8c353af07ec836bffc77b2ec73b8c6c857d2eb5992ef4342af217c37d8fdf17006b65aae121a
+SHA512 (objfw-1.1.4.tar.gz) = 5fdb774c27c43a048efd30de710947c41fb589995b8c0f988f272cffbee8babf390de65144bac852ba03351e6552f9592322ae7f6e35038a7c10272129268f30
3 days, 5 hours
[Report] Packages Restricting Arches
by root
New package excluding arches (1)
============================
- python-distributed
ExcludeArch: %{ix86}
List of packages currently excluding arches (2261)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- 389-ds-base
ExcludeArch: i686
- 4ti2
ExcludeArch: %{ix86}
- 90-Second-Portraits
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le riscv64
- AcetoneISO
ExcludeArch: ppc %{power64} s390x
- Agda
ExcludeArch: %{ix86} armv7hl
- Agda-stdlib
ExcludeArch: armv7hl %{ix86}
- BareBonesBrowserLaunch
ExclusiveArch: %{java_arches} noarch
- CFR
ExclusiveArch: %{java_arches} noarch
- COPASI
ExcludeArch: %{ix86}
- CardManager
ExclusiveArch: %{java_arches} noarch
- CuraEngine
ExcludeArch: %{ix86}
- E
ExcludeArch: %{ix86}
- GAPDoc
ExcludeArch: %{ix86}
- GoldenCheetah
ExclusiveArch: %{qt5_qtwebengine_arches}
- GtkAda
ExclusiveArch: %{GPRbuild_arches}
- GtkAda3
ExclusiveArch: %{GPRbuild_arches}
- HPCombi
ExclusiveArch: x86_64 %{arm64}
- IPAddress
ExclusiveArch: %{java_arches} noarch
- IQmol
ExcludeArch: %{ix86}
- JUnitParams
ExclusiveArch: %{java_arches} noarch
- L-function
ExcludeArch: %{ix86}
- LabPlot
ExcludeArch: sparc64 s390 s390x
- MUSIC
ExcludeArch: %{ix86}
- Macaulay2
ExcludeArch: %{ix86} ppc64le
- Maelstrom
ExcludeArch: %{ix86}
- Mars
ExclusiveArch: %{java_arches} noarch
- NiaAML-GUI
ExcludeArch: %{ix86}
- OpenColorIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenImageIO
ExcludeArch: i686
ExclusiveArch: x86_64 ppc64le
- OpenMolcas
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- OpenStego
ExclusiveArch: %{java_arches} noarch
- Pencil2D
ExcludeArch: %{ix86}
- PragmARC
ExclusiveArch: %{GPRbuild_arches}
- ProDy
ExcludeArch: ppc64 s390x
- R-IRkernel
ExcludeArch: %{ix86}
- R-V8
ExclusiveArch: %{nodejs_arches}
- R-ape
ExcludeArch: %{ix86}
- R-igraph
ExcludeArch: %{ix86}
- R-kernlab
ExcludeArch: %{ix86} s390x
- R-rJava
ExclusiveArch: %{java_arches}
- Random123
ExcludeArch: mips64r2 mips32r2 s390
- RdRand
ExclusiveArch: %{ix86} x86_64
- RediSearch
ExclusiveArch: x86_64
- SLOF
ExclusiveArch: ppc64le
- Singular
ExcludeArch: %{ix86}
- TOPCOM
ExcludeArch: %{ix86}
- VulkanMemoryAllocator
ExcludeArch: %{ix86}
- WoeUSB
ExcludeArch: s390x
- YafaRay
ExclusiveArch: %{ix86} x86_64
- Zim
ExcludeArch: %{ix86}
- aardvark-dns
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- abiword
ExcludeArch: %{ix86}
- abrt-java-connector
ExcludeArch: %{ix86}
- accel-config
ExclusiveArch: %{ix86} x86_64
- acpica-tools
ExcludeArch: i686 armv7hl
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64 riscv64
- act
ExcludeArch: %{ix86}
- admeshgui
ExcludeArch: %{ix86}
- aemu
ExcludeArch: %{ix86} %{power64} s390x
- agenda
ExcludeArch: %{ix86}
- ahven
ExclusiveArch: %{GPRbuild_arches}
- algobox
ExclusiveArch: %{qt5_qtwebengine_arches}
- alienarena
ExcludeArch: s390x
- alizams
ExcludeArch: %{power64} %{ix86} s390x
- alt-ergo
ExcludeArch: %{ix86}
- american-fuzzy-lop
ExclusiveArch: x86_64
- amg4psblas
ExcludeArch: %{ix86}
- android-tools
ExcludeArch: ppc ppc64 s390x ppc64le
- anet
ExclusiveArch: %{GPRbuild_arches}
- ansible-collection-microsoft-sql
ExcludeArch: i686
- ant
ExclusiveArch: %{java_arches} noarch
- ant-antunit
ExclusiveArch: %{java_arches} noarch
- ant-contrib
ExclusiveArch: %{java_arches} noarch
- antlr
ExclusiveArch: %{java_arches}
- antlr3
ExclusiveArch: %{java_arches}
- antlr4-project
ExclusiveArch: %{java_arches}
- antlrworks
ExclusiveArch: %{java_arches} noarch
- aopalliance
ExclusiveArch: %{java_arches} noarch
- apache-commons-beanutils
ExclusiveArch: %{java_arches} noarch
- apache-commons-cli
ExclusiveArch: %{java_arches} noarch
- apache-commons-codec
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections
ExclusiveArch: %{java_arches} noarch
- apache-commons-collections4
ExclusiveArch: %{java_arches} noarch
- apache-commons-compress
ExclusiveArch: %{java_arches} noarch
- apache-commons-configuration
ExclusiveArch: %{java_arches} noarch
- apache-commons-digester
ExclusiveArch: %{java_arches} noarch
- apache-commons-exec
ExclusiveArch: %{java_arches} noarch
- apache-commons-io
ExclusiveArch: %{java_arches} noarch
- apache-commons-jexl
ExclusiveArch: %{java_arches} noarch
- apache-commons-jxpath
ExclusiveArch: %{java_arches} noarch
- apache-commons-lang3
ExclusiveArch: %{java_arches} noarch
- apache-commons-logging
ExclusiveArch: %{java_arches} noarch
- apache-commons-math
ExclusiveArch: %{java_arches} noarch
- apache-commons-modeler
ExclusiveArch: %{java_arches} noarch
- apache-commons-net
ExclusiveArch: %{java_arches} noarch
- apache-commons-parent
ExclusiveArch: %{java_arches} noarch
- apache-commons-pool
ExclusiveArch: %{java_arches} noarch
- apache-commons-vfs
ExclusiveArch: %{java_arches} noarch
- apache-ivy
ExclusiveArch: %{java_arches} noarch
- apache-logging-parent
ExclusiveArch: %{java_arches} noarch
- apache-parent
ExclusiveArch: %{java_arches} noarch
- apache-resource-bundles
ExclusiveArch: %{java_arches} noarch
- apache-sshd
ExclusiveArch: %{java_arches} noarch
- apiguardian
ExclusiveArch: %{java_arches} noarch
- apmd
ExclusiveArch: %{ix86}
- appeditor
ExcludeArch: %{ix86}
- appstream-generator
ExclusiveArch: %{ldc_arches}
- apricots
ExcludeArch: ppc64le aarch64
- apron
ExcludeArch: %{ix86}
- aqute-bnd
ExclusiveArch: %{java_arches} noarch
- arbor
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- arc-theme
ExcludeArch: %{ix86}
- args4j
ExclusiveArch: %{java_arches} noarch
- arianna
ExclusiveArch: %{qt6_qtwebengine_arches}
- arm-none-eabi-binutils-cs
ExcludeArch: %{ix86}
- arm-none-eabi-gcc-cs
ExcludeArch: %{ix86}
- arpwatch
ExcludeArch: %{ix86}
- asahi-installer
ExcludeArch: s390x
- asdcplib
ExcludeArch: %{ix86} %{arm}
- asmjit
ExclusiveArch: aarch64 x86_64
- assertj-core
ExclusiveArch: %{java_arches} noarch
- astromenace
ExcludeArch: ppc64 s390x
- astrometry-tycho2
ExcludeArch: s390x
- asv
ExcludeArch: %{ix86}
- atinject
ExclusiveArch: %{java_arches} noarch
- atlantik
ExcludeArch: %{ix86}
- atomic-queue
ExcludeArch: %{ix86}
- aubit4gl
ExcludeArch: i686 s390x ppc64le
- audacity
ExcludeArch: %{ix86} s390x
- audiocd-kio
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- aunit
ExclusiveArch: %{GPRbuild_arches}
- auryn
ExcludeArch: %{ix86}
- auto
ExclusiveArch: %{java_arches} noarch
- autolink-java
ExclusiveArch: noarch %{java_arches}
- avgtime
ExclusiveArch: %{ldc_arches}
- avr-gcc
ExcludeArch: %{ix86}
- aws
ExclusiveArch: %GPRbuild_arches
- aws-c-cal
ExcludeArch: s390x
- aws-c-common
ExcludeArch: s390x
- aws-c-compression
ExcludeArch: s390x
- aws-c-io
ExcludeArch: %{ix86}
ExcludeArch: s390x
- aws-c-sdkutils
ExcludeArch: s390x
- aws-checksums
ExcludeArch: s390x
- awscli2
ExcludeArch: s390x
- azove
ExcludeArch: %{ix86}
- azure-cli
ExclusiveArch: %{java_arches} noarch
- batik
ExclusiveArch: %{java_arches} noarch
- bcal
ExclusiveArch: x86_64 aarch64 ia64 ppc64 ppc64le s390x riscv64
- bcc
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl riscv64
- bcel
ExclusiveArch: %{java_arches} noarch
- bcftools
ExcludeArch: s390x
- bcm283x-firmware
ExclusiveArch: aarch64
- beansbinding
ExclusiveArch: %{java_arches} noarch
- bear
ExcludeArch: %{ix86}
- bear-factory
ExcludeArch: ppc64le
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{mips} riscv64
- beust-jcommander
ExclusiveArch: %{java_arches} noarch
- bibletime
ExclusiveArch: %{java_arches}
- bigloo
ExcludeArch: %{ix86}
- binaryen
ExcludeArch: ppc64 s390x
- binutils
ExcludeArch: aarch64-linux-gnu aarch64-redhat-linux
ExcludeArch: ppc64le-linux-gnu ppc64le-redhat-linux
ExcludeArch: s390x-linux-gnu s390x-redhat-linux
ExcludeArch: x86_64-linux-gnu x86_64-redhat-linux i686-linux-gnu i686-redhat-linux
- biosdevname
ExclusiveArch: %{ix86} x86_64
- biosig4c++
ExcludeArch: %{ix86}
- blake3
ExcludeArch: %{ix86}
- blender
ExcludeArch: %{ix86} %{arm}
- bless
ExclusiveArch: %mono_arches
- bliss
ExcludeArch: %{ix86}
- blueprint-compiler
ExcludeArch: s390x
- bluez-hcidump
ExcludeArch: s390 s390x
- bochs
ExcludeArch: s390x i686
- bodhi-server
ExclusiveArch: %{golang_arches_future}
- boinc-client
ExcludeArch: s390x
- bolzplatz2006
ExclusiveArch: %{java_arches}
- bootc
ExcludeArch: %{ix86}
- bottles
ExcludeArch: s390x
- bouncycastle
ExclusiveArch: %{java_arches} noarch
- bout++
ExcludeArch: %{ix86}
- bowtie
ExcludeArch: i686 armv7hl
- bowtie2
ExcludeArch: %{ix86} %{arm} s390x
- box64
ExclusiveArch: aarch64 riscv64 ppc64le x86_64
- boxes
ExcludeArch: %{ix86}
- bpftrace
ExclusiveArch: x86_64 %{power64} aarch64 s390x
- brazil
ExclusiveArch: %{java_arches} noarch
- breakid
ExcludeArch: %{ix86}
- brewtarget
ExcludeArch: %{ix86}
- brial
ExcludeArch: %{ix86}
- bsf
ExclusiveArch: %{java_arches} noarch
- bsh
ExclusiveArch: %{java_arches} noarch
- build-helper-maven-plugin
ExclusiveArch: %{java_arches} noarch
- buildah
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- busybox
ExcludeArch: i686 s390x
- bwping
ExcludeArch: %{ix86}
- byebyebios
ExclusiveArch: x86_64
- byte-buddy
ExclusiveArch: %{java_arches} noarch
- byteman
ExclusiveArch: %{java_arches} noarch
- cachelib
ExclusiveArch: x86_64 aarch64 ppc64le
- caddy
ExclusiveArch: %{golang_arches}
ExclusiveArch: %{golang_arches_future}
- cadical
ExcludeArch: %{ix86}
- caffe
ExclusiveArch: x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64 aarch64 riscv64
- calceph
ExcludeArch: %{ix86}
- calibre
ExclusiveArch: aarch64 x86_64
- calligra
ExcludeArch: %{ix86}
- cambozola
ExclusiveArch: %{java_arches} noarch
- canl-java
ExclusiveArch: %{java_arches} noarch
- cantera
ExcludeArch: %{ix86}
- carat
ExcludeArch: %{ix86}
- casc
ExcludeArch: %{ix86}
- cataclysm-dda
ExcludeArch: i686
- catatonit
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- ccdciel
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- ccluster
ExcludeArch: %{ix86}
- cdcollect
ExclusiveArch: %{mono_arches}
- cdi-api
ExclusiveArch: %{java_arches} noarch
- cdrdao
ExcludeArch: s390 s390x
- ceph
ExcludeArch: i686 armv7hl
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- ceres-solver
ExcludeArch: ppc64
- cfn-lint
ExcludeArch: %{ix86}
- cglib
ExclusiveArch: %{java_arches} noarch
- cgreen
ExcludeArch: s390x
- chatterino2
ExcludeArch: %{ix86}
- chatty
ExcludeArch: i686
- checkpointctl
ExclusiveArch: %{golang_arches_future}
- chromium
ExclusiveArch: x86_64
ExclusiveArch: x86_64 aarch64 ppc64le
ExclusiveArch: x86_64 aarch64
- cinnamon
ExcludeArch: %{ix86}
- cinnamon-control-center
ExcludeArch: %{ix86}
- cinnamon-desktop
ExcludeArch: %{ix86}
- cinnamon-menus
ExcludeArch: %{ix86}
- cinnamon-screensaver
ExcludeArch: %{ix86}
- cinnamon-session
ExcludeArch: %{ix86}
- cinnamon-settings-daemon
ExcludeArch: %{ix86}
- cjdns
ExclusiveArch: %{nodejs_arches}
- cjs
ExcludeArch: %{ix86}
- classloader-leak-test-framework
ExclusiveArch: %{java_arches} noarch
- classpathless-compiler
ExclusiveArch: %{java_arches} noarch
- cld2
ExcludeArch: ppc64 s390x
- clibs-list
ExcludeArch: %{ix86}
- clojure
ExclusiveArch: %{java_arches} noarch
- clojure-core-specs-alpha
ExclusiveArch: %{java_arches} noarch
- clojure-maven-plugin
ExclusiveArch: %{java_arches} noarch
- clojure-spec-alpha
ExclusiveArch: %{java_arches} noarch
- cloudcompare
ExcludeArch: %{ix86}
- clover2
ExcludeArch: armv7hl
- cmospwd
ExclusiveArch: %{ix86} x86_64
- cmrt
ExclusiveArch: %{ix86} x86_64 ia64
- coan
ExcludeArch: ppc64 s390x
- coccinelle
ExcludeArch: %{ix86}
- cockpit
ExcludeArch: %{ix86}
- cockpit-files
ExclusiveArch: %{nodejs_arches} noarch
- cocoalib
ExcludeArch: %{ix86}
- codeblocks
ExcludeArch: %{ix86}
- codehaus-parent
ExclusiveArch: %{java_arches} noarch
- cohomCalg
ExcludeArch: %{ix86}
- coin-or-Alps
ExcludeArch: %{ix86}
- coin-or-Bcp
ExcludeArch: %{ix86}
- coin-or-Bcps
ExcludeArch: %{ix86}
- coin-or-Blis
ExcludeArch: %{ix86}
- coin-or-Bonmin
ExcludeArch: %{ix86}
- coin-or-CoinMP
ExcludeArch: %{ix86}
- coin-or-Couenne
ExcludeArch: %{ix86}
- coin-or-Dip
ExcludeArch: %{ix86}
- coin-or-FlopC++
ExcludeArch: %{ix86}
- coin-or-HiGHS
ExcludeArch: %{ix86}
- coin-or-Ipopt
ExcludeArch: %{ix86}
- coin-or-OS
ExcludeArch: %{ix86}
- coin-or-SYMPHONY
ExcludeArch: %{ix86}
- coin-or-lemon
ExcludeArch: %{ix86}
- colorful
ExclusiveArch: %{fpc_arches}
- colossus
ExclusiveArch: %{java_arches} noarch
- compiz-plugins-experimental
ExcludeArch: s390 s390x
- conmon
ExclusiveArch: %{golang_arches_future}
- console-image-viewer
ExclusiveArch: %{java_arches} noarch
- containernetworking-plugins
ExclusiveArch: %{golang_arches}
- containers-common
ExclusiveArch: %{golang_arches} noarch
- contour-terminal
ExclusiveArch: x86_64 aarch64
- contractor
ExcludeArch: %{ix86}
- conu
ExcludeArch: ppc64
- coolreader
ExcludeArch: %{ix86}
- coq
ExclusiveArch: %{ocaml_native_compiler}
- corectrl
ExcludeArch: %{ix86}
- cortado
ExclusiveArch: %{java_arches} noarch
- cosmic-comp
ExcludeArch: %{ix86}
- coxeter
ExcludeArch: %{ix86}
- cp2k
ExcludeArch: s390x
- cpp-hocon
ExcludeArch: %{ix86}
- cpu-x
ExclusiveArch: i686 x86_64
- cpufetch
ExclusiveArch: %{arm} aarch64 x86_64 ppc ppc64 ppc64le
- cpuid
ExclusiveArch: %{ix86} x86_64
- cpuinfo
ExclusiveArch: x86_64 aarch64
- cqrlog
ExclusiveArch: %{fpc_arches}
- cramjam-cli
ExcludeArch: %{ix86}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- crash-gcore-command
ExclusiveArch: aarch64 ppc64le x86_64
- crash-trace-command
ExclusiveArch: aarch64 ppc64le s390x x86_64
- credentials-fetcher
ExclusiveArch: x86_64 aarch64 s390x
- crest
ExcludeArch: s390x
- cri-o
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- cri-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- crun
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le riscv64 s390x x86_64
- cryfs
ExcludeArch: i686
- cryptlib
ExclusiveArch: x86_64 aarch64 ppc64le
- crypto-policies
ExclusiveArch: %{java_arches} noarch
- cryptobone
ExclusiveArch: x86_64 ppc64le aarch64
- cryptominisat
ExcludeArch: %{ix86}
- csdp
ExcludeArch: %{ix86}
- csslint
ExclusiveArch: %{nodejs_arches} noarch
- cura
ExcludeArch: %{ix86}
- cura-fdm-materials
ExcludeArch: %{ix86}
- cvc5
ExcludeArch: %{ix86}
- cxsc
ExcludeArch: %{ix86}
- daggy
ExcludeArch: s390x
- dapl
ExcludeArch: s390, armv7hl
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExcludeArch: armv7hl i686 s390x
- dbus-parsec
ExcludeArch: ppc64le s390x
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- ddccontrol
ExcludeArch: s390 s390x
- ddcutil
ExcludeArch: s390 s390x
- ddd
ExcludeArch: %{ix86}
- ddnet
ExcludeArch: s390x
- decentxml
ExclusiveArch: %{java_arches} noarch
- deepin-daemon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- deepin-desktop-schemas
ExclusiveArch: %{go_arches}
- dhall
ExcludeArch: %{ix86}
- dhall-json
ExcludeArch: %{ix86}
- dialect
ExcludeArch: s390x
- diffoscope
ExcludeArch: %{ix86}
- dippi
ExcludeArch: %{ix86}
- directory-maven-plugin
ExclusiveArch: %{java_arches} noarch
- dirgra
ExclusiveArch: %{java_arches} noarch
- disruptor
ExclusiveArch: %{java_arches} noarch
- ditaa
ExclusiveArch: %{java_arches} noarch
- dl_poly
ExcludeArch: i686
- dlib
ExcludeArch: %{ix86} s390x
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: x86_64
- dnsdist
ExcludeArch: %{ix86} #1994125
ExcludeArch: armv7hl #1994125
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dogtag-pki
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- dolfin
ExcludeArch: %{ix86}
- dolphin-emu
ExclusiveArch: x86_64 aarch64
- dom4j
ExclusiveArch: %{java_arches} noarch
- dosbox-staging
ExcludeArch: %{ix86}
- dotnet6.0
ExclusiveArch: aarch64 x86_64 s390x
ExclusiveArch: x86_64
- dotnet8.0
ExclusiveArch: aarch64 ppc64le s390x x86_64
- doublecmd
ExclusiveArch: %{ix86} x86_64
- dovecot
ExcludeArch: %{ix86}
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dragonbox
ExcludeArch: %{ix86}
- drat-trim
ExcludeArch: %{ix86}
- drat2er
ExcludeArch: %{ix86}
- dub
ExclusiveArch: %{ldc_arches}
- duperemove
ExcludeArch: %{ix86}
- dvdauthor
ExcludeArch: %{ix86}
- dvgrab
ExcludeArch: s390 s390x
- dxvk-native
ExclusiveArch: %{ix86} x86_64
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc64le aarch64
- e-antic
ExcludeArch: %{ix86}
- e00compr
ExcludeArch: %{ix86}
- e3
ExclusiveArch: %{ix86} x86_64
- easymock
ExclusiveArch: %{java_arches} noarch
- eccodes
ExcludeArch: i686
- ecj
ExclusiveArch: %{java_arches} noarch
- eclib
ExcludeArch: %{ix86}
- eclipse-swt
ExclusiveArch: %{java_arches}
- ecryptfs-utils
ExcludeArch: %{ix86}
- ed25519-java
ExclusiveArch: %{java_arches} noarch
- edac-utils
ExcludeArch: %{ix86}
- edflib
ExcludeArch: s390x %{ix86}
- edk2
ExclusiveArch: x86_64 aarch64 riscv64
- edwin-fonts
ExcludeArch: %{ix86}
- eegdev
ExcludeArch: %{ix86}
- eegview
ExcludeArch: %{ix86}
- efax
ExcludeArch: s390 s390x
- efibootmgr
ExclusiveArch: %{efi}
- efifs
ExclusiveArch: %{efi}
- efitools
ExclusiveArch: %{efi}
- efivar
ExclusiveArch: %{efi}
- electron-cash
ExcludeArch: %{ix86}
- electrum
ExcludeArch: %{ix86}
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 aarch64 %{arm} %{power64}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- emacs-common-proofgeneral
ExcludeArch: %{ix86}
- emacs-company-mode
ExcludeArch: %{ix86}
- emacs-iedit
ExcludeArch: %{ix86}
- emacs-slime
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- embree
ExclusiveArch: aarch64 x86_64
- embree3
ExclusiveArch: aarch64 x86_64
- enjarify
ExclusiveArch: %{java_arches} noarch
- enki
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- eot-utils
ExcludeArch: %{ix86}
- ergo
ExcludeArch: %{ix86}
- eric
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- erlang-corba
ExclusiveArch: %{java_arches}
- erlang-riak_ensemble
ExcludeArch: ppc64le
- esmi_ib_library
ExclusiveArch: x86_64
- espresso
ExcludeArch: s390x i686 armv7hl
- eth-tools
ExclusiveArch: x86_64
- exec-maven-plugin
ExclusiveArch: %{java_arches} noarch
- external-editor-revived
ExclusiveArch: %{rust_arches}
- extra-enforcer-rules
ExclusiveArch: %{java_arches} noarch
- f3d
ExcludeArch: %{ix86}
- fasterxml-oss-parent
ExclusiveArch: %{java_arches} noarch
- fb303
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fbreader
ExcludeArch: %{ix86}
ExcludeArch: armv7hl
- fbthrift
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fcitx5-mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- fcoe-utils
ExcludeArch: ppc s390
ExcludeArch: %{ix86}
- felix-parent
ExclusiveArch: %{java_arches} noarch
- felix-utils
ExclusiveArch: %{java_arches} noarch
- fernflower
ExclusiveArch: %{java_arches} noarch
- fes
ExclusiveArch: %{ix86} x86_64
- fido-device-onboard
ExcludeArch: %{ix86}
- filedrop
ExclusiveArch: %{java_arches} noarch
- filezilla
ExcludeArch: s390x
- firecracker
ExclusiveArch: aarch64 x86_64
- firefox
ExcludeArch: i686
- fishbowl
ExclusiveArch: %{java_arches} noarch
- fizz
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- flang
ExcludeArch: i686 s390x
- flashrom
ExcludeArch: s390 s390x
- flatbuffers
ExcludeArch: %{ix86}
- flatpak
ExcludeArch: %{ix86}
- flatpak-builder
ExcludeArch: %{ix86}
- flatpak-module-tools
ExcludeArch: i386 i686
- flexmark-java
ExclusiveArch: noarch %{java_arches}
- flickcurl
ExcludeArch: %{ix86}
- flint
ExcludeArch: %{ix86}
- flocq
ExclusiveArch: %{ocaml_native_compiler}
- floppy-support
ExcludeArch: %{arm} aarch64 s390x
- florist
ExclusiveArch: %{GPRbuild_arches}
- flterm
ExcludeArch: s390 s390x sparcv9
- fluent-bit
ExclusiveArch: x86_64 aarch64
- flute
ExclusiveArch: %{java_arches} noarch
- fmidi
ExcludeArch: %{ix86}
- folly
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- fop
ExclusiveArch: %{java_arches} noarch
- forge-parent
ExclusiveArch: %{java_arches} noarch
- fotocx
ExcludeArch: %{ix86}
- foxi
ExclusiveArch: x86_64 aarch64
- fpc
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64 ppc64le
- fprintd
ExcludeArch: s390 s390x
- fractal
ExcludeArch: %{ix86}
- fragments
ExcludeArch: %{ix86}
- frama-c
ExclusiveArch: %{ocaml_native_compiler}
- free42
ExcludeArch: %{ix86}
- freecol
ExclusiveArch: %{java_arches} noarch
- freedink
ExcludeArch: s390x
- freedink-dfarc
ExcludeArch: s390x
- freefem++
ExcludeArch: %{ix86}
- freemarker
ExclusiveArch: %{java_arches} noarch
- freerouting
ExclusiveArch: %{java_arches} noarch
- freetennis
ExcludeArch: sparc64 s390 s390x %{ix86}
- frescobaldi
ExclusiveArch: %{qt5_qtwebengine_arches}
- frysk
ExclusiveArch: x86_64 ppc64
- fuse-overlayfs
ExclusiveArch: %{arm64} ppc64le s390x x86_64 riscv64
- fusesource-pom
ExclusiveArch: %{java_arches} noarch
- fwts
ExclusiveArch: x86_64 %{arm} aarch64 s390x riscv64 %{power64}
- fwupd-efi
ExclusiveArch: x86_64 aarch64
- ga
ExcludeArch: %{ix86}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le riscv64
- galera
ExcludeArch: %{ix86}
- gambas3
ExcludeArch: i686
- gap
ExcludeArch: %{ix86}
- gap-pkg-ace
ExcludeArch: %{ix86}
- gap-pkg-aclib
ExcludeArch: %{ix86}
- gap-pkg-alnuth
ExcludeArch: %{ix86}
- gap-pkg-anupq
ExcludeArch: %{ix86}
- gap-pkg-atlasrep
ExcludeArch: %{ix86}
- gap-pkg-autodoc
ExcludeArch: %{ix86}
- gap-pkg-automata
ExcludeArch: %{ix86}
- gap-pkg-autpgrp
ExcludeArch: %{ix86}
- gap-pkg-browse
ExcludeArch: %{ix86}
- gap-pkg-caratinterface
ExcludeArch: %{ix86}
- gap-pkg-circle
ExcludeArch: %{ix86}
- gap-pkg-cohomolo
ExcludeArch: %{ix86}
- gap-pkg-congruence
ExcludeArch: %{ix86}
- gap-pkg-corelg
ExcludeArch: %{ix86}
- gap-pkg-crime
ExcludeArch: %{ix86}
- gap-pkg-crisp
ExcludeArch: %{ix86}
- gap-pkg-crypting
ExcludeArch: %{ix86}
- gap-pkg-cryst
ExcludeArch: %{ix86}
- gap-pkg-crystcat
ExcludeArch: %{ix86}
- gap-pkg-ctbllib
ExcludeArch: %{ix86}
- gap-pkg-curlinterface
ExcludeArch: %{ix86}
- gap-pkg-cvec
ExcludeArch: %{ix86}
- gap-pkg-datastructures
ExcludeArch: %{ix86}
- gap-pkg-design
ExcludeArch: %{ix86}
- gap-pkg-digraphs
ExcludeArch: %{ix86}
- gap-pkg-edim
ExcludeArch: %{ix86}
- gap-pkg-factint
ExcludeArch: %{ix86}
- gap-pkg-ferret
ExcludeArch: %{ix86}
- gap-pkg-fga
ExcludeArch: %{ix86}
- gap-pkg-fining
ExcludeArch: %{ix86}
- gap-pkg-float
ExcludeArch: %{ix86}
- gap-pkg-format
ExcludeArch: %{ix86}
- gap-pkg-forms
ExcludeArch: %{ix86}
- gap-pkg-fplsa
ExcludeArch: %{ix86}
- gap-pkg-fr
ExcludeArch: %{ix86}
- gap-pkg-francy
ExcludeArch: %{ix86}
- gap-pkg-gbnp
ExcludeArch: %{ix86}
- gap-pkg-genss
ExcludeArch: %{ix86}
- gap-pkg-grape
ExcludeArch: %{ix86}
- gap-pkg-groupoids
ExcludeArch: %{ix86}
- gap-pkg-grpconst
ExcludeArch: %{ix86}
- gap-pkg-guava
ExcludeArch: %{ix86}
- gap-pkg-hap
ExcludeArch: %{ix86}
- gap-pkg-hapcryst
ExcludeArch: %{ix86}
- gap-pkg-hecke
ExcludeArch: %{ix86}
- gap-pkg-images
ExcludeArch: %{ix86}
- gap-pkg-io
ExcludeArch: %{ix86}
- gap-pkg-irredsol
ExcludeArch: %{ix86}
- gap-pkg-json
ExcludeArch: %{ix86}
- gap-pkg-jupyterkernel
ExcludeArch: %{ix86}
- gap-pkg-jupyterviz
ExcludeArch: %{ix86}
- gap-pkg-laguna
ExcludeArch: %{ix86}
- gap-pkg-liealgdb
ExcludeArch: %{ix86}
- gap-pkg-liepring
ExcludeArch: %{ix86}
- gap-pkg-liering
ExcludeArch: %{ix86}
- gap-pkg-loops
ExcludeArch: %{ix86}
- gap-pkg-lpres
ExcludeArch: %{ix86}
- gap-pkg-mapclass
ExcludeArch: %{ix86}
- gap-pkg-nautytracesinterface
ExcludeArch: %{ix86}
- gap-pkg-nq
ExcludeArch: %{ix86}
- gap-pkg-openmath
ExcludeArch: %{ix86}
- gap-pkg-orb
ExcludeArch: %{ix86}
- gap-pkg-permut
ExcludeArch: %{ix86}
- gap-pkg-polenta
ExcludeArch: %{ix86}
- gap-pkg-polycyclic
ExcludeArch: %{ix86}
- gap-pkg-polymaking
ExcludeArch: %{ix86}
- gap-pkg-primgrp
ExcludeArch: %{ix86}
- gap-pkg-profiling
ExcludeArch: %{ix86}
- gap-pkg-qpa
ExcludeArch: %{ix86}
- gap-pkg-quagroup
ExcludeArch: %{ix86}
- gap-pkg-radiroot
ExcludeArch: %{ix86}
- gap-pkg-recog
ExcludeArch: %{ix86}
- gap-pkg-repsn
ExcludeArch: %{ix86}
- gap-pkg-resclasses
ExcludeArch: %{ix86}
- gap-pkg-scscp
ExcludeArch: %{ix86}
- gap-pkg-semigroups
ExcludeArch: %{ix86}
- gap-pkg-singular
ExcludeArch: %{ix86}
- gap-pkg-sla
ExcludeArch: %{ix86}
- gap-pkg-smallgrp
ExcludeArch: %{ix86}
- gap-pkg-smallsemi
ExcludeArch: %{ix86}
- gap-pkg-sonata
ExcludeArch: %{ix86}
- gap-pkg-sophus
ExcludeArch: %{ix86}
- gap-pkg-spinsym
ExcludeArch: %{ix86}
- gap-pkg-standardff
ExcludeArch: %{ix86}
- gap-pkg-tomlib
ExcludeArch: %{ix86}
- gap-pkg-toric
ExcludeArch: %{ix86}
- gap-pkg-transgrp
ExcludeArch: %{ix86}
- gap-pkg-utils
ExcludeArch: %{ix86}
- gap-pkg-uuid
ExcludeArch: %{ix86}
- gap-pkg-xmod
ExcludeArch: %{ix86}
- gap-pkg-zeromqinterface
ExcludeArch: %{ix86}
- gappa
ExcludeArch: %{ix86}
- gappalib-coq
ExclusiveArch: %{ocaml_native_compiler}
- gauche
ExcludeArch: armv7hl
- gbrainy
ExclusiveArch: %mono_arches
- gdb-exploitable
ExclusiveArch: x86_64 i386
ExclusiveArch: x86_64 noarch
- gdl
ExcludeArch: %{ix86}
- gearhead1
ExclusiveArch: %{fpc_arches}
- gearhead2
ExclusiveArch: %{fpc_arches}
- gearmand
ExcludeArch: ppc
- geeqie
ExcludeArch: %{ix86}
- getdp
ExcludeArch: %{ix86}
- gfan
ExcludeArch: %{ix86}
- gfs2-utils
ExcludeArch: %{ix86}
- gfxstream
ExcludeArch: %{ix86} %{power64} s390x
- ghc
ExcludeArch: armv7hl
- ghc-cborg
ExcludeArch: %{ix86}
- ghc-cborg-json
ExcludeArch: %{ix86}
- ghc-gi-gtk
ExcludeArch: armv7hl
- ghc-serialise
ExcludeArch: %{ix86}
- ghc9.10
ExcludeArch: armv7hl
- ghc9.2
ExcludeArch: armv7hl
- ghc9.4
ExcludeArch: armv7hl
- ghc9.6
ExcludeArch: armv7hl
- ghdl
ExclusiveArch: %{GNAT_arches}
ExcludeArch: armv7hl %{ix86}
- ghostwriter
ExclusiveArch: %{qt5_qtwebengine_arches}
- gimp-fourier-plugin
ExcludeArch: %{ix86}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- git-lfs
ExcludeArch: %{ix86}
- git-octopus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- gitqlient
ExclusiveArch: %{qt5_qtwebengine_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gkrellm-wifi
ExcludeArch: s390 s390x
- glava
ExcludeArch: %{ix86}
- glibd
ExclusiveArch: %{ldc_arches}
- gloo
ExcludeArch: i686
- glycin-loaders
ExcludeArch: %{ix86}
- gmsh
ExcludeArch: %{ix86}
- gmult
ExcludeArch: %{ix86}
- gn
ExcludeArch: %{ix86}
- gnatcoll
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-bindings
ExclusiveArch: %{GPRbuild_arches}
- gnatcoll-db
ExclusiveArch: %{GPRbuild_arches}
- gnofract4d
ExcludeArch: %{ix86}
- gnome-applets
ExcludeArch: %{ix86}
- gnome-bluetooth
ExcludeArch: s390 s390x
- gnome-bluetooth3.34
ExcludeArch: s390 s390x
- gnome-boxes
ExclusiveArch: x86_64
- gnome-chemistry-utils
ExcludeArch: %{ix86}
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- gnome-flashback
ExcludeArch: %{ix86}
- gnome-hexgl
ExcludeArch: i686
- gnome-initial-setup
ExcludeArch: %{ix86}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-monitor-config
ExcludeArch: %{ix86}
- gnome-panel
ExcludeArch: %{ix86}
- gnome-rdp
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- gnome-session
ExcludeArch: %{ix86}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-shell
ExcludeArch: %{ix86}
- gnome-software
ExcludeArch: %{ix86}
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnome-terminal
ExcludeArch: %{ix86}
- gnu-efi
ExclusiveArch: %{efi}
- gnucash
ExcludeArch: %{ix86}
ExcludeArch: ppc64 s390x
- gnumeric
ExcludeArch: %{ix86}
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- godot
ExcludeArch: s390x
- godot3
ExcludeArch: ppc64 ppc64le s390x
- goffice
ExcludeArch: %{ix86}
- golang
ExclusiveArch: %{golang_arches}
- golang-entgo-ent
ExcludeArch: %{arm32} %{ix86}
- golang-github-ebitengine-purego
ExcludeArch: ppc64le s390x
- golang-github-elliotchance-orderedmap
ExcludeArch: aarch64
ExcludeArch: ppc64le
ExcludeArch: s390x
- golang-github-facebookincubator-nvdtools
ExcludeArch: i686 armv7hl
- golang-github-google-goterm
ExcludeArch: ppc64le s390x
- golang-helm-3
ExcludeArch: armv7hl aarch64
- golang-tinygo-x-llvm
ExcludeArch: %{ix86}
- goldendict-ng
ExclusiveArch: aarch64 x86_64
- google-compute-engine-guest-configs
ExcludeArch: %{ix86}
- google-cpu_features
ExcludeArch: s390x
- google-gson
ExclusiveArch: %{java_arches} noarch
- google-guest-agent
ExcludeArch: ppc64le s390x
- google-guice
ExclusiveArch: %{java_arches} noarch
- google-osconfig-agent
ExcludeArch: ppc64le s390x
- gotcha
ExcludeArch: %{ix86}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gource
ExcludeArch: ppc64le
- goverlay
ExclusiveArch: %{fpc_arches}
- gpaste
ExcludeArch: %{ix86}
- gpaw
ExcludeArch: ppc64
ExcludeArch: %{ix86}
- gperftools
ExcludeArch: s390
- gprbuild
ExclusiveArch: %{GPRbuild_arches}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha aarch64
- gr-air-modes
ExcludeArch: %{ix86}
- grafana
ExclusiveArch: %{grafana_arches}
- grafana-pcp
ExclusiveArch: %{grafanapcp_arches}
- greenboot
ExcludeArch: s390x
- gretl
ExcludeArch: %{ix86}
- gromacs
ExcludeArch: i686 armv7hl s390x
- grub-customizer
ExcludeArch: s390 s390x %{arm}
- grub2
ExcludeArch: s390 s390x %{ix86}
- grub2-breeze-theme
ExcludeArch: s390 s390x %{arm}
- grubby
ExcludeArch: %{ix86}
- gsequencer
ExcludeArch: i686
- gthree
ExcludeArch: i686
- gthumb
ExcludeArch: s390x
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gtkhash
ExcludeArch: %{ix86}
- gtkwave
ExcludeArch: s390x
- guava
ExclusiveArch: %{java_arches} noarch
- gudev-sharp
ExclusiveArch: %mono_arches
- guestfs-tools
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- gvisor-tap-vsock
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- hamcrest
ExclusiveArch: %{java_arches} noarch
- harec
ExclusiveArch: x86_64 aarch64 riscv64
- harmonyseq
ExcludeArch: %{ix86}
- harvey
ExcludeArch: %{ix86}
- hashcat
ExcludeArch: ppc64 s390x
- hawtjni
ExclusiveArch: %{java_arches} noarch
- haxe
ExcludeArch: %{ix86}
- hcloud
ExcludeArch: %{ix86}
- heaptrack
ExcludeArch: s390 s390x
- hedgewars
ExclusiveArch: %{fpc_arches}
ExcludeArch: ppc64le
- helix
ExcludeArch: %{ix86}
- hevea
ExcludeArch: %{ix86}
- hibernate-jpa-2.0-api
ExclusiveArch: %{java_arches} noarch
- hid4java
ExclusiveArch: %{java_arches} noarch
- highfive
ExcludeArch: %{ix86}
- hipblas
ExclusiveArch: x86_64
- hipcub
ExclusiveArch: x86_64
- hipfft
ExclusiveArch: x86_64
- hipify
ExclusiveArch: x86_64
- hiprand
ExclusiveArch: x86_64
- hipsolver
ExclusiveArch: x86_64
- hipsparse
ExclusiveArch: x86_64
- hmmer
ExcludeArch: aarch64 ppc64le s390x
- honggfuzz
ExcludeArch: %{arm} %{power64} s390 s390x
- howl
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- hpx
ExcludeArch: i686
- hsakmt
ExclusiveArch: x86_64 aarch64 ppc64le
- httpcomponents-client
ExclusiveArch: %{java_arches} noarch
- httpcomponents-core
ExclusiveArch: %{java_arches} noarch
- httpcomponents-project
ExclusiveArch: %{java_arches} noarch
- hydrapaper
ExcludeArch: s390x
- hyperhdr
ExcludeArch: %{ix86}
- hyperrogue
ExcludeArch: armv7hl
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64 aarch64
- hyprcursor
ExcludeArch: %{ix86}
- hypridle
ExcludeArch: %{ix86}
- hyprland
ExcludeArch: %{ix86}
- hyprlang
ExcludeArch: %{ix86}
- hyprlock
ExcludeArch: %{ix86}
- hyprpaper
ExcludeArch: %{ix86}
- hyprutils
ExcludeArch: %{ix86}
- hyprwayland-scanner
ExcludeArch: %{ix86}
- i2c-tools
ExcludeArch: s390 s390x
- ibsim
ExcludeArch: s390 %{arm}
- ibus-typing-booster
ExcludeArch: ppc64 s390x
- icecat
ExcludeArch: %{ix86} %{arm}
- icedtea-web
ExclusiveArch: %{java_arches}
- icu4j
ExclusiveArch: %{java_arches} noarch
- ignition
ExcludeArch: %{ix86}
- iir1
ExcludeArch: %{ix86}
- ike-scan
ExcludeArch: %{ix86}
- ilua
ExcludeArch: %{ix86}
- imagej
ExclusiveArch: %{java_arches} noarch
- imhex
ExclusiveArch: x86_64 %{arm64}
- iml
ExcludeArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indi-3rdparty-drivers
ExcludeArch: %{ix86}
- indi-3rdparty-libraries
ExcludeArch: %{ix86}
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cm-compiler
ExclusiveArch: i686 x86_64
- intel-cmt-cat
ExclusiveArch: x86_64
- intel-compute-runtime
ExclusiveArch: x86_64
- intel-gmmlib
ExcludeArch: s390x ppc64le
- intel-igc
ExclusiveArch: x86_64
- intel-ipp-crypto-mb
ExclusiveArch: x86_64
- intel-ipsec-mb
ExclusiveArch: x86_64
- intel-lpmd
ExclusiveArch: x86_64
- intel-media-driver-free
ExclusiveArch: i686 x86_64
- intel-mediasdk
ExclusiveArch: x86_64
- intel-metee
ExclusiveArch: x86_64
- intel-undervolt
ExclusiveArch: i386 x86_64
- intel-vpl-gpu-rt
ExclusiveArch: x86_64
- ioport
ExclusiveArch: %{ix86} x86_64
- ipe
ExcludeArch: %{ix86}
- ipmctl
ExclusiveArch: x86_64
- irda-utils
ExcludeArch: s390 s390x
- irqbalance
ExcludeArch: s390 s390x
- isa-l
ExcludeArch: %{ix86}
- ispc
ExclusiveArch: x86_64 aarch64
- iucode-tool
ExclusiveArch: %{ix86} x86_64
- iyfct
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- jFormatString
ExclusiveArch: %{java_arches} noarch
- jack-mixer
ExcludeArch: armv7hl
ExcludeArch: i686
- jackson-annotations
ExclusiveArch: %{java_arches} noarch
- jackson-bom
ExclusiveArch: %{java_arches} noarch
- jackson-core
ExclusiveArch: %{java_arches} noarch
- jackson-databind
ExclusiveArch: %{java_arches} noarch
- jackson-jaxrs-providers
ExclusiveArch: %{java_arches} noarch
- jackson-modules-base
ExclusiveArch: %{java_arches} noarch
- jackson-parent
ExclusiveArch: %{java_arches} noarch
- jacoco
ExclusiveArch: %{java_arches} noarch
- jacop
ExclusiveArch: %{java_arches} noarch
- jakarta-activation
ExclusiveArch: %{java_arches} noarch
- jakarta-activation1
ExclusiveArch: %{java_arches} noarch
- jakarta-annotations
ExclusiveArch: %{java_arches} noarch
- jakarta-el
ExclusiveArch: %{java_arches} noarch
- jakarta-interceptors
ExclusiveArch: %{java_arches} noarch
- jakarta-json
ExclusiveArch: %{java_arches} noarch
- jakarta-mail
ExclusiveArch: %{java_arches} noarch
- jakarta-mail1
ExclusiveArch: %{java_arches} noarch
- jakarta-oro
ExclusiveArch: %{java_arches} noarch
- jakarta-saaj
ExclusiveArch: %{java_arches} noarch
- jakarta-server-pages
ExclusiveArch: %{java_arches} noarch
- jakarta-servlet
ExclusiveArch: %{java_arches} noarch
- jakarta-xml-ws
ExclusiveArch: %{java_arches} noarch
- janino
ExclusiveArch: %{java_arches} noarch
- jansi
ExclusiveArch: %{java_arches}
- jansi-native
ExclusiveArch: %{java_arches}
- jansi1
ExclusiveArch: %{java_arches} noarch
- java-1.8.0-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-1.8.0-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-11-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-17-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-21-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-diff-utils
ExclusiveArch: %{java_arches} noarch
- java-dirq
ExclusiveArch: %{java_arches} noarch
- java-jd-decompiler
ExclusiveArch: %{java_arches} noarch
- java-latest-openjdk
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-latest-openjdk-portable
ExclusiveArch: %{java_arches}
ExcludeArch: %{ix86}
- java-runtime-decompiler
ExclusiveArch: %{java_arches} noarch
- java-scrypt
ExclusiveArch: %{java_arches} noarch
- java_cup
ExclusiveArch: %{java_arches} noarch
- javacc
ExclusiveArch: %{java_arches} noarch
- javacc-maven-plugin
ExclusiveArch: %{java_arches} noarch
- javaewah
ExclusiveArch: %{java_arches} noarch
- javapackages-bootstrap
ExclusiveArch: %{java_arches}
- javaparser
ExclusiveArch: %{java_arches} noarch
- javapoet
ExclusiveArch: %{java_arches} noarch
- javassist
ExclusiveArch: %{java_arches} noarch
- jaxb
ExclusiveArch: %{java_arches} noarch
- jaxb-api
ExclusiveArch: %{java_arches} noarch
- jaxb-api2
ExclusiveArch: %{java_arches} noarch
- jaxb-dtd-parser
ExclusiveArch: %{java_arches} noarch
- jaxb-fi
ExclusiveArch: %{java_arches} noarch
- jaxb-istack-commons
ExclusiveArch: %{java_arches} noarch
- jaxb-stax-ex
ExclusiveArch: %{java_arches} noarch
- jaxen
ExclusiveArch: %{java_arches} noarch
- jblas
ExcludeArch: %{ix86}
- jboss-jaxrs-2.0-api
ExclusiveArch: %{java_arches} noarch
- jboss-logging
ExclusiveArch: %{java_arches} noarch
- jboss-logging-tools
ExclusiveArch: %{java_arches} noarch
- jboss-parent
ExclusiveArch: %{java_arches} noarch
- jchardet
ExclusiveArch: %{java_arches} noarch
- jcip-annotations
ExclusiveArch: %{java_arches} noarch
- jctools
ExclusiveArch: %{java_arches} noarch
- jcuber
ExclusiveArch: %{java_arches} noarch
- jdeparser
ExclusiveArch: %{java_arches} noarch
- jdepend
ExclusiveArch: %{java_arches} noarch
- jdependency
ExclusiveArch: %{java_arches} noarch
- jdom
ExclusiveArch: %{java_arches} noarch
- jdom2
ExclusiveArch: %{java_arches} noarch
- jedit
ExclusiveArch: %{java_arches} noarch
- jericho-html
ExclusiveArch: %{java_arches} noarch
- jetbrains-annotations
ExclusiveArch: noarch %{java_arches}
- jetty
ExclusiveArch: %{java_arches} noarch
- jflex
ExclusiveArch: %{java_arches} noarch
- jfreechart
ExclusiveArch: %{java_arches} noarch
- jgit
ExclusiveArch: %{java_arches} noarch
- jglobus
ExclusiveArch: %{java_arches} noarch
- jgoodies-common
ExclusiveArch: %{java_arches} noarch
- jgoodies-forms
ExclusiveArch: %{java_arches} noarch
- jgoodies-looks
ExclusiveArch: %{java_arches} noarch
- jigawatts
ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x
- jline
ExclusiveArch: %{java_arches}
- jline2
ExclusiveArch: %{java_arches} noarch
- jmock
ExclusiveArch: %{java_arches} noarch
- jmol
ExclusiveArch: %{java_arches} noarch
- jna
ExclusiveArch: %{java_arches}
- jneuroml-core
ExclusiveArch: %{java_arches} noarch
- jni-inchi
ExclusiveArch: %{java_arches}
- jo
ExcludeArch: %{ix86}
- jol
ExclusiveArch: %{java_arches} noarch
- jopt-simple
ExclusiveArch: %{java_arches} noarch
- jorbis
ExclusiveArch: %{java_arches} noarch
- jowl
ExclusiveArch: %{nodejs_arches} noarch
- jpanoramamaker
ExclusiveArch: %{java_arches} noarch
- jpilot
ExcludeArch: s390, s390x
- jpilot-backup
ExcludeArch: s390 s390x
- jsch
ExclusiveArch: %{java_arches} noarch
- jsch-agent-proxy
ExclusiveArch: %{java_arches} noarch
- json_simple
ExclusiveArch: %{java_arches} noarch
- jsoup
ExclusiveArch: %{java_arches} noarch
- jsr-305
ExclusiveArch: %{java_arches} noarch
- jss
ExclusiveArch: %{java_arches}
ExcludeArch: i686
- jssc
ExclusiveArch: %{java_arches}
- jtidy
ExclusiveArch: %{java_arches} noarch
- julia
ExclusiveArch: x86_64
- junit
ExclusiveArch: %{java_arches} noarch
- junit5
ExclusiveArch: %{java_arches} noarch
- juniversalchardet
ExclusiveArch: %{java_arches} noarch
- jzlib
ExclusiveArch: %{java_arches} noarch
- kaffeine
ExcludeArch: %{ix86}
- kaidan
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- kata-containers
ExcludeArch: %{arm} %{ix86} s390 s390x
ExcludeArch: ppc64le
- kawa
ExcludeArch: i686
- kchmviewer
ExclusiveArch: %{qt5_qtwebengine_arches}
- kcm_wacomtablet
ExcludeArch: s390 s390x
- kcov
ExcludeArch: s390 s390x
- kdenlive
ExcludeArch: %{ix86}
- keepass
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- keepassxc
ExcludeArch: s390x
- kernel
ExclusiveArch: noarch x86_64 s390x aarch64 ppc64le
ExclusiveArch: noarch i386 i686 x86_64 s390x aarch64 ppc64le
- kernelshark
ExcludeArch: %{ix86} %{arm}
- keydb
ExcludeArch: %{ix86}
- keylime-agent-rust
ExclusiveArch: %{rust_arches}
- kf5-akonadi-search
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kblog
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarcore
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kcalendarutils
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-kitinerary
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-ktnef
ExclusiveArch: x86_64 ppc64le aarch64 %{arm}
- kf5-libkdcraw
ExclusiveArch: x86_64 ppc64le %{arm}
- khelpcenter
ExclusiveArch: %{qt6_qtwebengine_arches}
- kicad
ExclusiveArch: x86_64 aarch64 ppc64le
- kissat
ExcludeArch: %{ix86}
- kitty
ExcludeArch: %{ix86}
- kiwix-desktop
ExclusiveArch: %{qt5_qtwebengine_arches}
- knot-resolver
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kokkos
ExcludeArch: i686 armv7hl
- kpilot
ExcludeArch: s390 s390x
- krita
ExcludeArch: %{ix86}
- ksensors
ExcludeArch: s390 s390x
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x %{arm}
- ladspa-autotalent-plugins
ExcludeArch: %{ix86}
- laf-plugin
ExclusiveArch: %{java_arches} noarch
- latte-integrale
ExcludeArch: %{ix86}
- lazarus
ExclusiveArch: %{fpc_arches}
- lazpaint
ExclusiveArch: %{fpc_arches}
- lcd4linux
ExcludeArch: s390 s390x
- ldapjdk
ExclusiveArch: %{java_arches} noarch
- ldc
ExclusiveArch: %{ldc_arches} ppc64le
- ledmon
ExcludeArch: %{ix86}
- leland-fonts
ExcludeArch: %{ix86}
- lfortran
ExclusiveArch: x86_64
- lfsc
ExcludeArch: %{ix86}
- lib3mf
ExcludeArch: %{ix86}
- libCombine
ExcludeArch: %{ix86}
- libaiff
ExcludeArch: %{ix86}
- libarcus
ExcludeArch: %{ix86}
- libarrow
ExcludeArch: %{ix86} %{arm}
- libavc1394
ExcludeArch: s390 s390x
- libbase
ExclusiveArch: %{java_arches} noarch
- libcamera
ExcludeArch: s390x ppc64le
- libcamera-apps
ExcludeArch: %{power64} s390x
- libcint
ExcludeArch: %{power64}
ExcludeArch: x86_64
- libcircle
ExcludeArch: %{ix86}
- libcpuid
ExcludeArch: aarch64 %arm ppc64le ppc64 s390x
- libcrystalhd
ExcludeArch: s390 s390x
- libcxx
ExcludeArch: ppc64 ppc64le
- libdc1394
ExcludeArch: s390 s390x
- libdfp
ExclusiveArch: ppc ppc64 ppc64le s390 s390x x86_64
- libdigidocpp
ExcludeArch: %{ix86}
- libdispatch
ExclusiveArch: x86_64 aarch64 ppc64le
- libffado
ExcludeArch: s390 s390x
- libfilezilla
ExcludeArch: s390x
- libfonts
ExclusiveArch: %{java_arches} noarch
- libformula
ExclusiveArch: %{java_arches} noarch
- libfprint
ExcludeArch: s390 s390x
- libguestfs
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- libhomfly
ExcludeArch: %{ix86}
- libibcommon
ExcludeArch: s390 s390x
- libica
ExclusiveArch: s390 s390x
- libiec61883
ExcludeArch: s390 s390x
- libinsane
ExcludeArch: %{ix86}
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libkrun
ExclusiveArch: x86_64 aarch64
- libkrunfw
ExclusiveArch: x86_64 aarch64
- liblayout
ExclusiveArch: %{java_arches} noarch
- libldac
ExcludeArch: s390x
- libloader
ExclusiveArch: %{java_arches} noarch
- libnuml
ExcludeArch: %{ix86}
- libnxz
ExclusiveArch: ppc64le
- libobjc2
ExcludeArch: armv7hl i686 ppc64le s390x
- libocxl
ExclusiveArch: ppc64le
- libomp17
ExcludeArch: s390x
- libopenshot
ExcludeArch: ppc64le
- libopenshot-audio
ExcludeArch: ppc64le
- liborc
ExcludeArch: i686 armv7hl
- libpoly
ExcludeArch: %{ix86}
- libpsm2
ExclusiveArch: x86_64
- libquentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- libraw1394
ExcludeArch: s390 s390x
- libreoffice
ExcludeArch: %{ix86}
- libreoffice-TexMaths
ExclusiveArch: %{java_arches}
ExcludeArch: aarch64 s390x
- librepository
ExclusiveArch: %{java_arches} noarch
- libretro-desmume2015
ExclusiveArch: i686 x86_64
- libretro-pcsx-rearmed
ExcludeArch: armv7hl
- librtas
ExclusiveArch: %{power64}
- libsavitar
ExcludeArch: %{ix86}
- libsedml
ExcludeArch: %{ix86}
- libsemigroups
ExcludeArch: %{ix86}
- libserializer
ExclusiveArch: %{java_arches} noarch
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 %{ix86}
- libsonata
ExcludeArch: %{ix86}
- libstoragemgmt
ExcludeArch: %{ix86}
- libtracecmd
ExcludeArch: %{ix86} %{arm}
- libunibreak
ExcludeArch: %{ix86}
- libunicode
ExclusiveArch: x86_64 aarch64
- libunifex
ExcludeArch: i686
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} s390x %{ix86} x86_64 riscv64
- libva-intel-hybrid-driver
ExclusiveArch: %{ix86} x86_64 ia64
- libva-nvidia-driver
ExclusiveArch: %{x86_64} %{ix86} %{arm64} ppc64le
- libvirt-java
ExclusiveArch: %{java_arches} noarch
- libvma
ExclusiveArch: x86_64 ppc64le ppc64 aarch64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: %{power64}
- libvpl
ExclusiveArch: x86_64
- libvpl-tools
ExclusiveArch: x86_64
- libx86
ExcludeArch: ppc %{power64} s390 s390x %{sparc} aarch64 armv7hl
- libxsmm
ExclusiveArch: x86_64
- libzdnn
ExclusiveArch: s390x
- libzfcphbaapi
ExclusiveArch: s390 s390x
- libzpc
ExclusiveArch: s390x
- liferea
ExcludeArch: %{ix86}
- linbox
ExcludeArch: %{ix86}
- linux-system-roles
ExcludeArch: i686
- liquidctl
ExcludeArch: s390 s390x
- lite-xl
ExcludeArch: %{ix86}
- llama-cpp
ExclusiveArch: x86_64 aarch64
- lld13
ExcludeArch: s390x
- lld15
ExcludeArch: s390x
- lld16
ExcludeArch: s390x
- lld17
ExcludeArch: s390x
- llhttp
ExclusiveArch: %{nodejs_arches}
- llvm-bolt
ExcludeArch: s390x ppc64le i686
- log4j
ExclusiveArch: %{java_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- loguru
ExcludeArch: %{ix86}
- loupe
ExcludeArch: %{ix86}
- love
ExcludeArch: ppc ppc64 s390x
- lrmi
ExclusiveArch: %{ix86}
- lrslib
ExcludeArch: %{ix86}
- lsp-plugins
ExcludeArch: %{ix86}
- lsvpd
ExclusiveArch: %{power64}
- luajit
ExcludeArch: riscv64 ppc64 ppc64le
- lucene
ExclusiveArch: %{java_arches} noarch
- luckybackup
ExcludeArch: %{ix86}
- lujavrite
ExclusiveArch: %{java_arches}
- luminance-hdr
ExcludeArch: %{ix86}
- lusol
ExcludeArch: %{ix86}
- luxcorerender
ExclusiveArch: x86_64
- lzfse
ExcludeArch: s390x
- m4rie
ExcludeArch: %{ix86}
- mactel-boot
ExclusiveArch: x86_64
- magicmirror
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-airnow
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-onthisday
ExclusiveArch: %{nodejs_arches} noarch
- magicmirror-module-singlestock
ExclusiveArch: %{nodejs_arches} noarch
- makemusic-finale-fonts
ExcludeArch: %{ix86}
- mame
ExcludeArch: %{arm} %{ix86}
- manifest-tool
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- mapnik
ExcludeArch: ppc ppc64 s390 s390x
- marcsabatella-campania-fonts
ExcludeArch: %{ix86}
- mariadb-java-client
ExclusiveArch: %{java_arches} noarch
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- mate-applets
ExcludeArch: i386 i686
- mathicgb
ExcludeArch: %{ix86}
- matrix-synapse
ExclusiveArch: %{rust_arches}
- maven
ExclusiveArch: %{java_arches} noarch
- maven-antrun-plugin
ExclusiveArch: %{java_arches} noarch
- maven-archetype
ExclusiveArch: %{java_arches} noarch
- maven-archiver
ExclusiveArch: %{java_arches} noarch
- maven-artifact-transfer
ExclusiveArch: %{java_arches} noarch
- maven-assembly-plugin
ExclusiveArch: %{java_arches} noarch
- maven-bundle-plugin
ExclusiveArch: %{java_arches} noarch
- maven-clean-plugin
ExclusiveArch: %{java_arches} noarch
- maven-common-artifact-filters
ExclusiveArch: %{java_arches} noarch
- maven-compiler-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-analyzer
ExclusiveArch: %{java_arches} noarch
- maven-dependency-plugin
ExclusiveArch: %{java_arches} noarch
- maven-dependency-tree
ExclusiveArch: %{java_arches} noarch
- maven-doxia
ExclusiveArch: %{java_arches} noarch
- maven-doxia-sitetools
ExclusiveArch: %{java_arches} noarch
- maven-enforcer
ExclusiveArch: %{java_arches} noarch
- maven-file-management
ExclusiveArch: %{java_arches} noarch
- maven-filtering
ExclusiveArch: %{java_arches} noarch
- maven-invoker
ExclusiveArch: %{java_arches} noarch
- maven-invoker-plugin
ExclusiveArch: %{java_arches} noarch
- maven-jar-plugin
ExclusiveArch: %{java_arches} noarch
- maven-mapping
ExclusiveArch: %{java_arches} noarch
- maven-native
ExclusiveArch: %{java_arches} noarch
- maven-parent
ExclusiveArch: %{java_arches} noarch
- maven-patch-plugin
ExclusiveArch: %{java_arches} noarch
- maven-plugin-testing
ExclusiveArch: %{java_arches} noarch
- maven-plugin-tools
ExclusiveArch: %{java_arches} noarch
- maven-remote-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-reporting-api
ExclusiveArch: %{java_arches} noarch
- maven-reporting-impl
ExclusiveArch: %{java_arches} noarch
- maven-resolver
ExclusiveArch: %{java_arches} noarch
- maven-resources-plugin
ExclusiveArch: %{java_arches} noarch
- maven-script-interpreter
ExclusiveArch: %{java_arches} noarch
- maven-shade-plugin
ExclusiveArch: %{java_arches} noarch
- maven-shared-incremental
ExclusiveArch: %{java_arches} noarch
- maven-shared-io
ExclusiveArch: %{java_arches} noarch
- maven-shared-utils
ExclusiveArch: %{java_arches} noarch
- maven-source-plugin
ExclusiveArch: %{java_arches} noarch
- maven-surefire
ExclusiveArch: %{java_arches} noarch
- maven-verifier
ExclusiveArch: %{java_arches} noarch
- maven-verifier-plugin
ExclusiveArch: %{java_arches} noarch
- maven-wagon
ExclusiveArch: %{java_arches} noarch
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mbpfan
ExclusiveArch: x86_64
- mcelog
ExclusiveArch: i686 x86_64
- mcqd
ExcludeArch: %{ix86}
- mcrouter
ExclusiveArch: x86_64 aarch64 ppc64le
- mecab-java
ExclusiveArch: %java_arches
- mediaconch
ExclusiveArch: %{qt5_qtwebengine_arches}
- mellowplayer
ExclusiveArch: %{qt5_qtwebengine_arches}
- memkind
ExclusiveArch: x86_64 ppc64 ppc64le s390x aarch64
- memtest86+
ExclusiveArch: x86_64 %{ix86}
- merkuro
ExclusiveArch: %{qt6_qtwebengine_arches}
- meshlab
ExclusiveArch: aarch64 x86_64
ExcludeArch: %{ix86}
- metamath
ExcludeArch: %{ix86}
- mfem
ExcludeArch: %{ix86}
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} x86_64 riscv64
- miglayout
ExclusiveArch: %{java_arches} noarch
- mine_detector
ExclusiveArch: %{GPRbuild_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-libidn2
ExclusiveArch: %{ix86} x86_64 %{arm}
- mingw-qt6-qtlocation
ExcludeArch: s390x
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- miopen
ExclusiveArch: x86_64
- mirrormanager2
ExcludeArch: %{ix86}
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mlir
ExcludeArch: i686
- mlir17
ExcludeArch: i686
- mlpack
ExcludeArch: %{ix86}
ExcludeArch: s390
- mmapper
ExcludeArch: %{ix86}
- mmlib
ExcludeArch: %{ix86}
- mmtests
ExcludeArch: s390x
- moby-engine
ExclusiveArch: %{golang_arches}
- mockito
ExclusiveArch: %{java_arches} noarch
- mod_gnutls
ExcludeArch: %{ix86} %{arm}
- mod_mono
ExclusiveArch: %mono_arches
- mod_proxy_cluster
ExcludeArch: i686 i386
- modello
ExclusiveArch: %{java_arches} noarch
- moditect
ExclusiveArch: %{java_arches} noarch
- module-build-service
ExclusiveArch: %{ix86} x86_64 noarch
- modulemaker-maven-plugin
ExclusiveArch: %{java_arches} noarch
- mojo-executor
ExclusiveArch: %{java_arches} noarch
- mojo-parent
ExclusiveArch: %{java_arches} noarch
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64 %{arm}
- mold
ExcludeArch: %{ix86}
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monodevelop
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- moose
ExcludeArch: s390x
- morphio
ExcludeArch: %{ix86}
- mozc
ExcludeArch: ppc ppc64 sparcv9 sparc64 s390x
- mozilla-ublock-origin
ExcludeArch: ppc64 s390x
- mp
ExcludeArch: %{ix86}
- mpark-patterns
ExcludeArch: %{ix86}
- mpi4py
ExcludeArch: %{ix86}
- mpibash
ExcludeArch: %{ix86}
- mpsolve
ExcludeArch: %{ix86}
- mrchem
ExcludeArch: s390x
- mrcpp
ExcludeArch: s390x
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- msolve
ExcludeArch: %{ix86}
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mstflint
ExcludeArch: s390 s390x %{arm}
- msv
ExclusiveArch: %{java_arches} noarch
- mt32emu
ExcludeArch: %{ix86}
- muffin
ExcludeArch: %{ix86}
- mumble
ExcludeArch: %{ix86}
- mupen64plus
ExcludeArch: s390x
- musescore
ExcludeArch: %{ix86}
- musl
ExcludeArch: s390
- mvfst
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- mxparser
ExclusiveArch: %{java_arches} noarch
- mysql-connector-java
ExclusiveArch: %{java_arches} noarch
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- naev
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExcludeArch: %{ix86}
- naga
ExclusiveArch: %{java_arches} noarch
- nagios-plugins-check-updates
ExcludeArch: %{ix86}
- nant
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- nativejit
ExclusiveArch: x86_64
- nbc
ExclusiveArch: %{fpc_arches}
- nbdkit
ExcludeArch: i686
- ncl
ExcludeArch: %{ix86}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- nekohtml
ExclusiveArch: %{java_arches} noarch
- nemo
ExcludeArch: %{ix86}
- nemo-extensions
ExcludeArch: %{ix86}
- nest
ExcludeArch: %{ix86}
- netatalk
ExcludeArch: aarch64 s390x
- netavark
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- netcdf-fortran
ExcludeArch: %{ix86}
- netdata
ExcludeArch: s390x
- netgen-mesher
ExcludeArch: %{ix86}
- neuron
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{ix86}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nextcloud-client
ExcludeArch: %{ix86}
ExcludeArch: ppc64 ppc64le s390x
- nodejs-acorn-object-spread
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aw-webui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bash-language-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buble
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjs-module-lexer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-linefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nodemon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-undici
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le riscv64 noarch
- nodejs18
ExclusiveArch: %{nodejs_arches}
- nodejs20
ExclusiveArch: %{nodejs_arches}
- nodejs22
ExclusiveArch: %{nodejs_arches}
- nom-tam-fits
ExclusiveArch: %{java_arches} noarch
- normaliz
ExcludeArch: %{ix86}
- not-ocamlfind
ExcludeArch: %{ix86}
- notejot
ExcludeArch: %{ix86}
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- ntfs2btrfs
ExcludeArch: ppc64 s390x
- nuget
ExclusiveArch: %{mono_arches}
- numactl
ExcludeArch: s390 %{arm}
- numatop
ExclusiveArch: x86_64 ppc64le
- numptyphysics
ExcludeArch: ppc64le
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- nut
ExcludeArch: s390 s390x
- nvml
ExclusiveArch: x86_64 ppc64le
- nwchem
ExcludeArch: %{ix86} s390x
ExcludeArch: s390x
- objectweb-asm
ExclusiveArch: %{java_arches} noarch
- objenesis
ExclusiveArch: %{java_arches} noarch
- obs-cef
ExclusiveArch: x86_64 aarch64
- obs-service-rust2rpm
ExclusiveArch: %{rust_arches} noarch
- obs-studio-plugin-vkcapture
ExcludeArch: s390x
- ocaml
ExcludeArch: %{ix86}
- ocaml-SDL
ExcludeArch: %{ix86}
- ocaml-alcotest
ExcludeArch: %{ix86}
- ocaml-astring
ExcludeArch: %{ix86}
- ocaml-atd
ExcludeArch: %{ix86}
- ocaml-augeas
ExcludeArch: %{ix86}
- ocaml-autoconf
ExcludeArch: %{ix86}
- ocaml-base
ExcludeArch: %{ix86}
- ocaml-base64
ExcludeArch: %{ix86}
- ocaml-benchmark
ExcludeArch: %{ix86}
- ocaml-bigarray-compat
ExcludeArch: %{ix86}
- ocaml-bin-prot
ExcludeArch: %{ix86}
- ocaml-biniou
ExcludeArch: %{ix86}
- ocaml-bisect-ppx
ExcludeArch: %{ix86}
- ocaml-bos
ExcludeArch: %{ix86}
- ocaml-cairo
ExcludeArch: %{ix86}
- ocaml-calendar
ExcludeArch: %{ix86}
- ocaml-camlbz2
ExcludeArch: %{ix86}
- ocaml-camlidl
ExcludeArch: %{ix86}
- ocaml-camlimages
ExcludeArch: %{ix86}
- ocaml-camlp-streams
ExcludeArch: %{ix86}
- ocaml-camlp5
ExcludeArch: %{ix86}
- ocaml-camlp5-buildscripts
ExcludeArch: %{ix86}
- ocaml-camomile
ExcludeArch: %{ix86}
- ocaml-cinaps
ExcludeArch: %{ix86}
- ocaml-cmdliner
ExcludeArch: %{ix86}
- ocaml-compiler-libs-janestreet
ExcludeArch: %{ix86}
- ocaml-cppo
ExcludeArch: %{ix86}
- ocaml-crunch
ExcludeArch: %{ix86}
- ocaml-cryptokit
ExcludeArch: %{ix86}
- ocaml-csexp
ExcludeArch: %{ix86}
- ocaml-csv
ExcludeArch: %{ix86}
- ocaml-ctypes
ExcludeArch: %{ix86}
- ocaml-cudf
ExcludeArch: %{ix86}
- ocaml-curl
ExcludeArch: %{ix86}
- ocaml-curses
ExcludeArch: %{ix86}
- ocaml-dbus
ExcludeArch: %{ix86}
- ocaml-dose3
ExcludeArch: %{ix86}
- ocaml-dune
ExcludeArch: %{ix86}
- ocaml-easy-format
ExcludeArch: %{ix86}
- ocaml-expat
ExcludeArch: %{ix86}
- ocaml-extlib
ExcludeArch: %{ix86}
- ocaml-facile
ExcludeArch: %{ix86}
- ocaml-fieldslib
ExcludeArch: %{ix86}
- ocaml-fileutils
ExcludeArch: %{ix86}
- ocaml-findlib
ExcludeArch: %{ix86}
- ocaml-fmt
ExcludeArch: %{ix86}
- ocaml-fpath
ExcludeArch: %{ix86}
- ocaml-gen
ExcludeArch: %{ix86}
- ocaml-gettext
ExcludeArch: %{ix86}
- ocaml-graphics
ExcludeArch: %{ix86}
- ocaml-gsl
ExcludeArch: %{arm} %{ix86}
- ocaml-integers
ExcludeArch: %{ix86}
- ocaml-jane-street-headers
ExcludeArch: %{ix86}
- ocaml-jst-config
ExcludeArch: %{ix86}
- ocaml-lablgl
ExcludeArch: %{ix86}
- ocaml-lablgtk
ExcludeArch: %{ix86}
- ocaml-lablgtk3
ExcludeArch: %{ix86}
- ocaml-labltk
ExcludeArch: %{ix86}
- ocaml-lacaml
ExcludeArch: %{ix86}
- ocaml-lambda-term
ExcludeArch: %{ix86}
- ocaml-libvirt
ExcludeArch: %{ix86}
- ocaml-logs
ExcludeArch: %{ix86}
- ocaml-luv
ExcludeArch: %{ix86}
- ocaml-lwt
ExcludeArch: %{ix86}
- ocaml-markup
ExcludeArch: %{ix86}
- ocaml-mccs
ExcludeArch: %{ix86}
- ocaml-mdx
ExcludeArch: %{ix86}
- ocaml-menhir
ExcludeArch: %{ix86}
- ocaml-merlin
ExcludeArch: %{ix86}
- ocaml-mew
ExcludeArch: %{ix86}
- ocaml-mew-vi
ExcludeArch: %{ix86}
- ocaml-mlgmpidl
ExcludeArch: %{ix86}
- ocaml-mlmpfr
ExcludeArch: %{ix86}
- ocaml-mtime
ExcludeArch: %{ix86}
- ocaml-mysql
ExcludeArch: %{ix86}
- ocaml-num
ExcludeArch: %{ix86}
- ocaml-obuild
ExcludeArch: %{ix86}
- ocaml-ocamlbuild
ExcludeArch: %{ix86}
- ocaml-ocamlgraph
ExcludeArch: %{ix86}
- ocaml-ocamlnet
ExcludeArch: %{ix86}
- ocaml-ocp-indent
ExcludeArch: %{ix86}
- ocaml-ocplib-endian
ExcludeArch: %{ix86}
- ocaml-ocplib-simplex
ExcludeArch: %{ix86}
- ocaml-octavius
ExcludeArch: %{ix86}
- ocaml-odoc
ExcludeArch: %{ix86}
- ocaml-omake
ExcludeArch: %{ix86}
- ocaml-opam-file-format
ExcludeArch: %{ix86}
- ocaml-ounit
ExcludeArch: %{ix86}
- ocaml-parmap
ExcludeArch: %{ix86}
- ocaml-parsexp
ExcludeArch: %{ix86}
- ocaml-pcre
ExcludeArch: %{ix86}
- ocaml-pcre2
ExcludeArch: %{ix86}
- ocaml-perl4caml
ExcludeArch: %{ix86}
- ocaml-postgresql
ExcludeArch: %{ix86}
- ocaml-pp
ExcludeArch: %{ix86}
- ocaml-ppx-assert
ExcludeArch: %{ix86}
- ocaml-ppx-base
ExcludeArch: %{ix86}
- ocaml-ppx-cold
ExcludeArch: %{ix86}
- ocaml-ppx-compare
ExcludeArch: %{ix86}
- ocaml-ppx-custom-printf
ExcludeArch: %{ix86}
- ocaml-ppx-derivers
ExcludeArch: %{ix86}
- ocaml-ppx-deriving
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yaml
ExcludeArch: %{ix86}
- ocaml-ppx-deriving-yojson
ExcludeArch: %{ix86}
- ocaml-ppx-enumerate
ExcludeArch: %{ix86}
- ocaml-ppx-expect
ExcludeArch: %{ix86}
- ocaml-ppx-fields-conv
ExcludeArch: %{ix86}
- ocaml-ppx-globalize
ExcludeArch: %{ix86}
- ocaml-ppx-hash
ExcludeArch: %{ix86}
- ocaml-ppx-here
ExcludeArch: %{ix86}
- ocaml-ppx-import
ExcludeArch: %{ix86}
- ocaml-ppx-inline-test
ExcludeArch: %{ix86}
- ocaml-ppx-js-style
ExcludeArch: %{ix86}
- ocaml-ppx-let
ExcludeArch: %{ix86}
- ocaml-ppx-optcomp
ExcludeArch: %{ix86}
- ocaml-ppx-sexp-conv
ExcludeArch: %{ix86}
- ocaml-ppx-stable-witness
ExcludeArch: %{ix86}
- ocaml-ppx-variants-conv
ExcludeArch: %{ix86}
- ocaml-ppxlib
ExcludeArch: %{ix86}
- ocaml-psmt2-frontend
ExcludeArch: %{ix86}
- ocaml-ptime
ExcludeArch: %{ix86}
- ocaml-ptmap
ExcludeArch: %{ix86}
- ocaml-pyml
ExcludeArch: %{ix86}
- ocaml-qcheck
ExcludeArch: %{ix86}
- ocaml-qtest
ExcludeArch: %{ix86}
- ocaml-re
ExcludeArch: %{ix86}
- ocaml-react
ExcludeArch: %{ix86}
- ocaml-res
ExcludeArch: %{ix86}
- ocaml-result
ExcludeArch: %{ix86}
- ocaml-rresult
ExcludeArch: %{ix86}
- ocaml-sedlex
ExcludeArch: %{ix86}
- ocaml-sexplib
ExcludeArch: %{ix86}
- ocaml-sexplib0
ExcludeArch: %{ix86}
- ocaml-sha
ExcludeArch: %{ix86}
- ocaml-sqlite
ExcludeArch: %{ix86}
- ocaml-ssl
ExcludeArch: %{ix86}
- ocaml-stdcompat
ExcludeArch: %{ix86}
- ocaml-stdio
ExcludeArch: %{ix86}
- ocaml-stdlib-random
ExcludeArch: %{ix86}
- ocaml-time-now
ExcludeArch: %{ix86}
- ocaml-topkg
ExcludeArch: %{ix86}
- ocaml-trie
ExcludeArch: %{ix86}
- ocaml-tyxml
ExcludeArch: %{ix86}
- ocaml-unionfind
ExcludeArch: %{ix86}
- ocaml-uucd
ExcludeArch: %{ix86}
- ocaml-uucp
ExcludeArch: %{ix86}
- ocaml-uunf
ExcludeArch: %{ix86}
- ocaml-uuseg
ExcludeArch: %{ix86}
- ocaml-uutf
ExcludeArch: %{ix86}
- ocaml-variantslib
ExcludeArch: %{ix86}
- ocaml-version
ExcludeArch: %{ix86}
- ocaml-xml-light
ExcludeArch: %{ix86}
- ocaml-xmlm
ExcludeArch: %{ix86}
- ocaml-xmlrpc-light
ExcludeArch: %{ix86}
- ocaml-yaml
ExcludeArch: %{ix86}
- ocaml-yojson
ExcludeArch: %{ix86}
- ocaml-zarith
ExcludeArch: %{ix86}
- ocaml-zed
ExcludeArch: %{ix86}
- ocaml-zip
ExcludeArch: %{ix86}
- ocaml-zmq
ExcludeArch: %{ix86}
- ocamlify
ExcludeArch: %{ix86}
- ocamlmod
ExcludeArch: %{ix86}
- oci-seccomp-bpf-hook
ExclusiveArch: x86_64 %{power64} aarch64 s390x armv7hl
ExclusiveArch: %{golang_arches_future}
- ocrmypdf
ExcludeArch: %{ix86}
- octave-communications
ExcludeArch: s390x
- octave-iso2mesh
ExcludeArch: armv7hl
- octave-signal
ExcludeArch: s390x
- oidc-agent
ExcludeArch: %{ix86}
- oidn
ExclusiveArch: x86_64
- oneVPL
ExclusiveArch: x86_64
- oneapi-level-zero
ExclusiveArch: x86_64
- onednn
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- onedrive
ExclusiveArch: %{ldc_arches}
- ongres-scram
ExclusiveArch: %{java_arches} noarch
- ongres-stringprep
ExclusiveArch: %{java_arches} noarch
- onnx
ExcludeArch: s390x
- onnxruntime
ExcludeArch: s390x %{arm} %{ix86}
- oomd
ExcludeArch: i686 armv7hl
- opae
ExclusiveArch: x86_64
- opal-prd
ExclusiveArch: ppc64le
- opam
ExcludeArch: %{ix86}
- open-vm-tools
ExclusiveArch: x86_64 aarch64
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- opencsg
ExcludeArch: %{ix86}
- opengrm-ngram
ExcludeArch: %{ix86}
- openjdk-asmtools
ExclusiveArch: %{java_arches} noarch
- openjdk-asmtools7
ExclusiveArch: %{java_arches} noarch
- openjfx
ExclusiveArch: %{java_arches}
- openjfx8
ExclusiveArch: x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmeeg
ExcludeArch: s390x
- openmpi
ExcludeArch: %{ix86}
- openms
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- openni
ExclusiveArch: x86_64 %{arm}
- openni-primesense
ExclusiveArch: x86_64 %{arm}
- openobex
ExcludeArch: s390 s390x
- openoffice.org-diafilter
ExclusiveArch: %{java_arches}
- openpgl
ExclusiveArch: aarch64 x86_64
- openrgb
ExcludeArch: %{ix86}
- openscad
ExcludeArch: %{ix86}
- openshadinglanguage
ExcludeArch: %{ix86} %{arm}
- openshot
ExcludeArch: ppc64le
- opensm
ExcludeArch: s390 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- openstack-java-sdk
ExclusiveArch: %{java_arches} noarch
- opentest4j
ExclusiveArch: %{java_arches} noarch
- opentype-sanitizer
ExcludeArch: %{ix86}
- openvdb
ExcludeArch: i686
- openvkl
ExclusiveArch: aarch64 x86_64
- openxr-simple-playground
ExcludeArch: %{ix86}
- optee_client
ExclusiveArch: aarch64
- optee_os
ExclusiveArch: aarch64
- options
ExclusiveArch: %{java_arches} noarch
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- os-autoinst
ExcludeArch: %{arm}
- osbuild-composer
ExcludeArch: i686 armv7hl
- osgi-annotation
ExclusiveArch: %{java_arches} noarch
- osgi-compendium
ExclusiveArch: %{java_arches} noarch
- osgi-core
ExclusiveArch: %{java_arches} noarch
- osm2pgsql
ExcludeArch: %{ix86}
- osslsigncode
ExcludeArch: i686
- ostree
ExcludeArch: %{ix86}
- otf2
ExcludeArch: i686 s390x
- oz
ExcludeArch: %{ix86}
- pacemaker
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64 %{arm}
ExclusiveArch: aarch64 i686 ppc64le s390x x86_64
- pageedit
ExclusiveArch: %{qt5_qtwebengine_arches}
- paperwork
ExcludeArch: %{ix86}
- papi
ExcludeArch: s390 s390x
- papilo
ExcludeArch: %{ix86}
- paraview
ExcludeArch: %{ix86}
- pari-nftables
ExcludeArch: %{ix86}
- parlaylib
ExcludeArch: aarch64 s390x arm-hfp ppc64le i686
- parserng
ExclusiveArch: %{java_arches} noarch
- pasdoc
ExclusiveArch: %{fpc_arches}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcem
ExcludeArch: armv7hl i686 ppc64le s390x
- pcfi
ExclusiveArch: %{java_arches} noarch
- pcg-cpp
ExcludeArch: %{ix86}
- pcm
ExclusiveArch: %{ix86} x86_64
- pcp
ExcludeArch: %{ix86}
- pcp2pdf
ExcludeArch: %{ix86}
- pdbg
ExclusiveArch: ppc64le
- pdfarranger
ExcludeArch: %{ix86}
- pdfbox
ExclusiveArch: %{java_arches} noarch
- pdftk-java
ExclusiveArch: %{java_arches} noarch
- pdns
ExcludeArch: %{arm} %{ix86}
- pdns-recursor
ExcludeArch: %{arm} %{ix86}
- pdqsort
ExcludeArch: %{ix86}
- pengupop
ExcludeArch: s390x
- pentaho-libxml
ExclusiveArch: %{java_arches} noarch
- pentaho-reporting-flow-engine
ExclusiveArch: %{java_arches} noarch
- perftest
ExcludeArch: s390 %{arm}
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-LMDB_File
ExcludeArch: armv7hl i686
- perl-Math-Int128
ExcludeArch: %{arm32} %{ix86}
- perl-MaxMind-DB-Reader-XS
ExcludeArch: %{arm} %{ix86}
- perl-MongoDB
ExcludeArch: ppc %{sparc} s390
- perl-Net-Works
ExcludeArch: %{arm32} %{ix86}
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- perl-Task-Catalyst
ExcludeArch: %{ix86}
- perl-threads-lite
ExcludeArch: aarch64 ppc ppc64 ppc64le
- permlib
ExcludeArch: %{ix86}
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 %{arm} riscv64
- pesign-test-app
ExclusiveArch: x86_64
- petpvc
ExcludeArch: %{ix86}
- pf-bb-config
ExcludeArch: s390x
- pgadmin4
ExcludeArch: i686 armv7hl s390x ppc64le
- phd2
ExcludeArch: %{ix86}
- phosh
ExcludeArch: i686
- phosh-mobile-settings
ExcludeArch: i686
- php
ExcludeArch: %{ix86}
- php-ast
ExcludeArch: %{ix86}
- php-facedetect
ExcludeArch: %{ix86}
- php-geos
ExcludeArch: %{ix86}
- php-libvirt
ExcludeArch: %{ix86}
- php-maxminddb
ExcludeArch: %{ix86}
- php-pecl-amqp
ExcludeArch: %{ix86}
- php-pecl-apcu
ExcludeArch: %{ix86}
- php-pecl-apfd
ExcludeArch: %{ix86}
- php-pecl-dio
ExcludeArch: %{ix86}
- php-pecl-ds
ExcludeArch: %{ix86}
- php-pecl-event
ExcludeArch: %{ix86}
- php-pecl-fann
ExcludeArch: %{ix86}
- php-pecl-gearman
ExcludeArch: %{ix86}
- php-pecl-geoip
ExcludeArch: %{ix86}
- php-pecl-gmagick
ExcludeArch: %{ix86}
- php-pecl-http
ExcludeArch: %{ix86}
- php-pecl-igbinary
ExcludeArch: %{ix86}
- php-pecl-imagick
ExcludeArch: %{ix86}
- php-pecl-inotify
ExcludeArch: %{ix86}
- php-pecl-ip2location
ExcludeArch: %{ix86}
- php-pecl-json-post
ExcludeArch: %{ix86}
- php-pecl-krb5
ExcludeArch: %{ix86}
- php-pecl-lzf
ExcludeArch: %{ix86}
- php-pecl-mailparse
ExcludeArch: %{ix86}
- php-pecl-mcrypt
ExcludeArch: %{ix86}
- php-pecl-memcache
ExcludeArch: %{ix86}
- php-pecl-memcached
ExcludeArch: %{ix86}
- php-pecl-mongodb
ExcludeArch: %{ix86}
- php-pecl-msgpack
ExcludeArch: %{ix86}
- php-pecl-oauth
ExcludeArch: %{ix86}
- php-pecl-pcov
ExcludeArch: %{ix86}
- php-pecl-pq
ExcludeArch: %{ix86}
- php-pecl-raphf
ExcludeArch: %{ix86}
- php-pecl-redis5
ExcludeArch: %{ix86}
- php-pecl-rpminfo
ExcludeArch: %{ix86}
- php-pecl-rrd
ExcludeArch: %{ix86}
- php-pecl-selinux
ExcludeArch: %{ix86}
- php-pecl-ssdeep
ExcludeArch: %{ix86}
- php-pecl-ssh2
ExcludeArch: %{ix86}
- php-pecl-uopz
ExcludeArch: %{ix86}
- php-pecl-uuid
ExcludeArch: %{ix86}
- php-pecl-var-representation
ExcludeArch: %{ix86}
- php-pecl-xattr
ExcludeArch: %{ix86}
- php-pecl-xdebug3
ExcludeArch: %{ix86}
- php-pecl-xmldiff
ExcludeArch: %{ix86}
- php-pecl-xmlrpc
ExcludeArch: %{ix86}
- php-pecl-yac
ExcludeArch: %{ix86}
- php-pecl-zip
ExcludeArch: %{ix86}
- php-phpiredis
ExcludeArch: %{ix86}
- php-smbclient
ExcludeArch: %{ix86}
- php-zmq
ExcludeArch: %{ix86}
- php-zstd
ExcludeArch: %{ix86}
- picard
ExcludeArch: ppc64
- picocli
ExclusiveArch: %{java_arches} noarch
- pigeonascent
ExcludeArch: ppc64le
ExcludeArch: s390x
- pilot-link
ExcludeArch: s390 s390x
- pinta
ExclusiveArch: %mono_arches
ExcludeArch: armv7hl
- pioneer
ExclusiveArch: %{ix86} x86_64
- pl
ExcludeArch: %{ix86}
- planets
ExcludeArch: %{ix86}
- plantri
ExcludeArch: %{ix86}
- plantuml
ExclusiveArch: %{java_arches} noarch
- plasma-dialer
ExclusiveArch: %{java_arches}
- plasma-disks
ExcludeArch: %{ix86}
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- plee-the-bear
ExcludeArch: %{power64}
- plexus-archiver
ExclusiveArch: %{java_arches} noarch
- plexus-build-api
ExclusiveArch: %{java_arches} noarch
- plexus-build-api0
ExclusiveArch: %{java_arches} noarch
- plexus-cipher
ExclusiveArch: %{java_arches} noarch
- plexus-classworlds
ExclusiveArch: %{java_arches} noarch
- plexus-compiler
ExclusiveArch: %{java_arches} noarch
- plexus-component-api
ExclusiveArch: %{java_arches} noarch
- plexus-components-pom
ExclusiveArch: %{java_arches} noarch
- plexus-containers
ExclusiveArch: %{java_arches} noarch
- plexus-i18n
ExclusiveArch: %{java_arches} noarch
- plexus-interpolation
ExclusiveArch: %{java_arches} noarch
- plexus-io
ExclusiveArch: %{java_arches} noarch
- plexus-languages
ExclusiveArch: %{java_arches} noarch
- plexus-pom
ExclusiveArch: %{java_arches} noarch
- plexus-resources
ExclusiveArch: %{java_arches} noarch
- plexus-sec-dispatcher
ExclusiveArch: %{java_arches} noarch
- plexus-testing
ExclusiveArch: %{java_arches} noarch
- plexus-utils
ExclusiveArch: %{java_arches} noarch
- plexus-velocity
ExclusiveArch: %{java_arches} noarch
- plexus-xml
ExclusiveArch: %{java_arches} noarch
- pmix
ExcludeArch: %{ix86}
- pngcheck
ExcludeArch: %{ix86}
- podman
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- polymake
ExcludeArch: %{ix86}
- polyml
ExcludeArch: %{ix86}
- poppler-sharp
ExclusiveArch: %mono_arches
- popub
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- postgresql-jdbc
ExclusiveArch: %{java_arches} noarch
- postgresql-pgpool-II
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- powerpc-utils
ExclusiveArch: ppc %{power64}
- powerstat
ExclusiveArch: %{ix86} x86_64
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppl
ExcludeArch: %{ix86}
- pplite
ExcludeArch: %{ix86}
- prestopalette
ExcludeArch: i686
- printer-driver-brlaser
ExcludeArch: %{ix86}
- procdump
ExcludeArch: ppc64le
- procyon
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
ExclusiveArch: %{java_arches} noarch
- proguard
ExclusiveArch: %{java_arches} noarch
- prooftree
ExcludeArch: %{ix86}
- proxmark3
ExcludeArch: ppc64le s390x
- proxygen
ExclusiveArch: x86_64 aarch64 ppc64le
- proxysql
ExcludeArch: %{power64} s390x %{ix86}
- prrte
ExcludeArch: %{ix86}
- prusa-slicer
ExcludeArch: %{ix86}
- psblas3
ExcludeArch: %{ix86}
- pveclib
ExclusiveArch: ppc %{power64}
- pygrib
ExcludeArch: i686
ExcludeArch: armv7hl
- pygsl
ExcludeArch: %{ix86}
- pyosmium
ExcludeArch: %{ix86}
- pypy
ExcludeArch: %{ix86}
- pypy3.10
ExcludeArch: %{ix86}
- pypy3.9
ExcludeArch: %{ix86}
- pyqtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- python-ZEO
ExcludeArch: %{ix86}
- python-ZODB3
ExcludeArch: %{ix86}
- python-aioresponses
ExcludeArch: s390x
- python-annarchy
ExcludeArch: %{ix86} ppc64le
- python-ast-monitor
ExclusiveArch: %{qt6_qtwebengine_arches} noarch
- python-astroplan
ExcludeArch: %{ix86}
- python-astropy
ExcludeArch: %{ix86}
- python-astroscrappy
ExcludeArch: %{ix86}
- python-asyncmy
ExcludeArch: %{ix86}
- python-aws-sam-translator
ExcludeArch: %{ix86}
- python-awscrt
ExcludeArch: s390x
- python-bitstruct
ExcludeArch: s390x
- python-blosc2
ExcludeArch: %{ix86}
- python-bluepyopt
ExcludeArch: s390x %{ix86} %{power64}
- python-calcephpy
ExcludeArch: %{ix86}
- python-colorthief
ExcludeArch: %{ix86}
- python-compreffor
ExcludeArch: %{ix86}
- python-contextualbandits
ExcludeArch: %{ix86}
- python-cradox
ExcludeArch: i686 armv7hl
- python-cryptography
ExclusiveArch: %{rust_arches}
- python-cvxopt
ExcludeArch: %{ix86}
- python-cyipopt
ExcludeArch: %{ix86}
- python-dask
ExcludeArch: %{ix86}
- python-databases
ExcludeArch: %{ix86}
- python-devicely
ExcludeArch: s390x
- python-dijitso
ExcludeArch: i686
- python-dipy
ExcludeArch: %{ix86} s390x
- python-distributed
ExcludeArch: %{ix86}
- python-ducc0
ExcludeArch: %{ix86}
- python-earthpy
ExcludeArch: %{ix86}
- python-eccodes
ExcludeArch: i686
ExcludeArch: armv7hl
- python-efel
ExcludeArch: s390x
- python-elephant
ExcludeArch: s390x
ExcludeArch: %{ix86}
- python-ephyviewer
ExcludeArch: s390x %{ix86}
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x riscv64
- python-fastavro
ExcludeArch: %{arm32} %{ix86}
- python-folium
ExcludeArch: %{ix86}
- python-formulaic
ExcludeArch: %{ix86}
- python-fsleyes
ExcludeArch: %{ix86}
- python-fsleyes-props
ExcludeArch: %{ix86}
- python-fslpy
ExcludeArch: %{ix86}
- python-gbinder
ExcludeArch: %{ix86}
- python-giacpy
ExcludeArch: aarch64 %{power64} s390x
- python-graph-tool
ExcludeArch: %{ix86}
- python-hdfs
ExcludeArch: %{ix86}
- python-healpy
ExcludeArch: %{ix86} %{arm}
- python-heapdict
ExcludeArch: %{ix86}
- python-imagecodecs
ExcludeArch: %{ix86}
- python-img2pdf
ExcludeArch: s390x
- python-javaobj
ExclusiveArch: %{java_arches} noarch
- python-jnius
ExclusiveArch: %{java_arches}
ExclusiveArch: %{java_arches}
- python-json-minify
ExcludeArch: %{ix86}
- python-jupymake
ExcludeArch: %{ix86}
- python-jupyter-c-kernel
ExcludeArch: %{ix86}
- python-jupyter-kernel-singular
ExcludeArch: %{ix86}
- python-jupyter-polymake
ExcludeArch: %{ix86}
- python-jupyter-sphinx
ExcludeArch: %{ix86}
- python-jupytext
ExcludeArch: s390x
- python-lazy-ops
ExcludeArch: %{ix86}
- python-lfpy
ExcludeArch: mips64r2 mips32r2
ExcludeArch: %{power64} %{ix86} armv7hl
- python-llama-cpp-python
ExclusiveArch: x86_64 aarch64
- python-logdetective
ExclusiveArch: x86_64 aarch64
- python-mapnik
ExcludeArch: ppc ppc64 s390 s390x
- python-missingno
ExcludeArch: %{ix86}
- python-mne
ExcludeArch: %{ix86}
- python-mne-bids
ExcludeArch: %{ix86}
- python-mplcairo
ExcludeArch: %{ix86}
- python-mplcursors
ExcludeArch: %{ix86}
- python-music21
ExcludeArch: %{ix86}
- python-nbdime
ExclusiveArch: x86_64 aarch64
- python-ndindex
ExcludeArch: %{ix86}
- python-neatdend
ExcludeArch: %{ix86}
- python-neo
ExcludeArch: s390x
- python-netpyne
ExcludeArch: %{ix86}
- python-neurom
ExcludeArch: %{ix86}
- python-neurotune
ExcludeArch: %{ix86}
- python-nifti-mrs
ExcludeArch: %{ix86}
- python-nilearn
ExcludeArch: %{ix86}
- python-nipy
ExcludeArch: %{ix86}
- python-octave-kernel
ExcludeArch: %{ix86}
- python-openpaperwork-core
ExcludeArch: %{ix86}
- python-openpaperwork-gtk
ExcludeArch: %{ix86}
- python-opentype-sanitizer
ExcludeArch: %{ix86}
- python-pandas
ExcludeArch: %{ix86}
- python-pandas-flavor
ExcludeArch: %{ix86}
- python-papermill
ExcludeArch: %{ix86}
- python-paperwork-backend
ExcludeArch: %{ix86}
- python-pari-jupyter
ExcludeArch: %{ix86}
- python-phyghtmap
ExcludeArch: %{ix86}
- python-pingouin
ExcludeArch: %{ix86}
- python-plotnine
ExcludeArch: %{ix86}
- python-pplpy
ExcludeArch: %{ix86}
- python-primecountpy
ExcludeArch: %{ix86}
- python-psycopg3
ExcludeArch: %{ix86}
- python-pyahocorasick
ExclusiveArch: x86_64 %{arm64} ppc64le riscv64
- python-pybbi
ExcludeArch: %{ix86}
- python-pybids
ExcludeArch: %{ix86}
- python-pybv
ExcludeArch: %{ix86}
- python-pyedflib
ExcludeArch: s390x
- python-pyfastnoisesimd
ExcludeArch: %{ix86}
- python-pyfiglet
ExcludeArch: %{ix86}
- python-pykdtree
ExcludeArch: %{ix86}
- python-pyliblzfse
ExcludeArch: s390x
- python-pymapvbvd
ExcludeArch: s390x
- python-pymatreader
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pynn
ExcludeArch: mips64r2 mips32r2 s390x %{ix86}
- python-pyocr
ExcludeArch: %{ix86}
- python-pypet
ExcludeArch: %{ix86}
ExcludeArch: s390x
- python-pyphi
ExcludeArch: %{ix86} s390x
- python-pypillowfight
ExcludeArch: %{ix86}
- python-pyqt6-webengine
ExclusiveArch: %{qt6_qtwebengine_arches}
- python-pyriemann
ExcludeArch: %{ix86}
- python-pyroaring
ExcludeArch: %{ix86}
- python-pyscf
ExcludeArch: %{power64}
- python-pyshtools
ExcludeArch: %{ix86}
- python-pysingular
ExcludeArch: %{ix86}
- python-pyswarms
ExcludeArch: %{ix86}
- python-pyswip
ExcludeArch: %{ix86}
- python-pytest-arraydiff
ExcludeArch: %{ix86}
- python-pytest-tornado
ExcludeArch: %{ix86}
- python-python-fcl
ExcludeArch: %{ix86}
- python-pyunicorn
ExcludeArch: %{ix86}
- python-pyvat
ExcludeArch: %{ix86}
- python-ratinabox
ExcludeArch: %{ix86}
- python-recordclass
ExcludeArch: %{ix86}
- python-reproject
ExcludeArch: %{ix86}
- python-ruffus
ExcludeArch: %{ix86}
- python-scikit-learn
ExcludeArch: %{ix86}
- python-scikit-misc
ExcludeArch: %{ix86}
- python-sgp4
ExcludeArch: %{ix86}
- python-simplebayes
ExcludeArch: %{ix86}
- python-sklearn-genetic-opt
ExcludeArch: %{ix86}
- python-statsmodels
ExcludeArch: %{ix86}
- python-steps
ExcludeArch: %{ix86}
- python-tables
ExcludeArch: %{ix86}
- python-tdlib
ExcludeArch: %{ix86}
- python-tensile
ExclusiveArch: x86_64
- python-tensordict
ExclusiveArch: x86_64 aarch64
- python-tkrzw
ExcludeArch: i686
- python-torch
ExclusiveArch: x86_64 aarch64
- python-torchaudio
ExclusiveArch: x86_64 aarch64
- python-torchdata
ExclusiveArch: x86_64 aarch64
- python-torchtext
ExclusiveArch: x86_64 aarch64
- python-torchvision
ExclusiveArch: x86_64 aarch64
- python-traitsui
ExcludeArch: ppc64le
- python-trimesh
ExcludeArch: %{ix86}
- python-uranium
ExcludeArch: %{ix86}
- python-willow
ExcludeArch: %{ix86}
- python-xattr
ExcludeArch: %{ix86}
- python-xbout
ExcludeArch: %{ix86}
- python-xmp-toolkit
ExcludeArch: %{ix86}
- python-zeep
ExcludeArch: s390x
- python-zict
ExcludeArch: %{ix86}
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qalculate-qt
ExcludeArch: %{ix86}
- qat-zstd-plugin
ExclusiveArch: x86_64
- qatengine
ExclusiveArch: x86_64
- qatlib
ExcludeArch: %{arm} aarch64 %{power64} s390x i686
- qatzip
ExclusiveArch: x86_64
- qbe
ExclusiveArch: x86_64 aarch64 riscv64
- qbittorrent
ExcludeArch: %{ix86}
- qbs
ExcludeArch: i686
- qcas
ExcludeArch: aarch64 %{power64} s390x
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qdigidoc
ExcludeArch: %{ix86}
- qdox
ExclusiveArch: %{java_arches} noarch
- qemu-sanity-check
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- qevercloud
ExclusiveArch: %{qt5_qtwebengine_arches}
- qflipper
ExcludeArch: %{ix86}
- qmapshack
ExclusiveArch: %{qt5_qtwebengine_arches}
- qmplay2
ExcludeArch: %{ix86}
- qoauth
ExcludeArch: ppc64
- qownnotes
ExcludeArch: %{ix86}
- qpdfview
ExcludeArch: s390x
- qperf
ExcludeArch: %{arm}
- qsopt-ex
ExcludeArch: %{ix86}
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- qt6-qtquick3dphysics
ExclusiveArch: aarch64 i686 x86_64
- qt6-qtwebengine
ExclusiveArch: aarch64 x86_64
- qt6-qtwebview
ExclusiveArch: aarch64 x86_64
- qt6ct
ExcludeArch: s390x
- qtile
ExcludeArch: %{ix86}
- quantum-espresso
ExclusiveArch: x86_64 aarch64 %{power64}
- quentier
ExclusiveArch: %{qt5_qtwebengine_arches}
- rEFInd
ExclusiveArch: %{efi}
ExcludeArch: %{arm32}
- rasdaemon
ExcludeArch: s390 s390x
- rccl
ExclusiveArch: x86_64
- rdma-core
ExcludeArch: %{arm}
- realtime-tests
ExcludeArch: %{arm}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64 s390x
- redeclipse
ExcludeArch: %{ix86}
- redict
ExcludeArch: %{ix86}
- reflections
ExclusiveArch: %{java_arches} noarch
- reg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- regexp
ExclusiveArch: %{java_arches} noarch
- relaxng-datatype-java
ExclusiveArch: %{java_arches} noarch
- remake
ExcludeArch: %{ix86}
- renderdoc
ExclusiveArch: x86_64 aarch64
- replacer
ExclusiveArch: %{java_arches} noarch
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- rescene
ExclusiveArch: %{mono_arches}
- resteasy
ExclusiveArch: %{java_arches} noarch
- restool
ExclusiveArch: aarch64
- restsharp
ExclusiveArch: %{mono_arches}
ExcludeArch: armv7hl
- retroarch
ExcludeArch: %{ix86}
ExcludeArch: s390x
- retsnoop
ExclusiveArch: %{rust_arches}
ExcludeArch: armv7hl
- rhino
ExclusiveArch: %{java_arches} noarch
ExcludeArch: %{ix86}
- rhythmbox
ExcludeArch: s390 s390x
- rhythmbox-alternative-toolbar
ExcludeArch: s390 s390x
- rhythmbox-ampache
ExcludeArch: s390 s390x
- river
ExclusiveArch: %{zig_arches}
- rkcommon
ExclusiveArch: x86_64 aarch64
- rocalution
ExclusiveArch: x86_64
- rocblas
ExclusiveArch: x86_64
- rocclr
ExclusiveArch: x86_64
- rocfft
ExclusiveArch: x86_64
- rocm-compilersupport
ExclusiveArch: x86_64 aarch64 ppc64le
- rocm-core
ExclusiveArch: x86_64
- rocm-rpm-macros
ExclusiveArch: x86_64
- rocm-runtime
ExclusiveArch: x86_64
- rocm-smi
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rocminfo
ExclusiveArch: x86_64
- rocprim
ExclusiveArch: x86_64
- rocrand
ExclusiveArch: x86_64
- rocsolver
ExclusiveArch: x86_64
- rocsparse
ExclusiveArch: x86_64
- rocthrust
ExclusiveArch: x86_64
- roctracer
ExclusiveArch: x86_64
- rpi-imager
ExcludeArch: s390x
- rpm-ostree
ExclusiveArch: %{rust_arches}
ExcludeArch: %{ix86}
- rpy
ExcludeArch: %{ix86}
- rr
ExclusiveArch: %{ix86} x86_64 aarch64
- rssguard
ExclusiveArch: %{qt6_qtwebengine_arches}
- rstudio
ExclusiveArch: %{java_arches}
- rsyntaxtextarea
ExclusiveArch: %{java_arches} noarch
- rubiks
ExcludeArch: %{ix86}
- rubygem-childprocess
ExclusiveArch: %{ix86} x86_64 noarch
- ruff
ExcludeArch: %{ix86}
- ruff-lsp
ExcludeArch: %{ix86}
- runc
ExclusiveArch: %{golang_arches_future}
- rundoc
ExclusiveArch: %{java_arches} noarch
- rust
ExclusiveArch: %{rust_arches}
- rust-bankstown-lv2
ExcludeArch: ppc64le s390x
- rust-below
ExcludeArch: %{arm32} %{ix86}
- rust-below-btrfs
ExcludeArch: %{arm32} %{ix86}
- rust-below-config
ExcludeArch: %{arm32} %{ix86}
- rust-below-dump
ExcludeArch: %{arm32} %{ix86}
- rust-below-ethtool
ExcludeArch: %{arm32} %{ix86}
- rust-below-model
ExcludeArch: %{arm32} %{ix86}
- rust-below-render
ExcludeArch: %{arm32} %{ix86}
- rust-below-store
ExcludeArch: %{arm32} %{ix86}
- rust-below-view
ExcludeArch: %{arm32} %{ix86}
- rust-cgroupfs
ExcludeArch: %{arm32} %{ix86}
- rust-compress-tools
ExclusiveArch: %{rust_arches}
- rust-crypto-auditing-agent
ExcludeArch: i386 i686
- rust-ct-logs
ExcludeArch: ppc64le s390x
- rust-ctr
ExclusiveArch: %{rust_arches}
- rust-dashmap4
ExclusiveArch: %{rust_arches}
- rust-deflate
ExclusiveArch: %{rust_arches}
- rust-deflate0.8
ExclusiveArch: %{rust_arches}
- rust-getch
ExclusiveArch: %{rust_arches}
- rust-gzip-header
ExclusiveArch: %{rust_arches}
- rust-hamming
ExclusiveArch: %{rust_arches}
- rust-hidapi
ExclusiveArch: %{rust_arches}
- rust-humantime-serde
ExclusiveArch: %{rust_arches}
- rust-hyperlocal
ExclusiveArch: %{rust_arches}
- rust-inflate
ExclusiveArch: %{rust_arches}
- rust-k9
ExclusiveArch: %{rust_arches}
- rust-krunvm
ExclusiveArch: x86_64 aarch64
- rust-kstring
ExclusiveArch: %{rust_arches}
- rust-kvm-bindings
ExcludeArch: %{ix86}
- rust-kvm-ioctls
ExclusiveArch: x86_64 aarch64
- rust-lebe
ExclusiveArch: %{rust_arches}
- rust-lv2
ExcludeArch: ppc64le s390x
- rust-lv2-atom
ExcludeArch: ppc64le s390x
- rust-lv2-core
ExcludeArch: ppc64le s390x
- rust-lv2-midi
ExcludeArch: ppc64le s390x
- rust-lv2-state
ExcludeArch: ppc64le s390x
- rust-lv2-sys
ExcludeArch: ppc64le s390x
- rust-lv2-time
ExcludeArch: ppc64le s390x
- rust-lv2-units
ExcludeArch: ppc64le s390x
- rust-lv2-urid
ExcludeArch: ppc64le s390x
- rust-lv2-worker
ExcludeArch: ppc64le s390x
- rust-msru
ExclusiveArch: x86_64
- rust-netstat2
ExclusiveArch: %{rust_arches}
- rust-nu
ExcludeArch: %{ix86}
- rust-oci-spec
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
ExcludeArch: %{ix86}
- rust-onig
ExclusiveArch: %{rust_arches}
- rust-openat-ext
ExclusiveArch: %{rust_arches}
- rust-os_type
ExclusiveArch: %{rust_arches}
- rust-pager
ExclusiveArch: %{rust_arches}
- rust-pathsearch
ExclusiveArch: %{rust_arches}
- rust-prefixdevname
ExcludeArch: %{ix86}
- rust-pretty-bytes
ExclusiveArch: %{rust_arches}
- rust-probe
ExcludeArch: ppc64le s390x
- rust-psl-types
ExclusiveArch: %{rust_arches}
- rust-psm
ExclusiveArch: %{rust_arches}
- rust-pwd
ExclusiveArch: %{rust_arches}
- rust-rand_core
ExclusiveArch: %{rust_arches}
- rust-resctrlfs
ExcludeArch: %{arm32} %{ix86}
- rust-schemafy_core
ExclusiveArch: %{rust_arches}
- rust-schemafy_lib
ExclusiveArch: %{rust_arches}
- rust-scx_layered
ExcludeArch: %{ix86}
- rust-scx_rustland
ExcludeArch: %{ix86}
- rust-scx_rusty
ExcludeArch: %{ix86}
- rust-scx_utils
ExcludeArch: %{ix86}
- rust-seahash
ExclusiveArch: %{rust_arches}
- rust-sequoia-octopus-librnp
ExcludeArch: %{ix86} %{arm} s390x
- rust-serde_yaml0.8
ExclusiveArch: %{rust_arches}
- rust-sev
ExclusiveArch: x86_64
- rust-sevctl
ExclusiveArch: x86_64
- rust-sinit
ExclusiveArch: %{rust_arches}
- rust-snphost
ExclusiveArch: x86_64
- rust-ssh-key-dir
ExclusiveArch: %{rust_arches}
- rust-stacker
ExclusiveArch: %{rust_arches}
- rust-structopt
ExclusiveArch: %{rust_arches}
- rust-tiny-dfr
ExcludeArch: %{ix86}
- rust-totp-lite
ExclusiveArch: %{rust_arches}
- rust-tower-layer
ExclusiveArch: %{rust_arches}
- rust-tpm2-policy
ExclusiveArch: %{rust_arches}
- rust-unicode-xid
ExclusiveArch: %{rust_arches}
- rust-uriparse
ExclusiveArch: %{rust_arches}
- rust-varlink_generator
ExclusiveArch: %{rust_arches}
- rust-varlink_parser
ExclusiveArch: %{rust_arches}
- rust-vhost-device-scmi
ExcludeArch: s390x
- rust-vhost-device-sound
ExcludeArch: %{ix86} s390x
- rust-virtio-bindings
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-virtio-queue
ExcludeArch: i686
- rust-vm-memory
ExcludeArch: %{ix86}
- rust-vmm-sys-util
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- rust-vtparse
ExclusiveArch: %{rust_arches}
- rust-web-ext-native-messaging
ExclusiveArch: %{rust_arches}
- rust-wezterm-color-types
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic
ExclusiveArch: %{rust_arches}
- rust-wezterm-dynamic-derive
ExclusiveArch: %{rust_arches}
- rust-zbus1
ExclusiveArch: %{rust_arches}
- rust-zbus_macros1
ExclusiveArch: %{rust_arches}
- rust-zincati
ExcludeArch: armv7hl i686
- rust-zvariant2
ExclusiveArch: %{rust_arches}
- rust-zvariant_derive2
ExclusiveArch: %{rust_arches}
- rustup
ExcludeArch: %{ix86}
- rutabaga-gfx-ffi
ExclusiveArch: x86_64 aarch64
- s2n-tls
ExcludeArch: %{ix86}
ExcludeArch: s390x
- s390utils
ExcludeArch: %{ix86}
- sac
ExclusiveArch: %{java_arches} noarch
- safeint
ExcludeArch: %{ix86}
- safetyblanket
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc64le
- sandia-omega-h
ExcludeArch: %{ix86} s390x
- sat4j
ExclusiveArch: %{java_arches} noarch
- sayonara
ExcludeArch: %{ix86}
- sbcl
ExclusiveArch: %{ix86} x86_64 aarch64 %{power64}
- sbd
ExclusiveArch: i686 x86_64 s390x aarch64 ppc64le
- sblim-cim-client
ExclusiveArch: %{java_arches} noarch
- sblim-cim-client2
ExclusiveArch: %{java_arches} noarch
- sbsigntools
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- scala
ExclusiveArch: %{java_arches} noarch
- scalasca
ExcludeArch: s390 s390x armv7hl i686
- scannotation
ExclusiveArch: %{java_arches} noarch
- scip
ExcludeArch: %{ix86}
- scorep
ExcludeArch: s390 s390x armv7hl i686
- scx_c_schedulers
ExcludeArch: %{ix86}
- sdljava
ExclusiveArch: %{java_arches}
- sdrangel
ExclusiveArch: %{qt5_qtwebengine_arches}
- sdsl-lite
ExclusiveArch: %{power64} x86_64 aarch64
- sdubby
ExclusiveArch: %{efi}
- seabios
ExclusiveArch: x86_64
- seadrive-gui
ExclusiveArch: %{qt5_qtwebengine_arches}
- seafile-client
ExclusiveArch: %{qt6_qtwebengine_arches}
- seamonkey
ExclusiveArch: x86_64
- sedutil
ExcludeArch: ppc ppc64 s390 s390x
- sentencepiece
ExcludeArch: s390x
- seqan3
ExclusiveArch: %{power64} x86_64 aarch64
- sequeler
ExcludeArch: %{ix86}
- sequence-library
ExclusiveArch: %{java_arches} noarch
- servicelog
ExclusiveArch: ppc %{power64}
- setserial
ExcludeArch: s390 s390x
- sfnt2woff-zopfli
ExcludeArch: %{ix86}
- sharedmeataxe
ExcludeArch: %{ix86}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: %{efi}
ExcludeArch: %{ix86}
ExcludeArch: %{arm}
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- shim-unsigned-x64
ExclusiveArch: x86_64
- sigil
ExclusiveArch: %{qt5_qtwebengine_arches}
ExcludeArch: %{ix86}
- sigul
ExclusiveArch: x86_64
ExcludeArch: %{ix86}
- simdutf
ExcludeArch: s390 s390x
- singularity-ce
ExclusiveArch: %{go_arches}
ExcludeArch: %{ix86}
- siril
ExcludeArch: %{ix86}
- sirocco
ExcludeArch: %{ix86}
- sisu
ExclusiveArch: %{java_arches} noarch
- sisu-mojos
ExclusiveArch: %{java_arches} noarch
- skanpage
ExclusiveArch: %{qt6_qtwebengine_arches}
- ski
ExcludeArch: %{ix86}
ExcludeArch: aarch64
- skopeo
ExclusiveArch: %{golang_arches_future}
ExclusiveArch: aarch64 ppc64le s390x x86_64
- skychart
ExclusiveArch: %{fpc_arches}
ExcludeArch: %{ix86}
- slapi-nis
ExcludeArch: %{ix86}
- sleef
ExcludeArch: %{ix86}
- slf4j
ExclusiveArch: %{java_arches} noarch
- slic3r
ExcludeArch: %{ix86}
ExcludeArch: ppc ppc64 s390 s390x %{ix86}
ExcludeArch: ppc ppc64 s390 s390x
- slick-greeter
ExcludeArch: %{ix86}
- slimdata
ExcludeArch: ppc64 ppc sparcv9 sparc64
- slirp4netns
ExclusiveArch: %{golang_arches_future}
- slurm
ExcludeArch: armv7hl
ExcludeArch: i686
- smartmontools
ExcludeArch: %{ix86}
- snapd
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x}
- snapshot
ExcludeArch: %{ix86}
- snip
ExclusiveArch: %{java_arches} noarch
- softnet-stat
ExclusiveArch: %{rust_arches}
- soplex
ExcludeArch: %{ix86}
- sound-juicer
ExcludeArch: s390 s390x
- soup-sharp
ExclusiveArch: %{mono_arches}
- sourcextractor++
ExcludeArch: %{ix86}
- spacebar
ExclusiveArch: %{java_arches}
- sparkleshare
ExclusiveArch: %{mono_arches}
ExcludeArch: %{ix86}
- spasm
ExcludeArch: %{ix86}
- spec-version-maven-plugin
ExclusiveArch: %{java_arches} noarch
- speed-dreams
ExcludeArch: s390x
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 riscv64
- spice-parent
ExclusiveArch: %{java_arches} noarch
- springlobby
ExclusiveArch: %{ix86} x86_64
- spyder
ExcludeArch: %{ix86}
ExclusiveArch: %{qt5_qtwebengine_arches} noarch
- squeekboard
ExclusiveArch: %{rust_arches}
ExcludeArch: ppc64le
ExcludeArch: s390x
- squirrel
ExcludeArch: %{ix86}
- startdde
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- stats-collect
ExclusiveArch: %{ix86} x86_64 noarch
- statsd
ExclusiveArch: %{nodejs_arches} noarch
- statserial
ExcludeArch: s390 s390x
- steinberg-bravura-fonts
ExcludeArch: %{ix86}
- steinberg-petaluma-fonts
ExcludeArch: %{ix86}
- stellarium
ExcludeArch: armv7hl
- stlsplit
ExcludeArch: %{ix86}
- stp
ExcludeArch: %{ix86}
- stratis-cli
ExclusiveArch: %{rust_arches} noarch
ExcludeArch: i686
- stratisd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- string-template-maven-plugin
ExclusiveArch: %{java_arches} noarch
- stringtemplate
ExclusiveArch: %{java_arches} noarch
- stringtemplate4
ExclusiveArch: %{java_arches} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- subscription-manager-cockpit
ExclusiveArch: %{nodejs_arches} noarch
- supercollider
ExclusiveArch: %{qt5_qtwebengine_arches}
- supermin
ExcludeArch: %{ix86}
ExclusiveArch: %{kernel_arches}
ExcludeArch: %{power64}
- supertux
ExcludeArch: s390x
- suricata
ExcludeArch: ppc64le i686
- svt-vp9
ExclusiveArch: x86_64
- swift-lang
ExclusiveArch: x86_64 aarch64
- swiftlint
ExclusiveArch: x86_64 aarch64
- swing-layout
ExclusiveArch: %{java_arches} noarch
- symfpu
ExcludeArch: %{ix86}
- symmetrica
ExcludeArch: %{ix86}
- sympol
ExcludeArch: %{ix86}
- sympow
ExcludeArch: %{ix86}
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64le s390x
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- system-rules
ExclusiveArch: %{java_arches} noarch
- systemd-boot
ExclusiveArch: %efi
- t-digest
ExclusiveArch: %{java_arches} noarch
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tagsoup
ExclusiveArch: %{java_arches} noarch
- tarantool
ExclusiveArch: %{ix86} x86_64
- tboot
ExclusiveArch: %{ix86} x86_64
- tcmu-runner
ExcludeArch: i686 armv7hl
- tdlib
ExclusiveArch: x86_64 aarch64
- teem
ExcludeArch: %{ix86}
- templates_parser
ExclusiveArch: %GPRbuild_arches
- terminology
ExcludeArch: s390x
- terminus-fonts
ExcludeArch: %{grub2_exclude_arches}
- ternimal
ExclusiveArch: %{rust_arches}
- testcloud
ExclusiveArch: %{kernel_arches} noarch
- testng
ExclusiveArch: %{java_arches} noarch
- texlive
ExclusiveArch: %{java_arches} noarch
- texmaker
ExclusiveArch: %{qt6_qtwebengine_arches}
ExcludeArch: ppc64 ppc64le s390x
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird
ExcludeArch: armv7hl
ExcludeArch: s390x
- tiled
ExcludeArch: %{ix86}
- tilix
ExclusiveArch: %{ldc_arches}
- tinygo
ExcludeArch: ppc64le s390x
ExcludeArch: %{ix86}
- tokodon
ExclusiveArch: %{qt6_qtwebengine_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tomcat
ExclusiveArch: %{java_arches} noarch
- tomcat-jakartaee-migration
ExclusiveArch: %{java_arches} noarch
- tomcat-native
ExclusiveArch: %{java_arches}
- tomcat-taglibs-parent
ExclusiveArch: %{java_arches} noarch
- torbrowser-launcher
ExclusiveArch: %{ix86} x86_64
- trace-cmd
ExcludeArch: %{ix86} %{arm}
- trafficserver
ExcludeArch: %{arm} %{ix86} s390x
- treelayout
ExclusiveArch: %{java_arches} noarch
- trilead-ssh2
ExclusiveArch: %{java_arches} noarch
- trojita
ExcludeArch: ppc64 ppc64le s390x
- trunk
ExcludeArch: %{ix86}
- truth
ExclusiveArch: %{java_arches} noarch
- tth
ExcludeArch: %{ix86}
- tuned-profiles-nfv-host-bin
ExclusiveArch: %{ix86} x86_64
- tuxguitar
ExcludeArch: s390 %{arm} %{ix86}
- tvtime
ExcludeArch: s390 s390x
- typescript
ExclusiveArch: %{nodejs_arches} noarch
- tzdata
ExcludeArch: i686
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- uboot-tools
ExcludeArch: s390x
- ucx
ExclusiveArch: aarch64 ppc64le x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
- ugrep
ExcludeArch: %{ix86}
- umr
ExclusiveArch: x86_64 aarch64 ppc64le
- unetbootin
ExclusiveArch: %{ix86} x86_64
- unicorn
ExcludeArch: s390x
- unison
ExcludeArch: %{ix86}
- univocity-parsers
ExclusiveArch: %{java_arches} noarch
- ursa-major
ExclusiveArch: noarch aarch64 ppc64le s390x x86_64
- usbip
ExcludeArch: s390x
- usd
ExclusiveArch: aarch64 x86_64
- usnic-tools
ExcludeArch: %{arm}
- utop
ExcludeArch: %{ix86}
- uwsgi
ExcludeArch: %{ix86}
- v-hacd
ExcludeArch: %{ix86}
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- vakzination
ExclusiveArch: %{java_arches}
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- valkey
ExcludeArch: %{ix86}
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdo
ExcludeArch: %{ix86}
- vdr-tvscraper
ExcludeArch: armv7hl
- vecmath1.2
ExclusiveArch: %{java_arches} noarch
- vectorscan
ExcludeArch: s390x
- velocity
ExclusiveArch: %{java_arches} noarch
- viking
ExcludeArch: s390 s390x
- vim-go
ExclusiveArch: %{?golang_arches}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- vim-perl-support
ExcludeArch: %{ix86}
- vim-syntastic
ExclusiveArch: %{java_arches} noarch
- vinci
ExcludeArch: %{ix86}
- virt-p2v
ExclusiveArch: x86_64
- virt-top
ExcludeArch: %{ix86}
ExcludeArch: %{power64}
- virt-v2v
ExcludeArch: %{ix86}
ExclusiveArch: x86_64
- virtiofsd
ExclusiveArch: %{rust_arches}
ExcludeArch: i686
- virtualbox-guest-additions
ExclusiveArch: i686 x86_64
- visidata
ExcludeArch: %{ix86}
- visualboyadvance-m
ExcludeArch: %{ix86}
- vkd3d
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- vkmark
ExcludeArch: s390x
- vmaf
ExclusiveArch: x86_64
- voms-api-java
ExclusiveArch: %{java_arches} noarch
- voms-clients-java
ExclusiveArch: %{java_arches} noarch
- votca
ExcludeArch: %{ix86}
- vrq
ExclusiveArch: %{ix86} x86_64
- wangle
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{ix86} x86_64 %{arm}
- warzone2100
ExcludeArch: %{ix86}
- wasmedge
ExclusiveArch: x86_64 aarch64
- watchman
ExclusiveArch: x86_64 aarch64 ppc64le riscv64
- wdt
ExclusiveArch: x86_64 aarch64 ppc64le
- webkit2-sharp
ExclusiveArch: %mono_arches
- weld-parent
ExclusiveArch: %{java_arches} noarch
- whatip
ExcludeArch: s390x
- whipper
ExcludeArch: s390x
- whisper-cpp
ExclusiveArch: x86_64 aarch64 ppc64le
- why3
ExclusiveArch: %{ocaml_native_compiler}
- widevine-installer
ExclusiveArch: aarch64
- wildcard
ExcludeArch: %{ix86} s390x
- wine
ExclusiveArch: %{ix86} x86_64 aarch64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86}
- wine-dxvk
ExclusiveArch: %{ix86} x86_64
- wine-mono
ExcludeArch: %{power64} s390x s390
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExcludeArch: ppc64 ppc64le
- wlmaker
ExcludeArch: %{ix86} ppc64le
- woff
ExcludeArch: %{ix86}
- workrave
ExcludeArch: %{ix86}
- ws-commons-util
ExclusiveArch: %{java_arches} noarch
- wsdl4j
ExclusiveArch: %{java_arches} noarch
- wult
ExclusiveArch: x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x2goclient
ExclusiveArch: x86_64
- x2gokdrive
ExcludeArch: %{ix86}
- x86-simd-sort
ExclusiveArch: x86_64
- xalan-j2
ExclusiveArch: %{java_arches} noarch
- xapps
ExcludeArch: %{ix86}
- xbean
ExclusiveArch: %{java_arches} noarch
- xbyak
ExclusiveArch: x86_64
- xbyak_aarch64
ExclusiveArch: aarch64
- xdg-desktop-portal
ExcludeArch: %{ix86}
- xdg-desktop-portal-gnome
ExcludeArch: %{ix86}
- xdg-desktop-portal-gtk
ExcludeArch: %{ix86}
- xdg-desktop-portal-hyprland
ExcludeArch: %{ix86}
- xe-guest-utilities-latest
ExclusiveArch: %{ix86} x86_64
- xed
ExcludeArch: %{ix86}
- xen
ExclusiveArch: x86_64 aarch64
- xephem
ExcludeArch: %{ix86}
- xerces-j2
ExclusiveArch: %{java_arches} noarch
- xeus
ExcludeArch: %{ix86}
- xeus-zmq
ExcludeArch: %{ix86}
- xfce4-sensors-plugin
ExcludeArch: s390 s390x
- xgap
ExcludeArch: %{ix86}
- xiphos
ExcludeArch: ppc64
- xml-commons-apis
ExclusiveArch: %{java_arches} noarch
- xml-commons-resolver
ExclusiveArch: %{java_arches} noarch
- xml-maven-plugin
ExclusiveArch: %{java_arches} noarch
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xmlgraphics-commons
ExclusiveArch: %{java_arches} noarch
- xmlpull
ExclusiveArch: %{java_arches} noarch
- xmlstreambuffer
ExclusiveArch: %{java_arches} noarch
- xmlunit
ExclusiveArch: %{java_arches} noarch
- xmvn
ExclusiveArch: %{java_arches} noarch
- xmvn-connector-ivy
ExclusiveArch: %{java_arches} noarch
- xmvn-generator
ExclusiveArch: %{java_arches}
- xnnpack
ExclusiveArch: x86_64 aarch64
- xnvme
ExcludeArch: %{ix86}
- xorg-x11-drv-amdgpu
ExcludeArch: s390 s390x
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-ati
ExcludeArch: s390 s390x
- xorg-x11-drv-fbdev
ExcludeArch: s390 s390x
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-nouveau
ExcludeArch: s390 s390x
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-qxl
ExcludeArch: s390 s390x
- xorg-x11-drv-synaptics
ExcludeArch: s390 s390x
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xreader
ExcludeArch: %{ix86}
- xrgears
ExcludeArch: %{ix86}
- xsensors
ExcludeArch: %{ix86}
- xsp
ExclusiveArch: %mono_arches
- xstream
ExclusiveArch: %{java_arches} noarch
- xtb
ExcludeArch: s390x
- xtensor-python
ExcludeArch: armv7hl ppc64le s390x
- xz-java
ExclusiveArch: %{java_arches} noarch
- yarnpkg
ExclusiveArch: %{nodejs_arches}
- yices
ExcludeArch: %{ix86}
- yle-dl
ExcludeArch: %{ix86}
- yosys
ExcludeArch: %{ix86}
ExcludeArch: s390x
- zcfan
ExclusiveArch: x86_64
- zeal
ExclusiveArch: aarch64 x86_64
- zenon
ExclusiveArch: %{ocaml_native_compiler}
- zeromq-ada
ExclusiveArch: %{GPRbuild_arches}
- zfs-fuse
ExcludeArch: s390 s390x aarch64
- zig
ExclusiveArch: %{zig_arches}
- zile
ExcludeArch: ppc64le
- zimpl
ExcludeArch: %{ix86}
- zlib-ada
ExclusiveArch: %{GPRbuild_arches}
- zola
ExclusiveArch: %{rust_arches}
- zstr
ExcludeArch: %{ix86}
- zxcvbn-c
ExcludeArch: %{ix86}
- zycore-c
ExcludeArch: s390x
- zydis
ExcludeArch: s390x
3 days, 12 hours