diff --git a/0001-btrfs-Restore-support-for-Btrfs-on-RHEL10.patch b/0001-btrfs-Restore-support-for-Btrfs-on-RHEL10.patch new file mode 100644 index 0000000..5d0741e --- /dev/null +++ b/0001-btrfs-Restore-support-for-Btrfs-on-RHEL10.patch @@ -0,0 +1,170 @@ +From adf4df4605970b07d637475a0d78cfddc4640eb9 Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Fri, 24 Oct 2025 09:07:23 -0400 +Subject: [PATCH] btrfs: Restore support for Btrfs on RHEL10 + +Red Hat Enterprise Linux and baseline CentOS Stream have +removed support for Btrfs, but we need it back for CentOS Hyperscale. +--- + pykickstart/commands/autopart.py | 32 +------------------------------ + pykickstart/commands/btrfs.py | 9 +++------ + pykickstart/commands/logvol.py | 2 +- + pykickstart/commands/partition.py | 2 +- + pykickstart/commands/raid.py | 6 +++--- + tests/commands/autopart.py | 3 +-- + tests/commands/btrfs.py | 7 ++----- + 7 files changed, 12 insertions(+), 49 deletions(-) + +diff --git a/pykickstart/commands/autopart.py b/pykickstart/commands/autopart.py +index d7b5c072..3e77e4f6 100644 +--- a/pykickstart/commands/autopart.py ++++ b/pykickstart/commands/autopart.py +@@ -599,34 +599,4 @@ class F38_AutoPart(F29_AutoPart): + return retval + + class RHEL10_AutoPart(F38_AutoPart): +- removedKeywords = F38_AutoPart.removedKeywords +- removedAttrs = F38_AutoPart.removedAttrs +- +- def parse(self, args): +- # call the overriden command to do it's job first +- retval = F38_AutoPart.parse(self, args) +- +- # btrfs is no more supported +- if self._typeAsStr() == "btrfs": +- raise KickstartParseError(_("autopart --type=btrfs is not supported"), +- lineno=self.lineno) +- +- return retval +- +- def _getParser(self): +- "Only necessary for the type change documentation" +- op = F38_AutoPart._getParser(self) +- for action in op._actions: +- if "--type" in action.option_strings: +- action.help += """ +- +- .. versionchanged:: %s +- +- Partitioning scheme 'btrfs' was removed.""" % versionToLongString(RHEL8) +- if "--fstype" in action.option_strings: +- action.help += """ +- +- .. versionchanged:: %s +- +- Partitioning scheme 'btrfs' was removed.""" % versionToLongString(RHEL8) +- return op ++ pass +diff --git a/pykickstart/commands/btrfs.py b/pykickstart/commands/btrfs.py +index ac22c71f..a2825bf6 100644 +--- a/pykickstart/commands/btrfs.py ++++ b/pykickstart/commands/btrfs.py +@@ -19,7 +19,7 @@ + # with the express permission of Red Hat, Inc. + # + from pykickstart.version import F17, F23, RHEL8, RHEL10, versionToLongString +-from pykickstart.base import BaseData, KickstartCommand, DeprecatedCommand, RemovedCommand ++from pykickstart.base import BaseData, KickstartCommand, DeprecatedCommand + from pykickstart.errors import KickstartParseError, KickstartParseWarning + from pykickstart.options import KSOptionParser, mountpoint + +@@ -280,8 +280,5 @@ class RHEL8_BTRFS(DeprecatedCommand, F23_BTRFS): + class RHEL9_BTRFS(RHEL8_BTRFS): + pass + +-class RHEL10_BTRFS(RemovedCommand, RHEL8_BTRFS): +- def _getParser(self): +- op = RHEL8_BTRFS._getParser(self) +- op.description += "\n\n.. versionremoved:: %s" % versionToLongString(RHEL10) +- return op ++class RHEL10_BTRFS(F23_BTRFS): ++ pass +diff --git a/pykickstart/commands/logvol.py b/pykickstart/commands/logvol.py +index 3a3b4e4a..8325918a 100644 +--- a/pykickstart/commands/logvol.py ++++ b/pykickstart/commands/logvol.py +@@ -933,5 +933,5 @@ class RHEL8_LogVol(F29_LogVol): + class RHEL9_LogVol(RHEL8_LogVol): + pass + +-class RHEL10_LogVol(RHEL8_LogVol): ++class RHEL10_LogVol(F29_LogVol): + pass +diff --git a/pykickstart/commands/partition.py b/pykickstart/commands/partition.py +index c3ef7ab8..b86fe104 100644 +--- a/pykickstart/commands/partition.py ++++ b/pykickstart/commands/partition.py +@@ -777,5 +777,5 @@ class RHEL9_Partition(F34_Partition): + Btrfs support was removed.""" % versionToLongString(RHEL8) + return op + +-class RHEL10_Partition(RHEL9_Partition): ++class RHEL10_Partition(F34_Partition): + pass +diff --git a/pykickstart/commands/raid.py b/pykickstart/commands/raid.py +index cc922167..9a0091d8 100644 +--- a/pykickstart/commands/raid.py ++++ b/pykickstart/commands/raid.py +@@ -792,9 +792,9 @@ class RHEL8_Raid(F29_Raid): + class RHEL9_Raid(RHEL8_Raid): + pass + +-class RHEL10_Raid(RHEL8_Raid): +- removedKeywords = RHEL8_Raid.removedKeywords +- removedAttrs = RHEL8_Raid.removedAttrs ++class RHEL10_Raid(F29_Raid): ++ removedKeywords = F29_Raid.removedKeywords ++ removedAttrs = F29_Raid.removedAttrs + + def _device_cb(self, value): + # do not remove the "md" prefix from array name in RHEL10 and later +diff --git a/tests/commands/autopart.py b/tests/commands/autopart.py +index e7e8b220..81d459ee 100644 +--- a/tests/commands/autopart.py ++++ b/tests/commands/autopart.py +@@ -165,7 +165,7 @@ class F17_TestCase(F16_TestCase): + self.assert_parse("autopart --type=lvm", + "autopart --type=lvm\n") + +- if self.__class__.__name__ not in ["RHEL8_TestCase", "RHEL10_TestCase"]: ++ if self.__class__.__name__ not in ["RHEL8_TestCase"]: + self.assert_parse("autopart --type=btrfs", + "autopart --type=btrfs\n") + +@@ -358,7 +358,6 @@ class F38_TestCase(F29_TestCase): + class RHEL10_TestCase(F38_TestCase): + def runTest(self): + F38_TestCase.runTest(self) +- self.assert_parse_error("autopart --type=btrfs") + + if __name__ == "__main__": + unittest.main() +diff --git a/tests/commands/btrfs.py b/tests/commands/btrfs.py +index 8fee1f11..7e9043aa 100644 +--- a/tests/commands/btrfs.py ++++ b/tests/commands/btrfs.py +@@ -20,7 +20,6 @@ + + import unittest + from tests.baseclass import CommandTest, CommandSequenceTest +-from pykickstart.base import RemovedCommand + from pykickstart.commands.btrfs import F17_BTRFSData, F23_BTRFSData + from pykickstart.errors import KickstartParseError, KickstartParseWarning + from pykickstart.version import F17 +@@ -199,11 +198,9 @@ class RHEL7_TestCase(F23_TestCase): + def runTest(self): + F23_TestCase.runTest(self) + +-class RHEL10_TestCase(RHEL7_TestCase): ++class RHEL10_TestCase(F23_TestCase): + def runTest(self): +- # make sure we've been removed +- parser = self.getParser("btrfs") +- self.assertEqual(issubclass(parser.__class__, RemovedCommand), True) ++ F23_TestCase.runTest(self) + + if __name__ == "__main__": + unittest.main() +-- +2.51.0 + diff --git a/pykickstart.spec b/pykickstart.spec index debabd3..ce58d41 100644 --- a/pykickstart.spec +++ b/pykickstart.spec @@ -5,7 +5,7 @@ Name: pykickstart Version: 3.52.9 -Release: 1%{?dist} +Release: 1%{?dist}.alma.1 License: GPL-2.0-only Summary: Python utilities for manipulating kickstart files. Url: http://fedoraproject.org/wiki/pykickstart @@ -17,6 +17,9 @@ Source0: %{name}-%{version}.tar.gz Source1: %{name}-%{version}.tar.gz.asc %endif + +# AlmaLinux Patch +Patch1001: 0001-btrfs-Restore-support-for-Btrfs-on-RHEL10.patch BuildArch: noarch BuildRequires: gettext @@ -44,7 +47,7 @@ Python 3 library for manipulating kickstart files. The binaries are found in the pykickstart package. %prep -%setup -q +%autosetup -p 1 %build make PYTHON=%{__python3} @@ -78,6 +81,9 @@ LC_ALL=C make PYTHON=%{__python3} test-no-coverage %{python3_sitelib}/pykickstart*.egg-info %changelog +* Tue Nov 11 2025 Neal Gompa - 3.52.9-1.alma.1 +- AlmaLinux changes: Enable Btrfs support + * Tue May 27 2025 Brian C. Lane - 3.52.9-1 - workflows: Switch to using ubuntu-latest (bcl) Related: RHEL-80086