summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Thode <prometheanfire@gentoo.org>2013-12-19 04:31:09 +0000
committerMatthew Thode <prometheanfire@gentoo.org>2013-12-19 04:31:09 +0000
commitade997d4e65331691c71b0d89e94c88870600e58 (patch)
tree17bb5c5d696b9c651d570b51aaf34246d45caf86 /sys-cluster
parent2013.2.1 and cleaner deps (diff)
downloadgentoo-2-ade997d4e65331691c71b0d89e94c88870600e58.tar.gz
gentoo-2-ade997d4e65331691c71b0d89e94c88870600e58.tar.bz2
gentoo-2-ade997d4e65331691c71b0d89e94c88870600e58.zip
swift updates
(Portage version: 2.2.7/cvs/Linux x86_64, signed Manifest commit with key 0x2471eb3e40ac5ac3)
Diffstat (limited to 'sys-cluster')
-rw-r--r--sys-cluster/swift/ChangeLog9
-rw-r--r--sys-cluster/swift/files/CVE-2013-4155-grizzly.patch419
-rw-r--r--sys-cluster/swift/swift-1.10.0.ebuild4
-rw-r--r--sys-cluster/swift/swift-1.11.0.ebuild (renamed from sys-cluster/swift/swift-1.9.1.ebuild)30
-rw-r--r--sys-cluster/swift/swift-2013.2.9999.ebuild6
5 files changed, 25 insertions, 443 deletions
diff --git a/sys-cluster/swift/ChangeLog b/sys-cluster/swift/ChangeLog
index 44bcb0a7523a..a6d72226b6d0 100644
--- a/sys-cluster/swift/ChangeLog
+++ b/sys-cluster/swift/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sys-cluster/swift
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/ChangeLog,v 1.21 2013/11/14 04:35:40 prometheanfire Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/ChangeLog,v 1.22 2013/12/19 04:31:09 prometheanfire Exp $
+
+*swift-1.11.0 (19 Dec 2013)
+
+ 19 Dec 2013; Matthew Thode <prometheanfire@gentoo.org> +swift-1.11.0.ebuild,
+ -files/CVE-2013-4155-grizzly.patch, -swift-1.9.1.ebuild, swift-1.10.0.ebuild,
+ swift-2013.2.9999.ebuild:
+ swift updates
14 Nov 2013; Matthew Thode <prometheanfire@gentoo.org> -swift-1.8.0-r4.ebuild:
removing 2012.2 (folsom) 1.8.x
diff --git a/sys-cluster/swift/files/CVE-2013-4155-grizzly.patch b/sys-cluster/swift/files/CVE-2013-4155-grizzly.patch
deleted file mode 100644
index e5e3ba1bff49..000000000000
--- a/sys-cluster/swift/files/CVE-2013-4155-grizzly.patch
+++ /dev/null
@@ -1,419 +0,0 @@
-From 1f4ec235cdfd8c868f2d6458532f9dc32c00b8ca Mon Sep 17 00:00:00 2001
-From: Peter Portante <peter.portante@redhat.com>
-Date: Fri, 26 Jul 2013 15:03:34 -0400
-Subject: [PATCH] Fix handling of DELETE obj reqs with old timestamp
-
-The DELETE object REST API was creating tombstone files with old
-timestamps, potentially filling up the disk, as well as sending
-container updates.
-
-Here we now make DELETEs with a request timestamp return a 409 (HTTP
-Conflict) if a data file exists with a newer timestamp, only creating
-tombstones if they have a newer timestamp.
-
-The key fix is to actually read the timestamp metadata from an
-existing tombstone file (thanks to Pete Zaitcev for catching this),
-and then only create tombstone files with newer timestamps.
-
-We also prevent PUT and POST operations using old timestamps as well.
-
-Change-Id: I631957029d17c6578bca5779367df5144ba01fc9
-Signed-off-by: Peter Portante <peter.portante@redhat.com>
----
- swift/obj/server.py | 58 +++++++------
- test/unit/obj/test_server.py | 194 ++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 225 insertions(+), 27 deletions(-)
-
-diff --git a/swift/obj/server.py b/swift/obj/server.py
-index fc23ea2..f416162 100644
---- a/swift/obj/server.py
-+++ b/swift/obj/server.py
-@@ -46,7 +46,7 @@ from swift.common.swob import HTTPAccepted, HTTPBadRequest, HTTPCreated, \
- HTTPInternalServerError, HTTPNoContent, HTTPNotFound, HTTPNotModified, \
- HTTPPreconditionFailed, HTTPRequestTimeout, HTTPUnprocessableEntity, \
- HTTPClientDisconnect, HTTPMethodNotAllowed, Request, Response, UTC, \
-- HTTPInsufficientStorage, multi_range_iterator
-+ HTTPInsufficientStorage, multi_range_iterator, HTTPConflict
-
-
- DATADIR = 'objects'
-@@ -121,7 +121,6 @@ class DiskFile(object):
- self.tmppath = None
- self.logger = logger
- self.metadata = {}
-- self.meta_file = None
- self.data_file = None
- self.fp = None
- self.iter_etag = None
-@@ -133,15 +132,18 @@ class DiskFile(object):
- if not os.path.exists(self.datadir):
- return
- files = sorted(os.listdir(self.datadir), reverse=True)
-- for file in files:
-- if file.endswith('.ts'):
-- self.data_file = self.meta_file = None
-- self.metadata = {'deleted': True}
-- return
-- if file.endswith('.meta') and not self.meta_file:
-- self.meta_file = os.path.join(self.datadir, file)
-- if file.endswith('.data') and not self.data_file:
-- self.data_file = os.path.join(self.datadir, file)
-+ meta_file = None
-+ for afile in files:
-+ if afile.endswith('.ts'):
-+ self.data_file = None
-+ with open(os.path.join(self.datadir, afile)) as mfp:
-+ self.metadata = read_metadata(mfp)
-+ self.metadata['deleted'] = True
-+ break
-+ if afile.endswith('.meta') and not meta_file:
-+ meta_file = os.path.join(self.datadir, afile)
-+ if afile.endswith('.data') and not self.data_file:
-+ self.data_file = os.path.join(self.datadir, afile)
- break
- if not self.data_file:
- return
-@@ -149,8 +151,8 @@ class DiskFile(object):
- self.metadata = read_metadata(self.fp)
- if not keep_data_fp:
- self.close(verify_file=False)
-- if self.meta_file:
-- with open(self.meta_file) as mfp:
-+ if meta_file:
-+ with open(meta_file) as mfp:
- for key in self.metadata.keys():
- if key.lower() not in DISALLOWED_HEADERS:
- del self.metadata[key]
-@@ -594,6 +596,9 @@ class ObjectController(object):
- except (DiskFileError, DiskFileNotExist):
- file.quarantine()
- return HTTPNotFound(request=request)
-+ orig_timestamp = file.metadata.get('X-Timestamp', '0')
-+ if orig_timestamp >= request.headers['x-timestamp']:
-+ return HTTPConflict(request=request)
- metadata = {'X-Timestamp': request.headers['x-timestamp']}
- metadata.update(val for val in request.headers.iteritems()
- if val[0].lower().startswith('x-object-meta-'))
-@@ -639,6 +644,8 @@ class ObjectController(object):
- file = DiskFile(self.devices, device, partition, account, container,
- obj, self.logger, disk_chunk_size=self.disk_chunk_size)
- orig_timestamp = file.metadata.get('X-Timestamp')
-+ if orig_timestamp and orig_timestamp >= request.headers['x-timestamp']:
-+ return HTTPConflict(request=request)
- upload_expiration = time.time() + self.max_upload_time
- etag = md5()
- upload_size = 0
-@@ -863,23 +870,26 @@ class ObjectController(object):
- return HTTPPreconditionFailed(
- request=request,
- body='X-If-Delete-At and X-Delete-At do not match')
-- orig_timestamp = file.metadata.get('X-Timestamp')
-- if file.is_deleted() or file.is_expired():
-- response_class = HTTPNotFound
-- metadata = {
-- 'X-Timestamp': request.headers['X-Timestamp'], 'deleted': True,
-- }
- old_delete_at = int(file.metadata.get('X-Delete-At') or 0)
- if old_delete_at:
- self.delete_at_update('DELETE', old_delete_at, account,
- container, obj, request.headers, device)
-- file.put_metadata(metadata, tombstone=True)
-- file.unlinkold(metadata['X-Timestamp'])
-- if not orig_timestamp or \
-- orig_timestamp < request.headers['x-timestamp']:
-+ orig_timestamp = file.metadata.get('X-Timestamp', 0)
-+ req_timestamp = request.headers['X-Timestamp']
-+ if file.is_deleted() or file.is_expired():
-+ response_class = HTTPNotFound
-+ else:
-+ if orig_timestamp < req_timestamp:
-+ response_class = HTTPNoContent
-+ else:
-+ response_class = HTTPConflict
-+ if orig_timestamp < req_timestamp:
-+ file.put_metadata({'X-Timestamp': req_timestamp},
-+ tombstone=True)
-+ file.unlinkold(req_timestamp)
- self.container_update(
- 'DELETE', account, container, obj, request.headers,
-- {'x-timestamp': metadata['X-Timestamp'],
-+ {'x-timestamp': req_timestamp,
- 'x-trans-id': request.headers.get('x-trans-id', '-')},
- device)
- resp = response_class(request=request)
-diff --git a/test/unit/obj/test_server.py b/test/unit/obj/test_server.py
-index 8ee266b..b354b97 100755
---- a/test/unit/obj/test_server.py
-+++ b/test/unit/obj/test_server.py
-@@ -509,6 +509,41 @@ class TestObjectController(unittest.TestCase):
- "X-Object-Meta-3" in resp.headers)
- self.assertEquals(resp.headers['Content-Type'], 'application/x-test')
-
-+ def test_POST_old_timestamp(self):
-+ ts = time()
-+ timestamp = normalize_timestamp(ts)
-+ req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
-+ headers={'X-Timestamp': timestamp,
-+ 'Content-Type': 'application/x-test',
-+ 'X-Object-Meta-1': 'One',
-+ 'X-Object-Meta-Two': 'Two'})
-+ req.body = 'VERIFY'
-+ resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 201)
-+
-+ # Same timestamp should result in 409
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'POST'},
-+ headers={'X-Timestamp': timestamp,
-+ 'X-Object-Meta-3': 'Three',
-+ 'X-Object-Meta-4': 'Four',
-+ 'Content-Encoding': 'gzip',
-+ 'Content-Type': 'application/x-test'})
-+ resp = self.object_controller.POST(req)
-+ self.assertEquals(resp.status_int, 409)
-+
-+ # Earlier timestamp should result in 409
-+ timestamp = normalize_timestamp(ts - 1)
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'POST'},
-+ headers={'X-Timestamp': timestamp,
-+ 'X-Object-Meta-5': 'Five',
-+ 'X-Object-Meta-6': 'Six',
-+ 'Content-Encoding': 'gzip',
-+ 'Content-Type': 'application/x-test'})
-+ resp = self.object_controller.POST(req)
-+ self.assertEquals(resp.status_int, 409)
-+
- def test_POST_not_exist(self):
- timestamp = normalize_timestamp(time())
- req = Request.blank('/sda1/p/a/c/fail',
-@@ -555,11 +590,15 @@ class TestObjectController(unittest.TestCase):
-
- old_http_connect = object_server.http_connect
- try:
-- timestamp = normalize_timestamp(time())
-+ ts = time()
-+ timestamp = normalize_timestamp(ts)
- req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD':
- 'POST'}, headers={'X-Timestamp': timestamp, 'Content-Type':
- 'text/plain', 'Content-Length': '0'})
- resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 201)
-+
-+ timestamp = normalize_timestamp(ts + 1)
- req = Request.blank('/sda1/p/a/c/o',
- environ={'REQUEST_METHOD': 'POST'},
- headers={'X-Timestamp': timestamp,
-@@ -571,6 +610,8 @@ class TestObjectController(unittest.TestCase):
- object_server.http_connect = mock_http_connect(202)
- resp = self.object_controller.POST(req)
- self.assertEquals(resp.status_int, 202)
-+
-+ timestamp = normalize_timestamp(ts + 2)
- req = Request.blank('/sda1/p/a/c/o',
- environ={'REQUEST_METHOD': 'POST'},
- headers={'X-Timestamp': timestamp,
-@@ -582,6 +623,8 @@ class TestObjectController(unittest.TestCase):
- object_server.http_connect = mock_http_connect(202, with_exc=True)
- resp = self.object_controller.POST(req)
- self.assertEquals(resp.status_int, 202)
-+
-+ timestamp = normalize_timestamp(ts + 3)
- req = Request.blank('/sda1/p/a/c/o',
- environ={'REQUEST_METHOD': 'POST'},
- headers={'X-Timestamp': timestamp,
-@@ -718,6 +761,32 @@ class TestObjectController(unittest.TestCase):
- 'name': '/a/c/o',
- 'Content-Encoding': 'gzip'})
-
-+ def test_PUT_old_timestamp(self):
-+ ts = time()
-+ req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
-+ headers={'X-Timestamp': normalize_timestamp(ts),
-+ 'Content-Length': '6',
-+ 'Content-Type': 'application/octet-stream'})
-+ req.body = 'VERIFY'
-+ resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 201)
-+
-+ req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
-+ headers={'X-Timestamp': normalize_timestamp(ts),
-+ 'Content-Type': 'text/plain',
-+ 'Content-Encoding': 'gzip'})
-+ req.body = 'VERIFY TWO'
-+ resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 409)
-+
-+ req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
-+ headers={'X-Timestamp': normalize_timestamp(ts - 1),
-+ 'Content-Type': 'text/plain',
-+ 'Content-Encoding': 'gzip'})
-+ req.body = 'VERIFY THREE'
-+ resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 409)
-+
- def test_PUT_no_etag(self):
- req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
- headers={'X-Timestamp': normalize_timestamp(time()),
-@@ -1306,12 +1375,32 @@ class TestObjectController(unittest.TestCase):
- self.assertEquals(resp.status_int, 400)
- # self.assertRaises(KeyError, self.object_controller.DELETE, req)
-
-+ # The following should have created a tombstone file
- timestamp = normalize_timestamp(time())
- req = Request.blank('/sda1/p/a/c/o',
- environ={'REQUEST_METHOD': 'DELETE'},
- headers={'X-Timestamp': timestamp})
- resp = self.object_controller.DELETE(req)
- self.assertEquals(resp.status_int, 404)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assert_(os.path.isfile(objfile))
-+
-+ # The following should *not* have created a tombstone file.
-+ timestamp = normalize_timestamp(float(timestamp) - 1)
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'DELETE'},
-+ headers={'X-Timestamp': timestamp})
-+ resp = self.object_controller.DELETE(req)
-+ self.assertEquals(resp.status_int, 404)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assertFalse(os.path.exists(objfile))
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-
- sleep(.00001)
- timestamp = normalize_timestamp(time())
-@@ -1325,17 +1414,19 @@ class TestObjectController(unittest.TestCase):
- resp = self.object_controller.PUT(req)
- self.assertEquals(resp.status_int, 201)
-
-+ # The following should *not* have created a tombstone file.
- timestamp = normalize_timestamp(float(timestamp) - 1)
- req = Request.blank('/sda1/p/a/c/o',
- environ={'REQUEST_METHOD': 'DELETE'},
- headers={'X-Timestamp': timestamp})
- resp = self.object_controller.DELETE(req)
-- self.assertEquals(resp.status_int, 204)
-+ self.assertEquals(resp.status_int, 409)
- objfile = os.path.join(self.testdir, 'sda1',
- storage_directory(object_server.DATADIR, 'p',
- hash_path('a', 'c', 'o')),
- timestamp + '.ts')
-- self.assert_(os.path.isfile(objfile))
-+ self.assertFalse(os.path.exists(objfile))
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-
- sleep(.00001)
- timestamp = normalize_timestamp(time())
-@@ -1350,6 +1441,103 @@ class TestObjectController(unittest.TestCase):
- timestamp + '.ts')
- self.assert_(os.path.isfile(objfile))
-
-+ def test_DELETE_container_updates(self):
-+ # Test swift.object_server.ObjectController.DELETE and container
-+ # updates, making sure container update is called in the correct
-+ # state.
-+ timestamp = normalize_timestamp(time())
-+ req = Request.blank('/sda1/p/a/c/o', environ={'REQUEST_METHOD': 'PUT'},
-+ headers={
-+ 'X-Timestamp': timestamp,
-+ 'Content-Type': 'application/octet-stream',
-+ 'Content-Length': '4',
-+ })
-+ req.body = 'test'
-+ resp = self.object_controller.PUT(req)
-+ self.assertEquals(resp.status_int, 201)
-+
-+ calls_made = [0]
-+
-+ def our_container_update(*args, **kwargs):
-+ calls_made[0] += 1
-+
-+ orig_cu = self.object_controller.container_update
-+ self.object_controller.container_update = our_container_update
-+ try:
-+ # The following request should return 409 (HTTP Conflict). A
-+ # tombstone file should not have been created with this timestamp.
-+ timestamp = normalize_timestamp(float(timestamp) - 1)
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'DELETE'},
-+ headers={'X-Timestamp': timestamp})
-+ resp = self.object_controller.DELETE(req)
-+ self.assertEquals(resp.status_int, 409)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assertFalse(os.path.isfile(objfile))
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-+ self.assertEquals(0, calls_made[0])
-+
-+ # The following request should return 204, and the object should
-+ # be truly deleted (container update is performed) because this
-+ # timestamp is newer. A tombstone file should have been created
-+ # with this timestamp.
-+ sleep(.00001)
-+ timestamp = normalize_timestamp(time())
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'DELETE'},
-+ headers={'X-Timestamp': timestamp})
-+ resp = self.object_controller.DELETE(req)
-+ self.assertEquals(resp.status_int, 204)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assert_(os.path.isfile(objfile))
-+ self.assertEquals(1, calls_made[0])
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-+
-+ # The following request should return a 404, as the object should
-+ # already have been deleted, but it should have also performed a
-+ # container update because the timestamp is newer, and a tombstone
-+ # file should also exist with this timestamp.
-+ sleep(.00001)
-+ timestamp = normalize_timestamp(time())
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'DELETE'},
-+ headers={'X-Timestamp': timestamp})
-+ resp = self.object_controller.DELETE(req)
-+ self.assertEquals(resp.status_int, 404)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assert_(os.path.isfile(objfile))
-+ self.assertEquals(2, calls_made[0])
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-+
-+ # The following request should return a 404, as the object should
-+ # already have been deleted, and it should not have performed a
-+ # container update because the timestamp is older, or created a
-+ # tombstone file with this timestamp.
-+ timestamp = normalize_timestamp(float(timestamp) - 1)
-+ req = Request.blank('/sda1/p/a/c/o',
-+ environ={'REQUEST_METHOD': 'DELETE'},
-+ headers={'X-Timestamp': timestamp})
-+ resp = self.object_controller.DELETE(req)
-+ self.assertEquals(resp.status_int, 404)
-+ objfile = os.path.join(self.testdir, 'sda1',
-+ storage_directory(object_server.DATADIR, 'p',
-+ hash_path('a', 'c', 'o')),
-+ timestamp + '.ts')
-+ self.assertFalse(os.path.isfile(objfile))
-+ self.assertEquals(2, calls_made[0])
-+ self.assertEquals(len(os.listdir(os.path.dirname(objfile))), 1)
-+ finally:
-+ self.object_controller.container_update = orig_cu
-+
- def test_call(self):
- """ Test swift.object_server.ObjectController.__call__ """
- inbuf = StringIO()
---
-1.8.1.5
-
diff --git a/sys-cluster/swift/swift-1.10.0.ebuild b/sys-cluster/swift/swift-1.10.0.ebuild
index 8b61d32158bc..86f03012e1c6 100644
--- a/sys-cluster/swift/swift-1.10.0.ebuild
+++ b/sys-cluster/swift/swift-1.10.0.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-1.10.0.ebuild,v 1.2 2013/11/10 07:02:22 idella4 Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-1.10.0.ebuild,v 1.3 2013/12/19 04:31:09 prometheanfire Exp $
EAPI=5
PYTHON_COMPAT=( python2_7 )
@@ -56,7 +56,7 @@ pkg_setup() {
src_prepare() {
sed -i 's/xattr/pyxattr/g' "${S}/swift.egg-info/requires.txt"
- sed -i 's/xattr/pyxattr/g' "${S}/tools/pip-requires"
+ sed -i 's/xattr/pyxattr/g' "${S}/requirements.txt"
}
src_test () {
diff --git a/sys-cluster/swift/swift-1.9.1.ebuild b/sys-cluster/swift/swift-1.11.0.ebuild
index 25d5cd65fbfe..272e34dcbfcf 100644
--- a/sys-cluster/swift/swift-1.9.1.ebuild
+++ b/sys-cluster/swift/swift-1.11.0.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-1.9.1.ebuild,v 1.2 2013/11/10 07:02:22 idella4 Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-1.11.0.ebuild,v 1.1 2013/12/19 04:31:09 prometheanfire Exp $
EAPI=5
PYTHON_COMPAT=( python2_7 )
@@ -9,47 +9,46 @@ inherit distutils-r1 eutils linux-info
DESCRIPTION="A highly available, distributed, eventually consistent object/blob store"
HOMEPAGE="https://launchpad.net/swift"
-SRC_URI="http://launchpad.net/${PN}/havana/${PV}/+download/${P}.tar.gz"
+SRC_URI="http://launchpad.net/${PN}/icehouse/${PV}/+download/${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="proxy account container object test +memcache"
+REQUIRED_USE="|| ( proxy account container object )"
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
- test? ( dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/pbr-0.5.21[${PYTHON_USEDEP}]
+ <dev-python/pbr-1.0[${PYTHON_USEDEP}]
+ test? ( ~dev-python/pep8-1.4.5[${PYTHON_USEDEP}]
+ ~dev-python/pyflakes-0.7.2[${PYTHON_USEDEP}]
+ ~dev-python/flake8-2.0[${PYTHON_USEDEP}]
+ >=dev-python/hacking-0.5.6[${PYTHON_USEDEP}]
+ <dev-python/hacking-0.6[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
dev-python/coverage[${PYTHON_USEDEP}]
dev-python/nosexcover[${PYTHON_USEDEP}]
dev-python/openstack-nose-plugin[${PYTHON_USEDEP}]
dev-python/nosehtmloutput[${PYTHON_USEDEP}]
~dev-python/pep8-1.4.5[${PYTHON_USEDEP}]
- ~dev-python/pyflakes-0.7.2[${PYTHON_USEDEP}]
- ~dev-python/flake8-2.0[${PYTHON_USEDEP}]
- >=dev-python/hacking-0.5.6[${PYTHON_USEDEP}]
- <dev-python/hacking-0.6[${PYTHON_USEDEP}]
>=dev-python/mock-0.8.0[${PYTHON_USEDEP}]
>=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}] )"
-RDEPEND=">=dev-python/eventlet-0.9.15[${PYTHON_USEDEP}]
+RDEPEND=">=dev-python/dnspython-1.9.4[${PYTHON_USEDEP}]
+ >=dev-python/eventlet-0.9.15[${PYTHON_USEDEP}]
>=dev-python/greenlet-0.3.1[${PYTHON_USEDEP}]
>=dev-python/netifaces-0.5[${PYTHON_USEDEP}]
>=dev-python/pastedeploy-1.3.3[${PYTHON_USEDEP}]
>=dev-python/simplejson-2.0.9[${PYTHON_USEDEP}]
dev-python/pyxattr[${PYTHON_USEDEP}]
- >=dev-python/dnspython-1.10.0-r1[${PYTHON_USEDEP}]
dev-python/python-swiftclient[${PYTHON_USEDEP}]
memcache? ( net-misc/memcached )
net-misc/rsync[xattr]"
-REQUIRED_USE="|| ( proxy account container object )"
-
CONFIG_CHECK="~EXT3_FS_XATTR ~SQUASHFS_XATTR ~CIFS_XATTR ~JFFS2_FS_XATTR
~TMPFS_XATTR ~UBIFS_FS_XATTR ~EXT2_FS_XATTR ~REISERFS_FS_XATTR ~EXT4_FS_XATTR
~ZFS"
-PATCHES=(
-)
-
pkg_setup() {
enewuser swift
enewgroup swift
@@ -57,8 +56,7 @@ pkg_setup() {
src_prepare() {
sed -i 's/xattr/pyxattr/g' "${S}/swift.egg-info/requires.txt"
- sed -i 's/xattr/pyxattr/g' "${S}/tools/pip-requires"
- distutils-r1_python_prepare_all
+ sed -i 's/xattr/pyxattr/g' "${S}/requirements.txt"
}
src_test () {
diff --git a/sys-cluster/swift/swift-2013.2.9999.ebuild b/sys-cluster/swift/swift-2013.2.9999.ebuild
index f254d9d57acf..d7e6c86089f8 100644
--- a/sys-cluster/swift/swift-2013.2.9999.ebuild
+++ b/sys-cluster/swift/swift-2013.2.9999.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-2013.2.9999.ebuild,v 1.3 2013/11/10 08:51:46 idella4 Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/swift/swift-2013.2.9999.ebuild,v 1.4 2013/12/19 04:31:09 prometheanfire Exp $
EAPI=5
PYTHON_COMPAT=( python2_7 )
@@ -50,10 +50,6 @@ CONFIG_CHECK="~EXT3_FS_XATTR ~SQUASHFS_XATTR ~CIFS_XATTR ~JFFS2_FS_XATTR
~TMPFS_XATTR ~UBIFS_FS_XATTR ~EXT2_FS_XATTR ~REISERFS_FS_XATTR ~EXT4_FS_XATTR
~ZFS"
-src_test () {
- sh .unittests || die
-}
-
pkg_setup() {
enewuser swift
enewgroup swift