[python-boto] Added a patch for python 2.4 support (#656446, #661233)
Robert Scheck
robert at fedoraproject.org
Sun Jan 2 23:02:37 UTC 2011
commit 73b1fdc38b9ecd86775c4cece6e2a0a4a3b5b5c8
Author: Robert Scheck <robert at fedoraproject.org>
Date: Mon Jan 3 00:02:13 2011 +0100
Added a patch for python 2.4 support (#656446, #661233)
python-boto-1.9b-python24.patch | 121 +++++++++++++++++++++++++++++++++++++++
python-boto.spec | 11 +++-
2 files changed, 129 insertions(+), 3 deletions(-)
---
diff --git a/python-boto-1.9b-python24.patch b/python-boto-1.9b-python24.patch
new file mode 100644
index 0000000..3b593d2
--- /dev/null
+++ b/python-boto-1.9b-python24.patch
@@ -0,0 +1,121 @@
+Patch by Robert Scheck <robert at fedoraproject.org> for boto >= 1.9b, which replaces
+ternary operator and with-statement context usages by python 2.4 compatible stuff.
+It also works around PEP 341 (Unifying try-except and try-finally).
+
+--- boto-1.9b/boto/manage/server.py 2009-12-13 16:32:54.000000000 +0100
++++ boto-1.9b/boto/manage/server.py.python24 2011-01-02 23:36:53.000000000 +0100
+@@ -22,7 +22,6 @@
+ """
+ High-level abstraction of an EC2 server
+ """
+-from __future__ import with_statement
+ import boto.ec2
+ from boto.mashups.iobject import IObject
+ from boto.pyami.config import BotoConfigPath, Config
+@@ -328,7 +327,10 @@
+ for instance in instances:
+ s = cls()
+ s.ec2 = ec2
+- s.name = params.get('name') + '' if i==0 else str(i)
++ if i == 0:
++ s.name = params.get('name') + ''
++ else:
++ s.name = str(i)
+ s.description = params.get('description')
+ s.region_name = region.name
+ s.instance_id = instance.id
+@@ -522,8 +524,11 @@
+ self._cmdshell = None
+
+ def run(self, command):
+- with closing(self.get_cmdshell()) as cmd:
++ try:
++ cmd = self.get_cmdshell()
+ status = cmd.run(command)
++ finally:
++ cmd.close()
+ return status
+
+ def get_bundler(self, uname='root'):
+--- boto-1.9b/boto/manage/volume.py 2009-11-24 04:47:51.000000000 +0100
++++ boto-1.9b/boto/manage/volume.py.python24 2011-01-02 23:55:51.000000000 +0100
+@@ -19,7 +19,6 @@
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ # IN THE SOFTWARE.
+
+-from __future__ import with_statement
+ from boto.sdb.db.model import Model
+ from boto.sdb.db.property import *
+ from boto.manage.server import Server
+@@ -232,28 +231,33 @@
+ def wait(self):
+ if self.server == None:
+ raise ValueError, 'server attribute must be set to run this command'
+- with closing(self.server.get_cmdshell()) as cmd:
++ try:
+ # wait for the volume device to appear
+ cmd = self.server.get_cmdshell()
+ while not cmd.exists(self.device):
+ boto.log.info('%s still does not exist, waiting 10 seconds' % self.device)
+ time.sleep(10)
++ finally:
++ cmd.close()
+
+ def format(self):
+ if self.server == None:
+ raise ValueError, 'server attribute must be set to run this command'
+ status = None
+- with closing(self.server.get_cmdshell()) as cmd:
++ try:
++ cmd = self.server.get_cmdshell()
+ if not self.checkfs(cmd):
+ boto.log.info('make_fs...')
+ status = cmd.run('mkfs -t xfs %s' % self.device)
++ finally:
++ cmd.close()
+ return status
+
+ def mount(self):
+ if self.server == None:
+ raise ValueError, 'server attribute must be set to run this command'
+ boto.log.info('handle_mount_point')
+- with closing(self.server.get_cmdshell()) as cmd:
++ try:
+ cmd = self.server.get_cmdshell()
+ if not cmd.isdir(self.mount_point):
+ boto.log.info('making directory')
+@@ -276,6 +280,8 @@
+ # Mount up our new EBS volume onto mount_point
+ cmd.run("mount %s %s" % (self.device, self.mount_point))
+ cmd.run('xfs_growfs %s' % self.mount_point)
++ finally:
++ cmd.close()
+
+ def make_ready(self, server):
+ self.server = server
+@@ -298,15 +304,16 @@
+ # if this volume is attached to a server
+ # we need to freeze the XFS file system
+ try:
+- self.freeze()
+- if self.server == None:
+- snapshot = self.get_ec2_connection().create_snapshot(self.volume_id)
+- else:
+- snapshot = self.server.ec2.create_snapshot(self.volume_id)
+- boto.log.info('Snapshot of Volume %s created: %s' % (self.name, snapshot))
+- except Exception, e:
+- boto.log.info('Snapshot error')
+- boto.log.info(traceback.format_exc())
++ try:
++ self.freeze()
++ if self.server == None:
++ snapshot = self.get_ec2_connection().create_snapshot(self.volume_id)
++ else:
++ snapshot = self.server.ec2.create_snapshot(self.volume_id)
++ boto.log.info('Snapshot of Volume %s created: %s' % (self.name, snapshot))
++ except Exception, e:
++ boto.log.info('Snapshot error')
++ boto.log.info(traceback.format_exc())
+ finally:
+ status = self.unfreeze()
+ return status
diff --git a/python-boto.spec b/python-boto.spec
index e408d38..2388899 100644
--- a/python-boto.spec
+++ b/python-boto.spec
@@ -1,10 +1,10 @@
-%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%define pkgname boto
+%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
+%global pkgname boto
Summary: A simple lightweight interface to Amazon Web Services
Name: python-boto
Version: 1.9b
-Release: 5%{?dist}
+Release: 6%{?dist}
License: MIT
Group: Development/Languages
URL: http://code.google.com/p/%{pkgname}/
@@ -12,6 +12,7 @@ Source: http://boto.googlecode.com/files/%{pkgname}-%{version}.tar.gz
Patch0: python-boto-1.9b-image.patch
Patch1: python-boto-1.9b-prefix.patch
Patch2: python-boto-1.9b-python27.patch
+Patch3: python-boto-1.9b-python24.patch
BuildRequires: python-devel, python-setuptools-devel
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -28,6 +29,7 @@ use, lightweight wrapper around the Amazon services.
%patch0 -p1 -b .image
%patch1 -p1 -b .prefix
%patch2 -p1 -b .python27
+%patch3 -p1 -b .python24
%build
%{__python} setup.py build
@@ -52,6 +54,9 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitelib}/*
%changelog
+* Sun Jan 02 2011 Robert Scheck <robert at fedoraproject.org> 1.9b-6
+- Added a patch for python 2.4 support (#656446, #661233)
+
* Thu Dec 02 2010 Lubomir Rintel <lubo.rintel at gooddata.com> 1.9b-5
- Apply a patch for python 2.7 support (#659248)
More information about the scm-commits
mailing list