[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