Revert to pyparted-3.9 plus critical patches due to issues with the 3.10

release which are actively being worked on.  The 3.10 release does not
  work with the installer right now.
This commit is contained in:
David Cantrell 2013-07-03 11:22:22 -04:00
parent f30a7c0e4d
commit 6427527f2b
5 changed files with 215 additions and 4 deletions

View File

@ -0,0 +1,42 @@
From a43c9ca4e0fb600d425f50d11287f7c4fddee5f3 Mon Sep 17 00:00:00 2001
From: Chris Lumens <clumens@redhat.com>
Date: Fri, 14 Dec 2012 13:06:43 -0500
Subject: [PATCH 01/03] Do not traceback when calling setlocale (#875354).
This is just a debugging luxury. It's not worth additional tracebacks.
---
src/parted/decorators.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/parted/decorators.py b/src/parted/decorators.py
index 2b583ad..737f72c 100644
--- a/src/parted/decorators.py
+++ b/src/parted/decorators.py
@@ -24,13 +24,22 @@ import locale
import functools
def localeC(fn):
+ # setlocale is not thread-safe, and anaconda (at least) may call this from
+ # another thread. This is just a luxury to have untranslated tracebacks,
+ # so it's not worth tracebacking itself.
+ def _setlocale(l):
+ try:
+ locale.setlocale(locale.LC_MESSAGES, l)
+ except:
+ pass
+
@functools.wraps(fn)
def new(*args, **kwds):
oldlocale = locale.getlocale(locale.LC_MESSAGES)
- locale.setlocale(locale.LC_MESSAGES, 'C')
+ _setlocale('C')
try:
ret = fn(*args, **kwds)
finally:
- locale.setlocale(locale.LC_MESSAGES, oldlocale)
+ _setlocale(oldlocale)
return ret
return new
--
1.8.1.2

View File

@ -0,0 +1,26 @@
From 760a3b7c39a59c2e0f131b40e0a48bdf8240f637 Mon Sep 17 00:00:00 2001
From: Chris Tyler <chris@tylers.info>
Date: Fri, 11 Jan 2013 13:42:29 -0500
Subject: [PATCH 02/03] Convert Constraint to __ped.Constraint in
partition.getMaxGeometry()
---
src/parted/partition.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/parted/partition.py b/src/parted/partition.py
index 20b6f41..ee3e2d0 100644
--- a/src/parted/partition.py
+++ b/src/parted/partition.py
@@ -166,7 +166,7 @@ class Partition(object):
def getMaxGeometry(self, constraint):
"""Given a constraint, return the maximum Geometry that self can be
grown to. Raises Partitionexception on error."""
- return parted.Geometry(PedGeometry=self.disk.getPedDisk().get_max_partition_geometry(self.__partition, constraint))
+ return parted.Geometry(PedGeometry=self.disk.getPedDisk().get_max_partition_geometry(self.__partition, constraint.getPedConstraint()))
@localeC
def isFlagAvailable(self, flag):
--
1.8.1.2

View File

@ -0,0 +1,131 @@
From 36384816c56d666bbf3492ddcc531bf4c4a38674 Mon Sep 17 00:00:00 2001
From: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
Date: Thu, 23 May 2013 09:14:10 -0400
Subject: [PATCH 03/03] Subject: [PATCH] pyparted: export ped_disk_new
functionality
Fixed Block Access (FBA) DASDs are mainframe-specific disk devices
which are layed out as a sequence of 512-byte sectors. In contrast
to ECKD DASDs, these disks do not require formatting and resemble
the LBA layout of non-mainframe disks. Despite this resemblance,
the Linux kernel applies special handling during partition detection
for FBA DASDs, resulting in a single, immutable partition being
reported.
While actual FBA DASD hardware is no longer available, the z/VM
hypervisor can simulate FBA DASD disks, backed by either ECKD or
SCSI devices.
This patch adds support for FBA DASD partitions and successful
installation by Anaconda.
Signed-off-by: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com>
---
include/pydisk.h | 1 +
src/_pedmodule.c | 7 +++++++
src/parted/__init__.py | 9 +++++++++
src/pydisk.c | 32 ++++++++++++++++++++++++++++++++
4 files changed, 49 insertions(+)
diff --git a/include/pydisk.h b/include/pydisk.h
index c0bf92e..a2bcc4f 100644
--- a/include/pydisk.h
+++ b/include/pydisk.h
@@ -152,6 +152,7 @@ PyObject *py_ped_disk_get_partition(PyObject *, PyObject *);
PyObject *py_ped_disk_get_partition_by_sector(PyObject *, PyObject *);
PyObject *py_ped_disk_extended_partition(PyObject *, PyObject *);
PyObject *py_ped_disk_new_fresh(PyObject *, PyObject *);
+PyObject *py_ped_disk_new(PyObject *, PyObject *);
#endif /* PYDISK_H_INCLUDED */
diff --git a/src/_pedmodule.c b/src/_pedmodule.c
index add0e8c..efdf831 100644
--- a/src/_pedmodule.c
+++ b/src/_pedmodule.c
@@ -162,6 +162,11 @@ PyDoc_STRVAR(disk_new_fresh_doc,
"will have to use the commit_to_dev() method to write the new label to\n"
"the disk.");
+PyDoc_STRVAR(disk_new_doc,
+"disk_new(Device) -> Disk\n\n"
+"Given the Device, create a new Disk object. And probe, read the details of\n"
+"the disk.");
+
PyDoc_STRVAR(disk_flag_get_name_doc,
"disk_flag_get_name(integer) -> string\n\n"
"Return a name for a disk flag constant. If an invalid flag is provided,\n"
@@ -252,6 +257,8 @@ static struct PyMethodDef PyPedModuleMethods[] = {
METH_VARARGS, partition_flag_next_doc},
{"disk_new_fresh", (PyCFunction) py_ped_disk_new_fresh,
METH_VARARGS, disk_new_fresh_doc},
+ {"disk_new", (PyCFunction) py_ped_disk_new,
+ METH_VARARGS, disk_new_doc},
{"disk_flag_get_name", (PyCFunction) py_ped_disk_flag_get_name,
METH_VARARGS, disk_flag_get_name_doc},
{"disk_flag_get_by_name", (PyCFunction) py_ped_disk_flag_get_by_name,
diff --git a/src/parted/__init__.py b/src/parted/__init__.py
index 01f9575..0eb23d2 100644
--- a/src/parted/__init__.py
+++ b/src/parted/__init__.py
@@ -418,6 +418,15 @@ def freshDisk(device, ty):
return Disk(PedDisk=peddisk)
@localeC
+def newDisk(device):
+ """Return a Disk object for this Device. Read the partition table off
+ a device (if one is found)."""
+ from _ped import disk_new
+
+ peddisk = disk_new(device.getPedDevice())
+ return Disk(PedDisk=peddisk)
+
+@localeC
def version():
"""Return a dict containing the pyparted and libparted versions."""
from _ped import libparted_version
diff --git a/src/pydisk.c b/src/pydisk.c
index f58eeef..4e70f55 100644
--- a/src/pydisk.c
+++ b/src/pydisk.c
@@ -2004,5 +2004,37 @@ PyObject *py_ped_disk_new_fresh(PyObject *s, PyObject *args) {
return (PyObject *) ret;
}
+PyObject *py_ped_disk_new(PyObject *s, PyObject *args) {
+ _ped_Device *in_device = NULL;
+ PedDevice *device = NULL;
+ PedDisk *disk = NULL;
+ _ped_Disk *ret = NULL;
+
+ if (!PyArg_ParseTuple(args, "O!", &_ped_Device_Type_obj, &in_device)) {
+ return NULL;
+ }
+
+ if ((device = _ped_Device2PedDevice((PyObject *) in_device)) == NULL) {
+ return NULL;
+ }
+
+ if ((disk = ped_disk_new(device)) == NULL) {
+ if (partedExnRaised) {
+ partedExnRaised = 0;
+
+ if (!PyErr_ExceptionMatches(PartedException) &&
+ !PyErr_ExceptionMatches(PyExc_NotImplementedError))
+ PyErr_SetString(DiskException, partedExnMessage);
+ } else {
+ PyErr_Format(DiskException, "Could not create new disk label on %s", disk->dev->path);
+ }
+
+ return NULL;
+ }
+
+ ret = PedDisk2_ped_Disk(disk);
+ return (PyObject *) ret;
+}
+
/* vim:tw=78:ts=4:et:sw=4
*/
--
1.8.1.2

View File

@ -1,12 +1,16 @@
Summary: Python module for GNU parted
Name: pyparted
Version: 3.10
Release: 2%{?dist}
Epoch: 1
Version: 3.9
Release: 3%{?dist}
License: GPLv2+
Group: System Environment/Libraries
URL: http://fedorahosted.org/pyparted
Source0: http://fedorahosted.org/releases/p/y/%{name}/%{name}-%{version}.tar.gz
Patch1: 0001-Do-not-traceback-when-calling-setlocale-875354.patch
Patch2: 0002-Convert-Constraint-to-__ped.Constraint-in-partition..patch
Patch3: 0003-Subject-PATCH-pyparted-export-ped_disk_new-functiona.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(id -u -n)
BuildRequires: python-devel
@ -19,6 +23,9 @@ partition tables.
%prep
%setup -q
%patch1 -p 1
%patch2 -p 1
%patch3 -p 1
%build
make %{?_smp_mflags}
@ -33,11 +40,16 @@ rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%doc AUTHORS BUGS COPYING ChangeLog NEWS README TODO
%{python_sitearch}/_ped.so
%{python_sitearch}/_pedmodule.so
%{python_sitearch}/parted
%{python_sitearch}/%{name}-%{version}-*.egg-info
%changelog
* Wed Jul 08 2013 David Cantrell <dcantrell@redhat.com> - 3.9-3
- Revert to pyparted-3.9 plus critical patches due to issues with the 3.10
release which are actively being worked on. The 3.10 release does not
work with the installer right now.
* Thu May 23 2013 David Cantrell <dcantrell@redhat.com> - 3.10-2
- Fix build errors.

View File

@ -1 +1 @@
d494440b34bc9ea0afea45c4a4ac3274 pyparted-3.10.tar.gz
f16c7ef7f5fa4a43fcb2a4654b487e39 pyparted-3.9.tar.gz