diff --git a/.gitignore b/.gitignore index 7d186e8..ced5e17 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ /pyparted-3.11.5.tar.gz.asc /pyparted-3.11.7.tar.gz /pyparted-3.11.7.tar.gz.asc +/pyparted-3.12.0.tar.gz +/pyparted-3.12.0.tar.gz.asc diff --git a/pyparted-3.12.0-types.patch b/pyparted-3.12.0-types.patch new file mode 100644 index 0000000..14ece1f --- /dev/null +++ b/pyparted-3.12.0-types.patch @@ -0,0 +1,115 @@ +diff -up pyparted-3.12.0/src/parted/__init__.py.orig pyparted-3.12.0/src/parted/__init__.py +--- pyparted-3.12.0/src/parted/__init__.py.orig 2022-03-07 12:38:56.000000000 -0500 ++++ pyparted-3.12.0/src/parted/__init__.py 2022-07-14 12:28:09.687155151 -0400 +@@ -217,6 +217,14 @@ from _ped import DISK_GPT_PMBR_BOOT + from _ped import DISK_TYPE_EXTENDED + from _ped import DISK_TYPE_PARTITION_NAME + ++if hasattr(_ped, 'DISK_TYPE_PARTITION_TYPE_ID'): ++ # pylint: disable=E0611 ++ from _ped import DISK_TYPE_PARTITION_TYPE_ID ++ ++if hasattr(_ped, 'DISK_TYPE_PARTITION_TYPE_UUID'): ++ # pylint: disable=E0611 ++ from _ped import DISK_TYPE_PARTITION_TYPE_UUID ++ + from _ped import EXCEPTION_TYPE_INFORMATION + from _ped import EXCEPTION_TYPE_WARNING + from _ped import EXCEPTION_TYPE_ERROR +diff -up pyparted-3.12.0/src/_pedmodule.c.orig pyparted-3.12.0/src/_pedmodule.c +--- pyparted-3.12.0/src/_pedmodule.c.orig 2022-03-07 12:49:11.000000000 -0500 ++++ pyparted-3.12.0/src/_pedmodule.c 2022-07-14 12:59:46.270416021 -0400 +@@ -648,42 +648,20 @@ MOD_INIT(_ped) { + PyModule_AddIntConstant(m, "PARTITION_BIOS_GRUB", PED_PARTITION_BIOS_GRUB); + PyModule_AddIntConstant(m, "PARTITION_DIAG", PED_PARTITION_DIAG); + PyModule_AddIntConstant(m, "PARTITION_LEGACY_BOOT", PED_PARTITION_LEGACY_BOOT); +- +- /* NOTE: You cannot evaluate the enum PED_PARTITION_* values using the +- * preprocessor. DO NOT use #if or #ifdef with them. +- * +- * Conditionally add constants, based on PED_PARTITION_LAST_FLAG, and what +- * we know about parted/disk.h +- */ +-#if PED_PARTITION_LAST_FLAG > 15 + PyModule_AddIntConstant(m, "PARTITION_MSFT_DATA", PED_PARTITION_MSFT_DATA); +-#endif +- +-#if PED_PARTITION_LAST_FLAG > 16 + PyModule_AddIntConstant(m, "PARTITION_IRST", PED_PARTITION_IRST); +-#endif +- +-#if PED_PARTITION_LAST_FLAG > 17 + PyModule_AddIntConstant(m, "PARTITION_ESP", PED_PARTITION_ESP); +-#endif +- +-#if PED_PARTITION_LAST_FLAG > 18 + PyModule_AddIntConstant(m, "PARTITION_CHROMEOS_KERNEL", PED_PARTITION_CHROMEOS_KERNEL); +-#endif +- +-#if PED_PARTITION_LAST_FLAG > 19 + PyModule_AddIntConstant(m, "PARTITION_BLS_BOOT", PED_PARTITION_BLS_BOOT); +-#endif +- +-#if PED_PARTITION_LAST_FLAG > 20 + PyModule_AddIntConstant(m, "PARTITION_LINUX_HOME", PED_PARTITION_LINUX_HOME); +-#endif + + PyModule_AddIntConstant(m, "DISK_CYLINDER_ALIGNMENT", PED_DISK_CYLINDER_ALIGNMENT); + PyModule_AddIntConstant(m, "DISK_GPT_PMBR_BOOT", PED_DISK_GPT_PMBR_BOOT); + + PyModule_AddIntConstant(m, "DISK_TYPE_EXTENDED", PED_DISK_TYPE_EXTENDED); + PyModule_AddIntConstant(m, "DISK_TYPE_PARTITION_NAME", PED_DISK_TYPE_PARTITION_NAME); ++ PyModule_AddIntConstant(m, "DISK_TYPE_PARTITION_TYPE_ID", PED_DISK_TYPE_PARTITION_TYPE_ID); ++ PyModule_AddIntConstant(m, "DISK_TYPE_PARTITION_TYPE_UUID", PED_DISK_TYPE_PARTITION_TYPE_UUID); + + /* add PedFileSystemType as _ped.FileSystemType */ + if (PyType_Ready(&_ped_FileSystemType_Type_obj) < 0) +diff -up pyparted-3.12.0/tests/test__ped_disktype.py.orig pyparted-3.12.0/tests/test__ped_disktype.py +--- pyparted-3.12.0/tests/test__ped_disktype.py.orig 2018-01-12 13:31:40.000000000 -0500 ++++ pyparted-3.12.0/tests/test__ped_disktype.py 2022-07-14 12:28:09.687155151 -0400 +@@ -63,11 +63,22 @@ class DiskTypeCheckFeatureTestCase(Requi + self.assertTrue(self.disktype[name].check_feature(_ped.DISK_TYPE_EXTENDED)) + self.assertFalse(self.disktype[name].check_feature(_ped.DISK_TYPE_PARTITION_NAME)) + ++ if hasattr(_ped, "DISK_TYPE_PARTITION_TYPE_ID"): ++ self.assertTrue(self.disktype[name].check_feature(_ped.DISK_TYPE_PARTITION_TYPE_ID)) ++ ++ if hasattr(_ped, "DISK_TYPE_PARTITION_TYPE_UUID"): ++ self.assertFalse(self.disktype[name].check_feature(_ped.DISK_TYPE_PARTITION_TYPE_UUID)) ++ + # The following types support DISK_TYPE_PARTITION_NAME + for name in ['amiga', 'gpt', 'mac', 'pc98']: + self.assertFalse(self.disktype[name].check_feature(_ped.DISK_TYPE_EXTENDED)) + self.assertTrue(self.disktype[name].check_feature(_ped.DISK_TYPE_PARTITION_NAME)) + ++ # The following types support DISK_TYPE_PARTITION_TYPE_UUID ++ for name in ['gpt']: ++ if hasattr(_ped, "DISK_TYPE_PARTITION_TYPE_UUID"): ++ self.assertTrue(self.disktype[name].check_feature(_ped.DISK_TYPE_PARTITION_TYPE_UUID)) ++ + # The following types support all features + for name in ['dvh']: + self.assertTrue(self.disktype[name].check_feature(_ped.DISK_TYPE_EXTENDED)) +@@ -75,11 +86,20 @@ class DiskTypeCheckFeatureTestCase(Requi + + class DiskTypeStrTestCase(RequiresDiskTypes): + def runTest(self): +- self.assertEqual(str(self.disktype['msdos']), '_ped.DiskType instance --\n name: msdos features: 1') ++ if hasattr(_ped, "DISK_TYPE_PARTITION_TYPE_ID"): ++ self.assertEqual(str(self.disktype['msdos']), '_ped.DiskType instance --\n name: msdos features: 5') ++ else: ++ self.assertEqual(str(self.disktype['msdos']), '_ped.DiskType instance --\n name: msdos features: 1') ++ + self.assertEqual(str(self.disktype['aix']), '_ped.DiskType instance --\n name: aix features: 0') + self.assertEqual(str(self.disktype['sun']), '_ped.DiskType instance --\n name: sun features: 0') + self.assertEqual(str(self.disktype['amiga']), '_ped.DiskType instance --\n name: amiga features: 2') +- self.assertEqual(str(self.disktype['gpt']), '_ped.DiskType instance --\n name: gpt features: 2') ++ ++ if hasattr(_ped, "DISK_TYPE_PARTITION_TYPE_UUID"): ++ self.assertEqual(str(self.disktype['gpt']), '_ped.DiskType instance --\n name: gpt features: 10') ++ else: ++ self.assertEqual(str(self.disktype['gpt']), '_ped.DiskType instance --\n name: gpt features: 2') ++ + self.assertEqual(str(self.disktype['mac']), '_ped.DiskType instance --\n name: mac features: 2') + self.assertEqual(str(self.disktype['bsd']), '_ped.DiskType instance --\n name: bsd features: 0') + self.assertEqual(str(self.disktype['pc98']), '_ped.DiskType instance --\n name: pc98 features: 2') diff --git a/pyparted.spec b/pyparted.spec index 1965d8c..fda6cf2 100644 --- a/pyparted.spec +++ b/pyparted.spec @@ -33,8 +33,8 @@ Summary: Python module for GNU parted Name: pyparted Epoch: 1 -Version: 3.11.7 -Release: 4%{?dist} +Version: 3.12.0 +Release: 1%{?dist} License: GPLv2+ URL: https://github.com/dcantrell/pyparted @@ -43,9 +43,14 @@ Source1: https://github.com/dcantrell/pyparted/releases/download/v%{version}/%{n Source2: keyring.gpg Source3: trustdb.gpg +# Support new disk type features from parted 3.5: +# https://bugzilla.redhat.com/show_bug.cgi?id=2098792 +# https://github.com/dcantrell/pyparted/issues/91 +Patch0: pyparted-3.12.0-types.patch + BuildRequires: make BuildRequires: gcc -BuildRequires: parted-devel >= 3.3 +BuildRequires: parted-devel >= 3.5 BuildRequires: pkgconfig BuildRequires: e2fsprogs BuildRequires: gnupg2 @@ -53,6 +58,7 @@ BuildRequires: gnupg2 %if %{with python3} BuildRequires: python3-devel BuildRequires: python3-six +BuildRequires: python3-setuptools %endif %if %{with python2} @@ -92,6 +98,7 @@ partition tables. This package provides Python 3 bindings for parted. gpg --no-default-keyring --keyring %{SOURCE2} --trustdb-name %{SOURCE3} --verify %{SOURCE1} %{SOURCE0} || exit 1 %setup -q +%patch0 -p1 %if %{with python3} everything=$(ls) @@ -149,6 +156,12 @@ popd %endif %changelog +* Tue Jun 21 2022 David Cantrell - 1:3.12.0-1 +- Patch pyparted to handle PED_DISK_TYPE_PARTITION_TYPE_ID for the + msdos disk type and PED_DISK_TYPE_PARTITION_TYPE_UUID for the gpt + label + Resolves: rhbz#2103243 + * Tue Aug 10 2021 Mohan Boddu - 1:3.11.7-4 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688 diff --git a/sources b/sources index f1c1c2b..7f89792 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (pyparted-3.11.7.tar.gz) = 41018989c21aab577cd1d51f521128d072b346afb9dcdcc27490cdbc2ed4382a854e4bd16780da72a0a95bbd521f14ee0e7f02816f34656cbae734d43a4f0b83 -SHA512 (pyparted-3.11.7.tar.gz.asc) = 669770930307f57bfd8b1d11418f3fbc1415747aec5cde001efe7b132724996e42271f4df79148e616c2ba76527dfafceeeb1d3374cbd14a16bd545dd716c15c +SHA512 (pyparted-3.12.0.tar.gz) = 0179e5334be8c04287b10b47d407ad339933cd3e20514d2142fe968acf8a36c40e541ee5165e2b3699a40b133d8f1948d8d12ccf307d3a1736090fb33f28b7e7 +SHA512 (pyparted-3.12.0.tar.gz.asc) = 452d386fbc8b84fa0dc186bb75c6c12eb051c8a37575e5a3a0cf504d13c4b2a0134d7e486928f9af7d142d25802bda05c97fd95ff80721ae6f6c0abedb8b1614