diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 7d186e8..58dd8ea 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ /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 +/pyparted-3.13.0.tar.gz +/pyparted-3.13.0.tar.gz.asc diff --git a/plans/run-tests.fmf b/plans/run-tests.fmf new file mode 100644 index 0000000..cf8a582 --- /dev/null +++ b/plans/run-tests.fmf @@ -0,0 +1,9 @@ +summary: Run pyparted tests +prepare: + how: install + package: + - python3-pyparted +execute: + script: | + fallocate -l 1G $PWD/disk.img + ./tests/scripts/pyparted-tests $PWD/disk.img diff --git a/pyparted.spec b/pyparted.spec index 91aff3c..ad79d71 100644 --- a/pyparted.spec +++ b/pyparted.spec @@ -1,154 +1,155 @@ -%if 0%{?rhel} -%if %{rhel} <= 7 -# disable python3 by default -%bcond_with python3 -%else -%bcond_without python3 -%endif +Summary: Python module for GNU parted +Name: pyparted +Epoch: 1 +Version: 3.13.0 +Release: 17%{?dist} +License: GPL-2.0-or-later +URL: https://github.com/dcantrell/pyparted -%if %{rhel} > 7 -# disable python2 by default -%bcond_with python2 -%else -%bcond_without python2 -%endif -%endif - -%if 0%{?fedora} -%if %{fedora} < 23 -# disable python3 by default -%bcond_with python3 -%else -%bcond_without python3 -%endif - -%if %{fedora} > 31 -# disable python2 by default -%bcond_with python2 -%else -%bcond_without python2 -%endif -%endif - -Summary: Python module for GNU parted -Name: pyparted -Epoch: 1 -Version: 3.11.7 -Release: 2%{?dist} -License: GPLv2+ -URL: https://github.com/dcantrell/pyparted - -Source0: https://github.com/dcantrell/pyparted/releases/download/v%{version}/%{name}-%{version}.tar.gz -Source1: https://github.com/dcantrell/pyparted/releases/download/v%{version}/%{name}-%{version}.tar.gz.asc -Source2: keyring.gpg -Source3: trustdb.gpg +Source0: https://github.com/dcantrell/pyparted/releases/download/v%{version}/%{name}-%{version}.tar.gz +Source1: https://github.com/dcantrell/pyparted/releases/download/v%{version}/%{name}-%{version}.tar.gz.asc +Source2: keyring.gpg +Source3: trustdb.gpg BuildRequires: make BuildRequires: gcc -BuildRequires: parted-devel >= 3.3 +BuildRequires: parted-devel >= 3.4 BuildRequires: pkgconfig BuildRequires: e2fsprogs BuildRequires: gnupg2 - -%if %{with python3} BuildRequires: python3-devel -BuildRequires: python3-six -%endif +BuildRequires: python3-setuptools -%if %{with python2} -BuildRequires: python2-devel -BuildRequires: python2-six -%endif - -%global _description\ -Python module for the parted library. It is used for manipulating\ +%description +Python module for the parted library. It is used for manipulating partition tables. -%description %_description - -%if %{with python2} -%package -n python2-pyparted -Summary: %summary -%{?python_provide:%python_provide python2-pyparted} -# Remove before F30 -Provides: pyparted = %{epoch}:%{version}-%{release} -Provides: pyparted%{?_isa} = %{epoch}:%{version}-%{release} -Obsoletes: pyparted < %{epoch}:%{version}-%{release} - -%description -n python2-pyparted %_description -%endif - -%if %{with python3} %package -n python3-pyparted Summary: Python 3 module for GNU parted %description -n python3-pyparted Python module for the parted library. It is used for manipulating partition tables. This package provides Python 3 bindings for parted. -%endif %prep # Verify source archive signature gpg --no-default-keyring --keyring %{SOURCE2} --trustdb-name %{SOURCE3} --verify %{SOURCE1} %{SOURCE0} || exit 1 -%setup -q - -%if %{with python3} -everything=$(ls) -mkdir -p py3dir -cp -a $everything py3dir -%endif +%autosetup %build -%if %{with python2} -PYTHON=python2 %make_build CFLAGS="%{optflags} -fcommon" -%endif - -%if %{with python3} -pushd py3dir -PYTHON=python3 %make_build CFLAGS="%{optflags} -fcommon" -popd -%endif +%make_build CFLAGS="%{optflags} -fcommon" %check -%if %{with python2} -PYTHON=python2 make test -%endif - -%if %{with python3} -pushd py3dir -PYTHON=python3 make test -popd -%endif +make test %install -%if %{with python2} -PYTHON=python2 %make_install -%endif +%make_install -%if %{with python3} -pushd py3dir -PYTHON=python3 %make_install -popd -%endif - -%if %{with python2} -%files -n python2-pyparted -%doc AUTHORS COPYING NEWS README TODO -%{python2_sitearch}/_ped.so -%{python2_sitearch}/parted -%{python2_sitearch}/%{name}-%{version}-*.egg-info -%endif - -%if %{with python3} %files -n python3-pyparted -%doc AUTHORS COPYING NEWS README TODO +%doc AUTHORS HACKING NEWS README.md RELEASE TODO +%license LICENSE %{python3_sitearch}/_ped.*.so %{python3_sitearch}/parted %{python3_sitearch}/%{name}-%{version}-*.egg-info -%endif %changelog +* Wed Jul 22 2026 Python Maint - 1:3.13.0-17 +- Rebuilt for Python 3.15.0b4 ABI change + +* Thu Jul 16 2026 Fedora Release Engineering - 1:3.13.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Wed Jun 03 2026 Python Maint - 1:3.13.0-15 +- Rebuilt for Python 3.15 + +* Sat Jan 17 2026 Fedora Release Engineering - 1:3.13.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Sep 19 2025 Python Maint - 1:3.13.0-13 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Fri Aug 15 2025 Python Maint - 1:3.13.0-12 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 1:3.13.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jun 15 2025 Yaakov Selkowitz - 1:3.13.0-10 +- Drop unused six dependency + +* Mon Jun 02 2025 Python Maint - 1:3.13.0-9 +- Rebuilt for Python 3.14 + +* Sat Jan 18 2025 Fedora Release Engineering - 1:3.13.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 19 2024 Fedora Release Engineering - 1:3.13.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 1:3.13.0-6 +- Rebuilt for Python 3.13 + +* Fri Jan 26 2024 Fedora Release Engineering - 1:3.13.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 1:3.13.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 1:3.13.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Jun 22 2023 Python Maint - 1:3.13.0-2 +- Rebuilt for Python 3.12 + +* Wed Jun 21 2023 David Cantrell - 1:3.13.0-1 +- Upgrade to pyparted-3.13.0 + +* Thu Jun 15 2023 Python Maint - 1:3.12.0-11 +- Rebuilt for Python 3.12 + +* Wed Jun 14 2023 David Cantrell - 1:3.12.0-10 +- Use non-deprecated syntax for the %%patch macros + +* Tue Jun 13 2023 Python Maint - 1:3.12.0-9 +- Rebuilt for Python 3.12 + +* Thu Mar 02 2023 David Cantrell - 1:3.12.0-8 +- Fix FTBFS with _ped.disktype test case for gpt (#2171656) +- Update License tag to SPDX expression + +* Fri Jan 20 2023 Fedora Release Engineering - 1:3.12.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 1:3.12.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jun 21 2022 David Cantrell - 1:3.12.0-5 +- 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 (#2098792) + +* Mon Jun 20 2022 Adam Williamson - 1:3.12.0-4 +- Backport PR #92 to fix tests with parted 3.5 (#2098792) + +* Mon Jun 13 2022 Python Maint - 1:3.12.0-3 +- Rebuilt for Python 3.11 + +* Mon Mar 07 2022 David Cantrell - 3.12.0-2 +- BR python3-setuptools + +* Mon Mar 07 2022 David Cantrell - 3.12.0-1 +- Upgrade to pyparted-3.12.0 + +* Fri Jan 21 2022 Fedora Release Engineering - 1:3.11.7-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 1:3.11.7-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jun 03 2021 Python Maint - 1:3.11.7-3 +- Rebuilt for Python 3.10 + * Wed Jan 27 2021 Fedora Release Engineering - 1:3.11.7-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index f1c1c2b..39be172 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.13.0.tar.gz) = a9162afdbee48de5474de98ae8c08df028d485e122fcafae8421dddd47c9ed00d8dd9f40d854b14d4582483d8ea3469128a912491371385e4f18a0dbbbafbfd5 +SHA512 (pyparted-3.13.0.tar.gz.asc) = 6f3e973b52584450c3eed97d64266df832d8820a6a72f731fbb9fbd9be06f93f2d53b47bcae01b78a831e3e3cedca3ae8629dc5f9fe35dcc3ed11226a11fd952 diff --git a/tests/scripts/pyparted-tests b/tests/scripts/pyparted-tests new file mode 100755 index 0000000..8edcca1 --- /dev/null +++ b/tests/scripts/pyparted-tests @@ -0,0 +1,88 @@ +#!/usr/bin/python3 + +import parted +import sys + + +def init_disk(disk_img): + # Make a disklabel (failures here will raise an error) + dev = parted.getDevice(disk_img) + disk = parted.freshDisk(dev, "gpt") + + # Make a partition + geom = parted.Geometry(device=dev, + start=2048, + end=50*2048) + fs = parted.FileSystem(type="ext4", geometry=geom) + part = parted.Partition(disk=disk, + type=parted.PARTITION_NORMAL, + fs=fs, + geometry=geom) + disk.addPartition(partition=part, + constraint=dev.optimalAlignedConstraint) + part.setFlag(parted.PARTITION_BOOT) + disk.commit() + +def read_disk(disk_img): + # Read the disk and check the partitions + dev = parted.getDevice(disk_img) + disk = parted.newDisk(dev) + + if dev.length == 0: + print("ERROR: Disk has no length", file=sys.stderr) + sys.exit(1) + + if len(disk.partitions) != 1: + print("ERROR: Wrong number of partitions", file=sys.stderr) + sys.exit(1) + + part = disk.partitions[0] + if part.geometry.end != 50*2048: + print("ERROR: Partition is wrong length", file=sys.stderr) + sys.exit(1) + + if part.geometry.start != 2048: + print("ERROR: Parition doesn't start at sector 2048", file=sys.stderr) + sys.exit(1) + + +def remove_partition(disk_img): + # Remove partition and check disk + dev = parted.getDevice(disk_img) + disk = parted.newDisk(dev) + + if len(disk.partitions) != 1: + print("ERROR: Wrong number of partitions", file=sys.stderr) + sys.exit(1) + + disk.removePartition(partition=disk.partitions[0]) + disk.commit() + + dev = parted.getDevice(disk_img) + disk = parted.newDisk(dev) + + if len(disk.partitions) != 0: + print("ERROR: Failed to delete partition", file=sys.stderr) + sys.exit(1) + + +def main(disk_img): + print(f"Running tests on {disk_img}") + + try: + init_disk(disk_img) + read_disk(disk_img) + remove_partition(disk_img) + except Exception as e: + print(f"ERROR: {str(e)}", file=sys.stderr) + sys.exit(1) + + print("PASS", file=sys.stderr) + sys.exit(0) + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Usage: %s " % sys.argv[0], file=sys.stderr) + sys.exit(1) + + main(sys.argv[1]) diff --git a/tests/scripts/run_tests.sh b/tests/scripts/run_tests.sh deleted file mode 100755 index 21804db..0000000 --- a/tests/scripts/run_tests.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -PATH=/usr/bin -TMPDIR="$(mktemp -d)" -CWD="$(pwd)" - -PACKAGE=pyparted -BRANCH= - -# clone the dist-git tree for this package -cd ${TMPDIR} -fedpkg co ${PACKAGE} -cd ${PACKAGE} -[ -z "${BRANCH}" ] || fedpkg switch-branch ${BRANCH} -fedpkg prep - -# scramble together the extracted source tree name -SRCDIR="${PACKAGE}-$(grep Version: ${PACKAGE}.spec | cut -d ' ' -f 2)" - -# run the tests -cd ${SRCDIR} -#make check # this runs pylint, which is sometimes wrong/noisy -make test -RET=$? - -# clean up and exit -cd ${CWD} -rm -rf ${TMPDIR} -exit ${RET} diff --git a/tests/tests.yml b/tests/tests.yml deleted file mode 100644 index 171d4d0..0000000 --- a/tests/tests.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- - -- hosts: localhost - roles: - - role: standard-test-basic - tags: - - classic - - required_packages: - - fedpkg - - tests: - - simple: - dir: scripts/ - run: ./run_tests.sh