parent
501714e8cb
commit
147799059f
@ -0,0 +1,119 @@
|
||||
From 5191ed1879c5fd5b2694f922bcedec232f461088 Mon Sep 17 00:00:00 2001
|
||||
From: Grant Murphy <grant.murphy@hp.com>
|
||||
Date: Wed, 7 Jan 2015 16:09:38 -0800
|
||||
Subject: [PATCH] Prevent file, swift+config and filesystem schemes
|
||||
|
||||
This change ensures that 'file', 'filesystem', and 'swift+config' URI
|
||||
schemes are not allowed when setting the location field. A previous
|
||||
fix to CVE-2014-9493 attempted to address this issue but did not
|
||||
include 'filesystem', a URI scheme allowed by the glance_store.
|
||||
|
||||
Without this fix in place it is possible for a client to access any file
|
||||
the glance-api server has read permissions for.
|
||||
|
||||
Change-Id: I02cd099a8634b9c7e3cf8f172bcbd33f8edcbc83
|
||||
Closes-Bug: #1408663
|
||||
(cherry picked from commit a2d986b976e9325a272e2d422465165315d19fe6)
|
||||
---
|
||||
glance/common/store_utils.py | 11 ++++++-----
|
||||
glance/tests/unit/test_store_location.py | 3 +++
|
||||
glance/tests/unit/v1/test_api.py | 32 ++++++++++++--------------------
|
||||
3 files changed, 21 insertions(+), 25 deletions(-)
|
||||
|
||||
diff --git a/glance/common/store_utils.py b/glance/common/store_utils.py
|
||||
index b7537ce..64cfa87 100644
|
||||
--- a/glance/common/store_utils.py
|
||||
+++ b/glance/common/store_utils.py
|
||||
@@ -38,6 +38,8 @@ store_utils_opts = [
|
||||
CONF = cfg.CONF
|
||||
CONF.register_opts(store_utils_opts)
|
||||
|
||||
+RESTRICTED_URI_SCHEMAS = frozenset(['file', 'filesystem', 'swift+config'])
|
||||
+
|
||||
|
||||
def safe_delete_from_backend(context, image_id, location):
|
||||
"""
|
||||
@@ -136,8 +138,7 @@ def validate_external_location(uri):
|
||||
"""
|
||||
|
||||
# TODO(zhiyan): This function could be moved to glance_store.
|
||||
-
|
||||
- pieces = urlparse.urlparse(uri)
|
||||
- valid_schemes = [scheme for scheme in store_api.get_known_schemes()
|
||||
- if scheme != 'file' and scheme != 'swift+config']
|
||||
- return pieces.scheme in valid_schemes
|
||||
+ # TODO(gm): Use a whitelist of allowed schemes
|
||||
+ scheme = urlparse.urlparse(uri).scheme
|
||||
+ return (scheme in store_api.get_known_schemes() and
|
||||
+ scheme not in RESTRICTED_URI_SCHEMAS)
|
||||
diff --git a/glance/tests/unit/test_store_location.py b/glance/tests/unit/test_store_location.py
|
||||
index c9ee44c..efaecd8 100644
|
||||
--- a/glance/tests/unit/test_store_location.py
|
||||
+++ b/glance/tests/unit/test_store_location.py
|
||||
@@ -69,12 +69,15 @@ class TestStoreLocation(base.StoreClearingUnitTest):
|
||||
|
||||
loc1 = {'url': 'file:///fake1.img.tar.gz', 'metadata': {}}
|
||||
loc2 = {'url': 'swift+config:///xxx', 'metadata': {}}
|
||||
+ loc3 = {'url': 'filesystem:///foo.img.tar.gz', 'metadata': {}}
|
||||
|
||||
# Test for insert location
|
||||
image1 = TestStoreLocation.FakeImageProxy()
|
||||
locations = glance.location.StoreLocations(image1, [])
|
||||
self.assertRaises(exception.BadStoreUri, locations.insert, 0, loc1)
|
||||
+ self.assertRaises(exception.BadStoreUri, locations.insert, 0, loc3)
|
||||
self.assertNotIn(loc1, locations)
|
||||
+ self.assertNotIn(loc3, locations)
|
||||
|
||||
# Test for set_attr of _locations_proxy
|
||||
image2 = TestStoreLocation.FakeImageProxy()
|
||||
diff --git a/glance/tests/unit/v1/test_api.py b/glance/tests/unit/v1/test_api.py
|
||||
index 4ec136d..39e9a44 100644
|
||||
--- a/glance/tests/unit/v1/test_api.py
|
||||
+++ b/glance/tests/unit/v1/test_api.py
|
||||
@@ -1071,31 +1071,23 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
|
||||
def test_add_copy_from_with_restricted_sources(self):
|
||||
"""Tests creates an image from copy-from with restricted sources"""
|
||||
- fixture_headers = {'x-image-meta-store': 'file',
|
||||
+ header_template = {'x-image-meta-store': 'file',
|
||||
'x-image-meta-disk-format': 'vhd',
|
||||
- 'x-glance-api-copy-from': 'file:///etc/passwd',
|
||||
'x-image-meta-container-format': 'ovf',
|
||||
'x-image-meta-name': 'fake image #F'}
|
||||
|
||||
- req = webob.Request.blank("/images")
|
||||
- req.method = 'POST'
|
||||
- for k, v in six.iteritems(fixture_headers):
|
||||
- req.headers[k] = v
|
||||
- res = req.get_response(self.api)
|
||||
- self.assertEqual(400, res.status_int)
|
||||
+ schemas = ["file:///etc/passwd",
|
||||
+ "swift+config:///xxx",
|
||||
+ "filesystem:///etc/passwd"]
|
||||
|
||||
- fixture_headers = {'x-image-meta-store': 'file',
|
||||
- 'x-image-meta-disk-format': 'vhd',
|
||||
- 'x-glance-api-copy-from': 'swift+config://xxx',
|
||||
- 'x-image-meta-container-format': 'ovf',
|
||||
- 'x-image-meta-name': 'fake image #F'}
|
||||
-
|
||||
- req = webob.Request.blank("/images")
|
||||
- req.method = 'POST'
|
||||
- for k, v in six.iteritems(fixture_headers):
|
||||
- req.headers[k] = v
|
||||
- res = req.get_response(self.api)
|
||||
- self.assertEqual(400, res.status_int)
|
||||
+ for schema in schemas:
|
||||
+ req = webob.Request.blank("/images")
|
||||
+ req.method = 'POST'
|
||||
+ for k, v in six.iteritems(header_template):
|
||||
+ req.headers[k] = v
|
||||
+ req.headers['x-glance-api-copy-from'] = schema
|
||||
+ res = req.get_response(self.api)
|
||||
+ self.assertEqual(400, res.status_int)
|
||||
|
||||
def test_add_copy_from_upload_image_unauthorized_with_body(self):
|
||||
rules = {"upload_image": '!', "modify_image": '@',
|
||||
--
|
||||
2.0.5
|
||||
|
@ -0,0 +1,702 @@
|
||||
From d9a928eac360add67477e29f516af868adfe0d5e Mon Sep 17 00:00:00 2001
|
||||
From: Zhi Yan Liu <zhiyanl@cn.ibm.com>
|
||||
Date: Mon, 15 Dec 2014 12:29:55 +0800
|
||||
Subject: [PATCH] To prevent client use v2 patch api to handle file and swift
|
||||
location
|
||||
|
||||
The change will be used to restrict client to download and delete any
|
||||
file in glance-api server. The same resone and logic as what we did in
|
||||
v1:
|
||||
https://github.com/openstack/glance/blob/master/glance/api/v1/images.py#L429
|
||||
|
||||
Closes-Bug: bug/1400966
|
||||
DocImpact
|
||||
|
||||
Note: Even this change could fully resolve the problem for Glance, but
|
||||
we still need to fix this issue from glance_store perspective
|
||||
separatelly due to other projects can use the lib directly.
|
||||
|
||||
Conflicts:
|
||||
glance/api/v1/images.py
|
||||
glance/location.py
|
||||
glance/tests/functional/v2/test_images.py
|
||||
glance/tests/unit/test_store_location.py
|
||||
glance/tests/unit/v1/test_api.py
|
||||
|
||||
(cherry-picked from 4afdb017aa1ccef01482f117cb8d0736a6da38ed)
|
||||
Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
|
||||
Change-Id: I72dbead3cb2dcb87f52658ddb880e26880cc229b
|
||||
---
|
||||
glance/api/v1/images.py | 31 ++---
|
||||
glance/common/store_utils.py | 22 ++++
|
||||
glance/location.py | 30 +++--
|
||||
glance/tests/functional/v1/test_copy_to_file.py | 4 +-
|
||||
glance/tests/functional/v2/test_images.py | 158 ++++++++++--------------
|
||||
glance/tests/unit/test_store_image.py | 3 +-
|
||||
glance/tests/unit/test_store_location.py | 33 ++++-
|
||||
glance/tests/unit/utils.py | 9 +-
|
||||
glance/tests/unit/v1/test_api.py | 62 +++++++++-
|
||||
9 files changed, 221 insertions(+), 131 deletions(-)
|
||||
|
||||
diff --git a/glance/api/v1/images.py b/glance/api/v1/images.py
|
||||
index c85b301..746f8cd 100644
|
||||
--- a/glance/api/v1/images.py
|
||||
+++ b/glance/api/v1/images.py
|
||||
@@ -23,7 +23,6 @@ import eventlet
|
||||
import glance_store as store
|
||||
import glance_store.location
|
||||
from oslo.config import cfg
|
||||
-import six.moves.urllib.parse as urlparse
|
||||
from webob.exc import HTTPBadRequest
|
||||
from webob.exc import HTTPConflict
|
||||
from webob.exc import HTTPForbidden
|
||||
@@ -40,6 +39,7 @@ from glance.api.v1 import filters
|
||||
from glance.api.v1 import upload_utils
|
||||
from glance.common import exception
|
||||
from glance.common import property_utils
|
||||
+from glance.common import store_utils
|
||||
from glance.common import utils
|
||||
from glance.common import wsgi
|
||||
from glance.i18n import _LE
|
||||
@@ -415,26 +415,19 @@ class Controller(controller.BaseController):
|
||||
@staticmethod
|
||||
def _validate_source(source, req):
|
||||
"""
|
||||
- External sources (as specified via the location or copy-from headers)
|
||||
- are supported only over non-local store types, i.e. S3, Swift, HTTP.
|
||||
- Note the absence of 'file://' for security reasons, see LP bug #942118.
|
||||
- 'swift+config://' is also absent for security reasons, see LP bug
|
||||
- #1334196.
|
||||
- If the above constraint is violated, we reject with 400 "Bad Request".
|
||||
+ To validate if external sources (as specified via the location
|
||||
+ or copy-from headers) are supported. Otherwise we reject
|
||||
+ with 400 "Bad Request".
|
||||
"""
|
||||
if source:
|
||||
- pieces = urlparse.urlparse(source)
|
||||
- schemes = [scheme for scheme in store.get_known_schemes()
|
||||
- if scheme != 'file' and scheme != 'swift+config']
|
||||
- for scheme in schemes:
|
||||
- if pieces.scheme == scheme:
|
||||
- return source
|
||||
- msg = ("External sourcing not supported for "
|
||||
- "store '%s'" % pieces.scheme)
|
||||
- LOG.debug(msg)
|
||||
- raise HTTPBadRequest(explanation=msg,
|
||||
- request=req,
|
||||
- content_type="text/plain")
|
||||
+ if store_utils.validate_external_location(source):
|
||||
+ return source
|
||||
+ else:
|
||||
+ msg = _("External source are not supported: '%s'") % source
|
||||
+ LOG.debug(msg)
|
||||
+ raise HTTPBadRequest(explanation=msg,
|
||||
+ request=req,
|
||||
+ content_type="text/plain")
|
||||
|
||||
@staticmethod
|
||||
def _copy_from(req):
|
||||
diff --git a/glance/common/store_utils.py b/glance/common/store_utils.py
|
||||
index 8f04d39..b7537ce 100644
|
||||
--- a/glance/common/store_utils.py
|
||||
+++ b/glance/common/store_utils.py
|
||||
@@ -16,6 +16,7 @@ import sys
|
||||
|
||||
import glance_store as store_api
|
||||
from oslo.config import cfg
|
||||
+import six.moves.urllib.parse as urlparse
|
||||
|
||||
from glance.common import utils
|
||||
import glance.db as db_api
|
||||
@@ -119,3 +120,24 @@ def delete_image_location_from_backend(context, image_id, location):
|
||||
# such as uploading process failure then we can't use
|
||||
# location status mechanism to support image pending delete.
|
||||
safe_delete_from_backend(context, image_id, location)
|
||||
+
|
||||
+
|
||||
+def validate_external_location(uri):
|
||||
+ """
|
||||
+ Validate if URI of external location are supported.
|
||||
+
|
||||
+ Only over non-local store types are OK, i.e. S3, Swift,
|
||||
+ HTTP. Note the absence of 'file://' for security reasons,
|
||||
+ see LP bug #942118, 1400966, 'swift+config://' is also
|
||||
+ absent for security reasons, see LP bug #1334196.
|
||||
+
|
||||
+ :param uri: The URI of external image location.
|
||||
+ :return: Whether given URI of external image location are OK.
|
||||
+ """
|
||||
+
|
||||
+ # TODO(zhiyan): This function could be moved to glance_store.
|
||||
+
|
||||
+ pieces = urlparse.urlparse(uri)
|
||||
+ valid_schemes = [scheme for scheme in store_api.get_known_schemes()
|
||||
+ if scheme != 'file' and scheme != 'swift+config']
|
||||
+ return pieces.scheme in valid_schemes
|
||||
diff --git a/glance/location.py b/glance/location.py
|
||||
index fcdba0a..f83fa7a 100644
|
||||
--- a/glance/location.py
|
||||
+++ b/glance/location.py
|
||||
@@ -66,18 +66,20 @@ class ImageRepoProxy(glance.domain.proxy.Repo):
|
||||
return result
|
||||
|
||||
|
||||
-def _check_location_uri(context, store_api, uri):
|
||||
+def _check_location_uri(context, store_api, store_utils, uri):
|
||||
"""Check if an image location is valid.
|
||||
|
||||
:param context: Glance request context
|
||||
:param store_api: store API module
|
||||
+ :param store_utils: store utils module
|
||||
:param uri: location's uri string
|
||||
"""
|
||||
+
|
||||
is_ok = True
|
||||
try:
|
||||
- size = store_api.get_size_from_backend(uri, context=context)
|
||||
# NOTE(zhiyan): Some stores return zero when it catch exception
|
||||
- is_ok = size > 0
|
||||
+ is_ok = (store_utils.validate_external_location(uri) and
|
||||
+ store_api.get_size_from_backend(uri, context=context) > 0)
|
||||
except (store.UnknownScheme, store.NotFound):
|
||||
is_ok = False
|
||||
if not is_ok:
|
||||
@@ -85,8 +87,8 @@ def _check_location_uri(context, store_api, uri):
|
||||
raise exception.BadStoreUri(message=reason)
|
||||
|
||||
|
||||
-def _check_image_location(context, store_api, location):
|
||||
- _check_location_uri(context, store_api, location['url'])
|
||||
+def _check_image_location(context, store_api, store_utils, location):
|
||||
+ _check_location_uri(context, store_api, store_utils, location['url'])
|
||||
store_api.check_location_metadata(location['metadata'])
|
||||
|
||||
|
||||
@@ -122,6 +124,7 @@ class ImageFactoryProxy(glance.domain.proxy.ImageFactory):
|
||||
def __init__(self, factory, context, store_api, store_utils):
|
||||
self.context = context
|
||||
self.store_api = store_api
|
||||
+ self.store_utils = store_utils
|
||||
proxy_kwargs = {'context': context, 'store_api': store_api,
|
||||
'store_utils': store_utils}
|
||||
super(ImageFactoryProxy, self).__init__(factory,
|
||||
@@ -131,7 +134,10 @@ class ImageFactoryProxy(glance.domain.proxy.ImageFactory):
|
||||
def new_image(self, **kwargs):
|
||||
locations = kwargs.get('locations', [])
|
||||
for loc in locations:
|
||||
- _check_image_location(self.context, self.store_api, loc)
|
||||
+ _check_image_location(self.context,
|
||||
+ self.store_api,
|
||||
+ self.store_utils,
|
||||
+ loc)
|
||||
loc['status'] = 'active'
|
||||
if _count_duplicated_locations(locations, loc) > 1:
|
||||
raise exception.DuplicateLocation(location=loc['url'])
|
||||
@@ -169,7 +175,9 @@ class StoreLocations(collections.MutableSequence):
|
||||
|
||||
def insert(self, i, location):
|
||||
_check_image_location(self.image_proxy.context,
|
||||
- self.image_proxy.store_api, location)
|
||||
+ self.image_proxy.store_api,
|
||||
+ self.image_proxy.store_utils,
|
||||
+ location)
|
||||
location['status'] = 'active'
|
||||
if _count_duplicated_locations(self.value, location) > 0:
|
||||
raise exception.DuplicateLocation(location=location['url'])
|
||||
@@ -214,7 +222,9 @@ class StoreLocations(collections.MutableSequence):
|
||||
|
||||
def __setitem__(self, i, location):
|
||||
_check_image_location(self.image_proxy.context,
|
||||
- self.image_proxy.store_api, location)
|
||||
+ self.image_proxy.store_api,
|
||||
+ self.image_proxy.store_utils,
|
||||
+ location)
|
||||
location['status'] = 'active'
|
||||
self.value.__setitem__(i, location)
|
||||
_set_image_size(self.image_proxy.context,
|
||||
@@ -303,7 +313,9 @@ def _locations_proxy(target, attr):
|
||||
'%s') % ori_value)
|
||||
# NOTE(zhiyan): Check locations are all valid.
|
||||
for location in value:
|
||||
- _check_image_location(self.context, self.store_api,
|
||||
+ _check_image_location(self.context,
|
||||
+ self.store_api,
|
||||
+ self.store_utils,
|
||||
location)
|
||||
location['status'] = 'active'
|
||||
if _count_duplicated_locations(value, location) > 1:
|
||||
diff --git a/glance/tests/functional/v1/test_copy_to_file.py b/glance/tests/functional/v1/test_copy_to_file.py
|
||||
index 15bb708..b64eac6 100644
|
||||
--- a/glance/tests/functional/v1/test_copy_to_file.py
|
||||
+++ b/glance/tests/functional/v1/test_copy_to_file.py
|
||||
@@ -250,7 +250,7 @@ class TestCopyToFile(functional.FunctionalTest):
|
||||
response, content = http.request(path, 'POST', headers=headers)
|
||||
self.assertEqual(response.status, 400, content)
|
||||
|
||||
- expected = 'External sourcing not supported for store \'file\''
|
||||
+ expected = 'External source are not supported: \'%s\'' % copy_from
|
||||
msg = 'expected "%s" in "%s"' % (expected, content)
|
||||
self.assertTrue(expected in content, msg)
|
||||
|
||||
@@ -276,7 +276,7 @@ class TestCopyToFile(functional.FunctionalTest):
|
||||
response, content = http.request(path, 'POST', headers=headers)
|
||||
self.assertEqual(response.status, 400, content)
|
||||
|
||||
- expected = 'External sourcing not supported for store \'swift+config\''
|
||||
+ expected = 'External source are not supported: \'swift+config://xxx\''
|
||||
msg = 'expected "%s" in "%s"' % (expected, content)
|
||||
self.assertTrue(expected in content, msg)
|
||||
|
||||
diff --git a/glance/tests/functional/v2/test_images.py b/glance/tests/functional/v2/test_images.py
|
||||
index 14fe3c7..4c32375 100644
|
||||
--- a/glance/tests/functional/v2/test_images.py
|
||||
+++ b/glance/tests/functional/v2/test_images.py
|
||||
@@ -16,7 +16,6 @@
|
||||
import BaseHTTPServer
|
||||
import os
|
||||
import signal
|
||||
-import tempfile
|
||||
import uuid
|
||||
|
||||
import requests
|
||||
@@ -47,7 +46,7 @@ def get_handler_class(fixture):
|
||||
self.end_headers()
|
||||
return
|
||||
|
||||
- def log_message(*args, **kwargs):
|
||||
+ def log_message(self, *args, **kwargs):
|
||||
# Override this method to prevent debug output from going
|
||||
# to stderr during testing
|
||||
return
|
||||
@@ -75,6 +74,18 @@ class TestImages(functional.FunctionalTest):
|
||||
self.cleanup()
|
||||
self.api_server.deployment_flavor = 'noauth'
|
||||
self.api_server.data_api = 'glance.db.sqlalchemy.api'
|
||||
+ for i in range(3):
|
||||
+ ret = http_server("foo_image_id%d" % i, "foo_image%d" % i)
|
||||
+ setattr(self, 'http_server%d_pid' % i, ret[0])
|
||||
+ setattr(self, 'http_port%d' % i, ret[1])
|
||||
+
|
||||
+ def tearDown(self):
|
||||
+ for i in range(3):
|
||||
+ pid = getattr(self, 'http_server%d_pid' % i, None)
|
||||
+ if pid:
|
||||
+ os.kill(pid, signal.SIGKILL)
|
||||
+
|
||||
+ super(TestImages, self).tearDown()
|
||||
|
||||
def _url(self, path):
|
||||
return 'http://127.0.0.1:%d%s' % (self.api_port, path)
|
||||
@@ -329,21 +340,15 @@ class TestImages(functional.FunctionalTest):
|
||||
self.assertEqual(413, response.status_code, response.text)
|
||||
|
||||
# Adding 3 image locations should fail since configured limit is 2
|
||||
- for i in range(3):
|
||||
- file_path = os.path.join(self.test_dir, 'fake_image_%i' % i)
|
||||
- with open(file_path, 'w') as fap:
|
||||
- fap.write('glance')
|
||||
-
|
||||
path = self._url('/v2/images/%s' % image_id)
|
||||
media_type = 'application/openstack-images-v2.1-json-patch'
|
||||
headers = self._headers({'content-type': media_type})
|
||||
changes = []
|
||||
for i in range(3):
|
||||
+ url = ('http://127.0.0.1:%s/foo_image' %
|
||||
+ getattr(self, 'http_port%d' % i))
|
||||
changes.append({'op': 'add', 'path': '/locations/-',
|
||||
- 'value': {'url': 'file://{0}'.format(
|
||||
- os.path.join(self.test_dir,
|
||||
- 'fake_image_%i' % i)),
|
||||
- 'metadata': {}},
|
||||
+ 'value': {'url': url, 'metadata': {}},
|
||||
})
|
||||
|
||||
data = jsonutils.dumps(changes)
|
||||
@@ -2176,17 +2181,14 @@ class TestImages(functional.FunctionalTest):
|
||||
self.assertNotIn('size', image)
|
||||
self.assertNotIn('virtual_size', image)
|
||||
|
||||
- file_path = os.path.join(self.test_dir, 'fake_image')
|
||||
- with open(file_path, 'w') as fap:
|
||||
- fap.write('glance')
|
||||
-
|
||||
# Update locations for the queued image
|
||||
path = self._url('/v2/images/%s' % image_id)
|
||||
media_type = 'application/openstack-images-v2.1-json-patch'
|
||||
headers = self._headers({'content-type': media_type})
|
||||
+ url = 'http://127.0.0.1:%s/foo_image' % self.http_port0
|
||||
data = jsonutils.dumps([{'op': 'replace', 'path': '/locations',
|
||||
- 'value': [{'url': 'file://' + file_path,
|
||||
- 'metadata': {}}]}])
|
||||
+ 'value': [{'url': url, 'metadata': {}}]
|
||||
+ }])
|
||||
response = requests.patch(path, headers=headers, data=data)
|
||||
self.assertEqual(200, response.status_code, response.text)
|
||||
|
||||
@@ -2195,7 +2197,42 @@ class TestImages(functional.FunctionalTest):
|
||||
response = requests.get(path, headers=headers)
|
||||
self.assertEqual(200, response.status_code)
|
||||
image = jsonutils.loads(response.text)
|
||||
- self.assertEqual(image['size'], 6)
|
||||
+ self.assertEqual(image['size'], 10)
|
||||
+
|
||||
+ def test_update_locations_with_restricted_sources(self):
|
||||
+ self.start_servers(**self.__dict__.copy())
|
||||
+ # Create an image
|
||||
+ path = self._url('/v2/images')
|
||||
+ headers = self._headers({'content-type': 'application/json'})
|
||||
+ data = jsonutils.dumps({'name': 'image-1', 'disk_format': 'aki',
|
||||
+ 'container_format': 'aki'})
|
||||
+ response = requests.post(path, headers=headers, data=data)
|
||||
+ self.assertEqual(201, response.status_code)
|
||||
+
|
||||
+ # Returned image entity should have a generated id and status
|
||||
+ image = jsonutils.loads(response.text)
|
||||
+ image_id = image['id']
|
||||
+ self.assertEqual('queued', image['status'])
|
||||
+ self.assertNotIn('size', image)
|
||||
+ self.assertNotIn('virtual_size', image)
|
||||
+
|
||||
+ # Update locations for the queued image
|
||||
+ path = self._url('/v2/images/%s' % image_id)
|
||||
+ media_type = 'application/openstack-images-v2.1-json-patch'
|
||||
+ headers = self._headers({'content-type': media_type})
|
||||
+ data = jsonutils.dumps([{'op': 'replace', 'path': '/locations',
|
||||
+ 'value': [{'url': 'file:///foo_image',
|
||||
+ 'metadata': {}}]
|
||||
+ }])
|
||||
+ response = requests.patch(path, headers=headers, data=data)
|
||||
+ self.assertEqual(400, response.status_code, response.text)
|
||||
+
|
||||
+ data = jsonutils.dumps([{'op': 'replace', 'path': '/locations',
|
||||
+ 'value': [{'url': 'swift+config:///foo_image',
|
||||
+ 'metadata': {}}]
|
||||
+ }])
|
||||
+ response = requests.patch(path, headers=headers, data=data)
|
||||
+ self.assertEqual(400, response.status_code, response.text)
|
||||
|
||||
|
||||
class TestImagesWithRegistry(TestImages):
|
||||
@@ -2421,16 +2458,16 @@ class TestImageLocationSelectionStrategy(functional.FunctionalTest):
|
||||
super(TestImageLocationSelectionStrategy, self).setUp()
|
||||
self.cleanup()
|
||||
self.api_server.deployment_flavor = 'noauth'
|
||||
- self.foo_image_file = tempfile.NamedTemporaryFile()
|
||||
- self.foo_image_file.write("foo image file")
|
||||
- self.foo_image_file.flush()
|
||||
- self.addCleanup(self.foo_image_file.close)
|
||||
- ret = http_server("foo_image_id", "foo_image")
|
||||
- self.http_server_pid, self.http_port = ret
|
||||
+ for i in range(3):
|
||||
+ ret = http_server("foo_image_id%d" % i, "foo_image%d" % i)
|
||||
+ setattr(self, 'http_server%d_pid' % i, ret[0])
|
||||
+ setattr(self, 'http_port%d' % i, ret[1])
|
||||
|
||||
def tearDown(self):
|
||||
- if self.http_server_pid is not None:
|
||||
- os.kill(self.http_server_pid, signal.SIGKILL)
|
||||
+ for i in range(3):
|
||||
+ pid = getattr(self, 'http_server%d_pid' % i, None)
|
||||
+ if pid:
|
||||
+ os.kill(pid, signal.SIGKILL)
|
||||
|
||||
super(TestImageLocationSelectionStrategy, self).tearDown()
|
||||
|
||||
@@ -2483,69 +2520,10 @@ class TestImageLocationSelectionStrategy(functional.FunctionalTest):
|
||||
path = self._url('/v2/images/%s' % image_id)
|
||||
media_type = 'application/openstack-images-v2.1-json-patch'
|
||||
headers = self._headers({'content-type': media_type})
|
||||
- values = [{'url': 'file://%s' % self.foo_image_file.name,
|
||||
- 'metadata': {'idx': '1'}},
|
||||
- {'url': 'http://127.0.0.1:%s/foo_image' % self.http_port,
|
||||
- 'metadata': {'idx': '0'}}]
|
||||
- doc = [{'op': 'replace',
|
||||
- 'path': '/locations',
|
||||
- 'value': values}]
|
||||
- data = jsonutils.dumps(doc)
|
||||
- response = requests.patch(path, headers=headers, data=data)
|
||||
- self.assertEqual(200, response.status_code)
|
||||
-
|
||||
- # Image locations should be visible
|
||||
- path = self._url('/v2/images/%s' % image_id)
|
||||
- headers = self._headers({'Content-Type': 'application/json'})
|
||||
- response = requests.get(path, headers=headers)
|
||||
- self.assertEqual(200, response.status_code)
|
||||
- image = jsonutils.loads(response.text)
|
||||
- self.assertTrue('locations' in image)
|
||||
- self.assertEqual(image['locations'], values)
|
||||
- self.assertTrue('direct_url' in image)
|
||||
- self.assertEqual(image['direct_url'], values[0]['url'])
|
||||
-
|
||||
- self.stop_servers()
|
||||
-
|
||||
- def test_image_locatons_with_store_type_strategy(self):
|
||||
- self.api_server.show_image_direct_url = True
|
||||
- self.api_server.show_multiple_locations = True
|
||||
- self.image_location_quota = 10
|
||||
- self.api_server.location_strategy = 'store_type'
|
||||
- preference = "http, swift, filesystem"
|
||||
- self.api_server.store_type_location_strategy_preference = preference
|
||||
- self.start_servers(**self.__dict__.copy())
|
||||
-
|
||||
- # Create an image
|
||||
- path = self._url('/v2/images')
|
||||
- headers = self._headers({'content-type': 'application/json'})
|
||||
- data = jsonutils.dumps({'name': 'image-1', 'type': 'kernel',
|
||||
- 'foo': 'bar', 'disk_format': 'aki',
|
||||
- 'container_format': 'aki'})
|
||||
- response = requests.post(path, headers=headers, data=data)
|
||||
- self.assertEqual(201, response.status_code)
|
||||
-
|
||||
- # Get the image id
|
||||
- image = jsonutils.loads(response.text)
|
||||
- image_id = image['id']
|
||||
-
|
||||
- # Image locations should not be visible before location is set
|
||||
- path = self._url('/v2/images/%s' % image_id)
|
||||
- headers = self._headers({'Content-Type': 'application/json'})
|
||||
- response = requests.get(path, headers=headers)
|
||||
- self.assertEqual(200, response.status_code)
|
||||
- image = jsonutils.loads(response.text)
|
||||
- self.assertTrue('locations' in image)
|
||||
- self.assertTrue(image["locations"] == [])
|
||||
-
|
||||
- # Update image locations via PATCH
|
||||
- path = self._url('/v2/images/%s' % image_id)
|
||||
- media_type = 'application/openstack-images-v2.1-json-patch'
|
||||
- headers = self._headers({'content-type': media_type})
|
||||
- values = [{'url': 'file://%s' % self.foo_image_file.name,
|
||||
- 'metadata': {'idx': '1'}},
|
||||
- {'url': 'http://127.0.0.1:%s/foo_image' % self.http_port,
|
||||
- 'metadata': {'idx': '0'}}]
|
||||
+ values = [{'url': 'http://127.0.0.1:%s/foo_image' % self.http_port0,
|
||||
+ 'metadata': {}},
|
||||
+ {'url': 'http://127.0.0.1:%s/foo_image' % self.http_port1,
|
||||
+ 'metadata': {}}]
|
||||
doc = [{'op': 'replace',
|
||||
'path': '/locations',
|
||||
'value': values}]
|
||||
@@ -2553,8 +2531,6 @@ class TestImageLocationSelectionStrategy(functional.FunctionalTest):
|
||||
response = requests.patch(path, headers=headers, data=data)
|
||||
self.assertEqual(200, response.status_code)
|
||||
|
||||
- values.sort(key=lambda loc: int(loc['metadata']['idx']))
|
||||
-
|
||||
# Image locations should be visible
|
||||
path = self._url('/v2/images/%s' % image_id)
|
||||
headers = self._headers({'Content-Type': 'application/json'})
|
||||
diff --git a/glance/tests/unit/test_store_image.py b/glance/tests/unit/test_store_image.py
|
||||
index 665f126..8b334ab 100644
|
||||
--- a/glance/tests/unit/test_store_image.py
|
||||
+++ b/glance/tests/unit/test_store_image.py
|
||||
@@ -18,6 +18,7 @@ import glance_store
|
||||
|
||||
from glance.common import exception
|
||||
import glance.location
|
||||
+from glance.tests.unit import base as unit_test_base
|
||||
from glance.tests.unit import utils as unit_test_utils
|
||||
from glance.tests import utils
|
||||
|
||||
@@ -759,7 +760,7 @@ class TestStoreImageRepo(utils.BaseTestCase):
|
||||
self.assertEqual(acls['read'], [TENANT2])
|
||||
|
||||
|
||||
-class TestImageFactory(utils.BaseTestCase):
|
||||
+class TestImageFactory(unit_test_base.StoreClearingUnitTest):
|
||||
|
||||
def setUp(self):
|
||||
super(TestImageFactory, self).setUp()
|
||||
diff --git a/glance/tests/unit/test_store_location.py b/glance/tests/unit/test_store_location.py
|
||||
index 884221b..c9ee44c 100644
|
||||
--- a/glance/tests/unit/test_store_location.py
|
||||
+++ b/glance/tests/unit/test_store_location.py
|
||||
@@ -17,6 +17,8 @@ import mock
|
||||
|
||||
import glance_store
|
||||
|
||||
+from glance.common import exception
|
||||
+from glance.common import store_utils
|
||||
import glance.location
|
||||
from glance.tests.unit import base
|
||||
|
||||
@@ -32,11 +34,13 @@ CONF = {'default_store': 'file',
|
||||
|
||||
class TestStoreLocation(base.StoreClearingUnitTest):
|
||||
|
||||
+ class FakeImageProxy():
|
||||
+ size = None
|
||||
+ context = None
|
||||
+ store_api = mock.Mock()
|
||||
+ store_utils = store_utils
|
||||
+
|
||||
def test_add_location_for_image_without_size(self):
|
||||
- class FakeImageProxy():
|
||||
- size = None
|
||||
- context = None
|
||||
- store_api = mock.Mock()
|
||||
|
||||
def fake_get_size_from_backend(uri, context=None):
|
||||
return 1
|
||||
@@ -49,14 +53,31 @@ class TestStoreLocation(base.StoreClearingUnitTest):
|
||||
loc2 = {'url': 'file:///fake2.img.tar.gz', 'metadata': {}}
|
||||
|
||||
# Test for insert location
|
||||
- image1 = FakeImageProxy()
|
||||
+ image1 = TestStoreLocation.FakeImageProxy()
|
||||
locations = glance.location.StoreLocations(image1, [])
|
||||
locations.insert(0, loc2)
|
||||
self.assertEqual(image1.size, 1)
|
||||
|
||||
# Test for set_attr of _locations_proxy
|
||||
- image2 = FakeImageProxy()
|
||||
+ image2 = TestStoreLocation.FakeImageProxy()
|
||||
locations = glance.location.StoreLocations(image2, [loc1])
|
||||
locations[0] = loc2
|
||||
self.assertIn(loc2, locations)
|
||||
self.assertEqual(image2.size, 1)
|
||||
+
|
||||
+ def test_add_location_with_restricted_sources(self):
|
||||
+
|
||||
+ loc1 = {'url': 'file:///fake1.img.tar.gz', 'metadata': {}}
|
||||
+ loc2 = {'url': 'swift+config:///xxx', 'metadata': {}}
|
||||
+
|
||||
+ # Test for insert location
|
||||
+ image1 = TestStoreLocation.FakeImageProxy()
|
||||
+ locations = glance.location.StoreLocations(image1, [])
|
||||
+ self.assertRaises(exception.BadStoreUri, locations.insert, 0, loc1)
|
||||
+ self.assertNotIn(loc1, locations)
|
||||
+
|
||||
+ # Test for set_attr of _locations_proxy
|
||||
+ image2 = TestStoreLocation.FakeImageProxy()
|
||||
+ locations = glance.location.StoreLocations(image2, [loc1])
|
||||
+ self.assertRaises(exception.BadStoreUri, locations.insert, 0, loc2)
|
||||
+ self.assertNotIn(loc2, locations)
|
||||
diff --git a/glance/tests/unit/utils.py b/glance/tests/unit/utils.py
|
||||
index df59160..f7c8d56 100644
|
||||
--- a/glance/tests/unit/utils.py
|
||||
+++ b/glance/tests/unit/utils.py
|
||||
@@ -14,12 +14,13 @@
|
||||
# under the License.
|
||||
|
||||
import urllib
|
||||
-import urlparse
|
||||
|
||||
import glance_store as store
|
||||
from oslo.config import cfg
|
||||
+import six.moves.urllib.parse as urlparse
|
||||
|
||||
from glance.common import exception
|
||||
+from glance.common import store_utils
|
||||
from glance.common import wsgi
|
||||
import glance.context
|
||||
import glance.db.simple.api as simple_db
|
||||
@@ -135,6 +136,12 @@ class FakeStoreUtils(object):
|
||||
else:
|
||||
self.safe_delete_from_backend(context, image_id, location)
|
||||
|
||||
+ def validate_external_location(self, uri):
|
||||
+ if uri and urlparse.urlparse(uri).scheme:
|
||||
+ return store_utils.validate_external_location(uri)
|
||||
+ else:
|
||||
+ return True
|
||||
+
|
||||
|
||||
class FakeStoreAPI(object):
|
||||
def __init__(self, store_metadata=None):
|
||||
diff --git a/glance/tests/unit/v1/test_api.py b/glance/tests/unit/v1/test_api.py
|
||||
index bd2182e..4ec136d 100644
|
||||
--- a/glance/tests/unit/v1/test_api.py
|
||||
+++ b/glance/tests/unit/v1/test_api.py
|
||||
@@ -419,7 +419,7 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(res.status_int, 400)
|
||||
- self.assertIn('External sourcing not supported', res.body)
|
||||
+ self.assertIn('External source are not supported', res.body)
|
||||
|
||||
def test_create_with_location_bad_store_uri(self):
|
||||
fixture_headers = {
|
||||
@@ -1006,7 +1006,7 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(res.status_int, 409)
|
||||
|
||||
- def test_add_location_with_invalid_location(self):
|
||||
+ def test_add_location_with_invalid_location_on_conflict_image_size(self):
|
||||
"""Tests creates an image from location and conflict image size"""
|
||||
fixture_headers = {'x-image-meta-store': 'file',
|
||||
'x-image-meta-disk-format': 'vhd',
|
||||
@@ -1023,6 +1023,36 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(res.status_int, 400)
|
||||
|
||||
+ def test_add_location_with_invalid_location_on_restricted_sources(self):
|
||||
+ """Tests creates an image from location and restricted sources"""
|
||||
+ fixture_headers = {'x-image-meta-store': 'file',
|
||||
+ 'x-image-meta-disk-format': 'vhd',
|
||||
+ 'x-image-meta-location': 'file:///etc/passwd',
|
||||
+ 'x-image-meta-container-format': 'ovf',
|
||||
+ 'x-image-meta-name': 'fake image #F'}
|
||||
+
|
||||
+ req = webob.Request.blank("/images")
|
||||
+ req.headers['Content-Type'] = 'application/octet-stream'
|
||||
+ req.method = 'POST'
|
||||
+ for k, v in fixture_headers.iteritems():
|
||||
+ req.headers[k] = v
|
||||
+ res = req.get_response(self.api)
|
||||
+ self.assertEqual(400, res.status_int)
|
||||
+
|
||||
+ fixture_headers = {'x-image-meta-store': 'file',
|
||||
+ 'x-image-meta-disk-format': 'vhd',
|
||||
+ 'x-image-meta-location': 'swift+config://xxx',
|
||||
+ 'x-image-meta-container-format': 'ovf',
|
||||
+ 'x-image-meta-name': 'fake image #F'}
|
||||
+
|
||||
+ req = webob.Request.blank("/images")
|
||||
+ req.headers['Content-Type'] = 'application/octet-stream'
|
||||
+ req.method = 'POST'
|
||||
+ for k, v in fixture_headers.iteritems():
|
||||
+ req.headers[k] = v
|
||||
+ res = req.get_response(self.api)
|
||||
+ self.assertEqual(400, res.status_int)
|
||||
+
|
||||
def test_add_copy_from_with_location(self):
|
||||
"""Tests creates an image from copy-from and location"""
|
||||
fixture_headers = {'x-image-meta-store': 'file',
|
||||
@@ -1039,6 +1069,34 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(res.status_int, 400)
|
||||
|
||||
+ def test_add_copy_from_with_restricted_sources(self):
|
||||
+ """Tests creates an image from copy-from with restricted sources"""
|
||||
+ fixture_headers = {'x-image-meta-store': 'file',
|
||||
+ 'x-image-meta-disk-format': 'vhd',
|
||||
+ 'x-glance-api-copy-from': 'file:///etc/passwd',
|
||||
+ 'x-image-meta-container-format': 'ovf',
|
||||
+ 'x-image-meta-name': 'fake image #F'}
|
||||
+
|
||||
+ req = webob.Request.blank("/images")
|
||||
+ req.method = 'POST'
|
||||
+ for k, v in six.iteritems(fixture_headers):
|
||||
+ req.headers[k] = v
|
||||
+ res = req.get_response(self.api)
|
||||
+ self.assertEqual(400, res.status_int)
|
||||
+
|
||||
+ fixture_headers = {'x-image-meta-store': 'file',
|
||||
+ 'x-image-meta-disk-format': 'vhd',
|
||||
+ 'x-glance-api-copy-from': 'swift+config://xxx',
|
||||
+ 'x-image-meta-container-format': 'ovf',
|
||||
+ 'x-image-meta-name': 'fake image #F'}
|
||||
+
|
||||
+ req = webob.Request.blank("/images")
|
||||
+ req.method = 'POST'
|
||||
+ for k, v in six.iteritems(fixture_headers):
|
||||
+ req.headers[k] = v
|
||||
+ res = req.get_response(self.api)
|
||||
+ self.assertEqual(400, res.status_int)
|
||||
+
|
||||
def test_add_copy_from_upload_image_unauthorized_with_body(self):
|
||||
rules = {"upload_image": '!', "modify_image": '@',
|
||||
"add_image": '@'}
|
||||
--
|
||||
2.0.5
|
||||
|
@ -0,0 +1,15 @@
|
||||
https://bugs.gentoo.org/536490
|
||||
|
||||
--- Emacs-D-Mode-2.0.6-orig/d-mode.el
|
||||
+++ Emacs-D-Mode-2.0.6/d-mode.el
|
||||
@@ -66,6 +66,10 @@
|
||||
;; necessary to get them compiled.)
|
||||
;; Coment out 'when-compile part for debugging
|
||||
(eval-when-compile
|
||||
+ (and (= emacs-major-version 24)
|
||||
+ (= emacs-minor-version 4)
|
||||
+ (null emacs-repository-version)
|
||||
+ (require 'cl))
|
||||
(require 'cc-langs)
|
||||
(require 'cc-fonts)
|
||||
)
|
@ -0,0 +1,38 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-misc/evtest/evtest-1.31.ebuild,v 1.1 2015/01/14 04:40:25 vapier Exp $
|
||||
|
||||
EAPI="4"
|
||||
|
||||
inherit autotools eutils
|
||||
|
||||
DESCRIPTION="test program for capturing input device events"
|
||||
HOMEPAGE="http://cgit.freedesktop.org/evtest/"
|
||||
SRC_URI="http://cgit.freedesktop.org/evtest/snapshot/${PN}-${P}.tar.gz -> ${P}.tar.gz
|
||||
mirror://gentoo/${P}-mans.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
|
||||
IUSE=""
|
||||
|
||||
# We bundled the man pages ourselves to avoid xmlto/asciidoc.
|
||||
# We need libxml2 for the capture tool. While at runtime,
|
||||
# we have a file that can be used with xsltproc, we don't
|
||||
# directly need it ourselves, so don't depend on libxslt.
|
||||
# tar zcf ${P}-mans.tar.gz *.1 --transform=s:^:evtest-${P}/:
|
||||
RDEPEND=""
|
||||
DEPEND="${RDEPEND}
|
||||
virtual/pkgconfig"
|
||||
|
||||
S=${WORKDIR}/${PN}-${P}
|
||||
|
||||
src_prepare() {
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# We pre-compile the man pages.
|
||||
XMLTO=$(type -P true) ASCIIDOC=$(type -P true) \
|
||||
econf
|
||||
}
|
@ -1 +1,2 @@
|
||||
DIST ledger-2.6.3.tar.gz 551325 SHA256 e2c99d930fcf64b7fa901215c7fa25e3327f6365e8ee049620ef3632d53bf363 SHA512 825e670d25d2f8d1791480fb5da4190f7b342ecc9b47bca60fd6f0e606e5af5f3f767ec7043339660396ef4c90451f4a4122d812b8761acf4ea964b67dbd43b5 WHIRLPOOL e6d351ce8899079daa9cb0d1f9493b2b551a6d44e8ad7949c28ac8e544f80c87d54f06b350adfc21c4c8582e9042547313a506fa74096671bae30b462ae3e2df
|
||||
DIST ledger-3.1.zip 1123899 SHA256 a01db044ae59d615721fb17d85bc36fa28d412a45149fa944aa63ac4dc120fe3 SHA512 f88ca14ee95cfa2dc87c346e6a06142a9f339646ce7ccf34134bc9c0be11f16355f04776514346a66df4ce9ae6b99529b12d9f3802f13f65fa0917609a4855b0 WHIRLPOOL 03c17e31e6b6a825a75c8b603cc53377ed329b1c4f4fc3c601193595d1b2b96ff16fdbefb2c8f72ea711454c4cd4a3254e19efb1953c8714a74ccc7db6767840
|
||||
|
@ -0,0 +1,24 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-office/ledger/ledger-3.1.ebuild,v 1.2 2015/01/13 21:34:51 yac Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit cmake-utils
|
||||
|
||||
DESCRIPTION="A double-entry accounting system with a command-line reporting interface"
|
||||
HOMEPAGE="http://ledger-cli.org/"
|
||||
SRC_URI="https://github.com/${PN}/${PN}/archive/v${PV}.zip -> ${P}.zip"
|
||||
|
||||
LICENSE="BSD"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
SLOT="0"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="dev-libs/boost
|
||||
dev-libs/gmp
|
||||
dev-libs/mpfr
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
DOCS=(README.md)
|
@ -1,25 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-portage/eclass-manpages/eclass-manpages-20120718.ebuild,v 1.1 2012/07/18 14:27:54 vapier Exp $
|
||||
|
||||
DESCRIPTION="collection of Gentoo eclass manpages"
|
||||
HOMEPAGE="http://www.gentoo.org/"
|
||||
SRC_URI=""
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-solaris"
|
||||
IUSE=""
|
||||
|
||||
DEPEND=""
|
||||
RDEPEND=""
|
||||
|
||||
S=${WORKDIR}
|
||||
|
||||
src_compile() {
|
||||
bash "${FILESDIR}"/eclass-to-manpage.sh || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
doman *.5 || die
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
DIST mysql-extras-20141021-1750Z.tar.bz2 1494527 SHA256 77ea84d3ffe7fd0dd339ef8c0431b5c20c9c8e566784af5139c7166e57bd3f33 SHA512 1d5669dc0913817ed65ebb352050f7c8501f6fe515b16c889f045167d6d6a30e355549c1e1e2fb6a15d3b02d33e3631483ca1b888cccdf33c7551c67225f7c31 WHIRLPOOL a6b79daa84dc9924ca325f025deada71bb1e819d77a406838fc2066ba7559e9885740539ff3dd01763efc7688249041514ff7b88a5690d02d6ad2b08846ad2aa
|
||||
DIST percona-server-5.6.21-69.0.tar.gz 33977181 SHA256 29a7f80bdaff21c8a803636ee90cf4d5e1c668c34341cac26424b59ff51de2bb SHA512 c0c585882def26dbb79ebf53488934b856f64916d273d81c9f48e94ee9fa5074c782c94bb3cbf1fcc78f3bc4ab4a47a9604241cb2a1ae2da4dd9a477b336b214 WHIRLPOOL f4bba72524e5255847304f73b1d520fa0bd037bd82ded8034378a13ad9dc3fe5d5cfc592e356ea09da1300b1f2b6e93466fa3850e0e1461183d25274ff379dbb
|
||||
DIST percona-server-5.6.21-70.0.tar.gz 33900799 SHA256 43392118dc9d9c65c64c02eaa6855f06e4e04dbb3f58a7ada7944206069486c0 SHA512 c04e637e9c6399d699a3baa5e40459843e2feb3c6f699036151536fc0a43a3773dbd97a29b7720a73a1690ddd69965fdf4667a4d116a4fcdbe6aaef937a38d78 WHIRLPOOL 38920f07f3d587aa9f11c2c4d673ed7debf4900d9d0bace12a1d074281cbf36eb7324d82a5f27431270688078e81bdaa729293bfeac9fc5590369b59c8971858
|
||||
DIST mysql-extras-20150113-1853Z.tar.bz2 1494439 SHA256 420553dc8557d0622ad762ee6924900acc74fd4f367fd3840acab03114fada4d SHA512 b1252d905b71a6f42484eaa796ebcd2f0769affc566e6c277ef3bc0ef9bc446a1c22aac3faa48ef7b9305056a1302b37d7ef86b547c44514528a5956ce61d372 WHIRLPOOL d14f0d88358eb0bbd2c338052ec086ab8260988497ef09da934365ded3c30c7e905ea936a0c9817ccb49d1f6e3408b3f6a438455a2455c65c2f26a9fc6367ff3
|
||||
DIST percona-server-5.6.21-70.1.tar.gz 33911244 SHA256 3f2ed35912a7a22f740be441078736e868a079b2f76e82988720e238b3ea8160 SHA512 8e1ef22fc6436d34197a5621b34fcb73f4876b480802cd72333d291dd04505ee423a4be487dfa56ec4bb473c7e8d600afbd54cca13caf5123931f3d919ec30f6 WHIRLPOOL 9a4306b04fb4dbbd0fd09aab9be91405c9d16b7b958a2596934778cefa2d983333b77adbaeecd0efe05efdef896c1a3d3a89a84874152dbf57e0e38bc6085e1b
|
||||
DIST percona-server-5.6.22-71.0.tar.gz 33992150 SHA256 0a7269a71e009bc802adef1dd3502562f22b881b7f88823ca84c987724dcf10c SHA512 b427473c130a39fc2985801a28d5c31295ad50c8ca7ebdd864d6c55389a0b095cef8eb47ebdc09d79e3aff6505b75bd9241442151ee87f986237b8a3be7873b0 WHIRLPOOL a89fb19498a0c74b4d3ad90ff047601524e9ba76513351433cdcd68ebe5524cc52f0ab1a54ae665b686562d55cb7c0df92ccb6be57709b2733aba4973f3b82ec
|
||||
|
@ -1,132 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-db/percona-server/percona-server-5.6.21.69.0.ebuild,v 1.1 2014/10/21 18:13:07 grknight Exp $
|
||||
|
||||
EAPI="5"
|
||||
MY_EXTRAS_VER="20141021-1750Z"
|
||||
|
||||
inherit toolchain-funcs mysql-multilib
|
||||
# only to make repoman happy. it is really set in the eclass
|
||||
IUSE="$IUSE"
|
||||
|
||||
# REMEMBER: also update eclass/mysql*.eclass before committing!
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd ~x86-linux"
|
||||
|
||||
# When MY_EXTRAS is bumped, the index should be revised to exclude these.
|
||||
EPATCH_EXCLUDE=''
|
||||
|
||||
DEPEND="|| ( >=sys-devel/gcc-3.4.6 >=sys-devel/gcc-apple-4.0 )"
|
||||
RDEPEND="${RDEPEND}"
|
||||
|
||||
# Please do not add a naive src_unpack to this ebuild
|
||||
# If you want to add a single patch, copy the ebuild to an overlay
|
||||
# and create your own mysql-extras tarball, looking at 000_index.txt
|
||||
|
||||
# Official test instructions:
|
||||
# USE='extraengine perl ssl static-libs community' \
|
||||
# FEATURES='test userpriv -usersandbox' \
|
||||
# ebuild percona-server-X.X.XX.ebuild \
|
||||
# digest clean package
|
||||
multilib_src_test() {
|
||||
|
||||
if ! multilib_is_native_abi ; then
|
||||
einfo "Server tests not available on non-native abi".
|
||||
return 0;
|
||||
fi
|
||||
|
||||
local TESTDIR="${CMAKE_BUILD_DIR}/mysql-test"
|
||||
local retstatus_unit
|
||||
local retstatus_tests
|
||||
|
||||
# Bug #213475 - MySQL _will_ object strenously if your machine is named
|
||||
# localhost. Also causes weird failures.
|
||||
[[ "${HOSTNAME}" == "localhost" ]] && die "Your machine must NOT be named localhost"
|
||||
|
||||
if ! use "minimal" ; then
|
||||
|
||||
if [[ $UID -eq 0 ]]; then
|
||||
die "Testing with FEATURES=-userpriv is no longer supported by upstream. Tests MUST be run as non-root."
|
||||
fi
|
||||
has usersandbox $FEATURES && eerror "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
|
||||
addpredict /this-dir-does-not-exist/t9.MYI
|
||||
|
||||
# Run CTest (test-units)
|
||||
cmake-utils_src_test
|
||||
retstatus_unit=$?
|
||||
[[ $retstatus_unit -eq 0 ]] || eerror "test-unit failed"
|
||||
|
||||
# Ensure that parallel runs don't die
|
||||
export MTR_BUILD_THREAD="$((${RANDOM} % 100))"
|
||||
# Enable parallel testing, auto will try to detect number of cores
|
||||
# You may set this by hand.
|
||||
# The default maximum is 8 unless MTR_MAX_PARALLEL is increased
|
||||
export MTR_PARALLEL="${MTR_PARALLEL:-auto}"
|
||||
|
||||
# create directories because mysqladmin might right out of order
|
||||
mkdir -p "${T}"/var-tests{,/log}
|
||||
|
||||
# These are failing in Percona 5.6 for now and are believed to be
|
||||
# false positives:
|
||||
#
|
||||
# main.information_schema, binlog.binlog_statement_insert_delayed,
|
||||
# main.mysqld--help-notwin, binlog.binlog_mysqlbinlog_filter
|
||||
# perfschema.binlog_edge_mix, perfschema.binlog_edge_stmt
|
||||
# funcs_1.is_columns_mysql funcs_1.is_tables_mysql funcs_1.is_triggers
|
||||
# fails due to USE=-latin1 / utf8 default
|
||||
#
|
||||
# main.mysql_client_test:
|
||||
# segfaults at random under Portage only, suspect resource limits.
|
||||
#
|
||||
# main.percona_bug1289599
|
||||
# Looks to be a syntax error in the test file itself
|
||||
#
|
||||
# main.variables main.myisam main.merge_recover
|
||||
# fails due to ulimit not able to open enough files (needs 5000)
|
||||
#
|
||||
# main.mysqlhotcopy_archive main.mysqlhotcopy_myisam
|
||||
# Called with bad parameters should be reported upstream
|
||||
|
||||
for t in main.mysql_client_test \
|
||||
binlog.binlog_statement_insert_delayed main.information_schema \
|
||||
main.mysqld--help-notwin binlog.binlog_mysqlbinlog_filter \
|
||||
perfschema.binlog_edge_mix perfschema.binlog_edge_stmt \
|
||||
funcs_1.is_columns_mysql funcs_1.is_tables_mysql funcs_1.is_triggers \
|
||||
main.variables main.myisam main.merge_recover \
|
||||
main.percona_bug1289599 main.mysqlhotcopy_archive main.mysqlhotcopy_myisam ; do
|
||||
mysql-multilib_disable_test "$t" "False positives in Gentoo"
|
||||
done
|
||||
|
||||
# Run mysql tests
|
||||
pushd "${TESTDIR}"
|
||||
|
||||
# Set file limits higher so tests run
|
||||
ulimit -n 3000
|
||||
|
||||
# run mysql-test tests
|
||||
perl mysql-test-run.pl --force --vardir="${T}/var-tests" \
|
||||
--testcase-timeout=30
|
||||
retstatus_tests=$?
|
||||
[[ $retstatus_tests -eq 0 ]] || eerror "tests failed"
|
||||
has usersandbox $FEATURES && eerror "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
popd
|
||||
|
||||
# Cleanup is important for these testcases.
|
||||
pkill -9 -f "${S}/ndb" 2>/dev/null
|
||||
pkill -9 -f "${S}/sql" 2>/dev/null
|
||||
|
||||
failures=""
|
||||
[[ $retstatus_unit -eq 0 ]] || failures="${failures} test-unit"
|
||||
[[ $retstatus_tests -eq 0 ]] || failures="${failures} tests"
|
||||
has usersandbox $FEATURES && eerror "Some tests may fail with FEATURES=usersandbox"
|
||||
|
||||
[[ -z "$failures" ]] || die "Test failures: $failures"
|
||||
einfo "Tests successfully completed"
|
||||
|
||||
else
|
||||
|
||||
einfo "Skipping server tests due to minimal build."
|
||||
fi
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-db/percona-server/percona-server-5.6.21.70.0.ebuild,v 1.1 2014/11/05 14:14:42 grknight Exp $
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-db/percona-server/percona-server-5.6.22.71.0.ebuild,v 1.1 2015/01/14 01:55:07 grknight Exp $
|
||||
|
||||
EAPI="5"
|
||||
MY_EXTRAS_VER="20141021-1750Z"
|
||||
MY_EXTRAS_VER="20150113-1853Z"
|
||||
|
||||
inherit toolchain-funcs mysql-multilib
|
||||
# only to make repoman happy. it is really set in the eclass
|
@ -0,0 +1,27 @@
|
||||
Gentoo-bug: https://bugs.gentoo.org/536426
|
||||
Reported-by: Eric Siegel
|
||||
commit 021b7978d14799bae779907faf7490cfd21b3f46
|
||||
Author: Austin Seipp <austin@well-typed.com>
|
||||
Date: Sun Jul 20 10:13:15 2014 -0500
|
||||
|
||||
driver: use absolute paths in ld scripts (#7452)
|
||||
|
||||
Patch contributed by slowmo.
|
||||
|
||||
Signed-off-by: Austin Seipp <austin@well-typed.com>
|
||||
|
||||
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs
|
||||
index 11427e2..49126fe 100644
|
||||
--- a/compiler/main/DriverPipeline.hs
|
||||
+++ b/compiler/main/DriverPipeline.hs
|
||||
@@ -2166,7 +2166,9 @@ joinObjectFiles dflags o_files output_fn = do
|
||||
if ldIsGnuLd
|
||||
then do
|
||||
script <- newTempName dflags "ldscript"
|
||||
- writeFile script $ "INPUT(" ++ unwords o_files ++ ")"
|
||||
+ cwd <- getCurrentDirectory
|
||||
+ let o_files_abs = map (cwd </>) o_files
|
||||
+ writeFile script $ "INPUT(" ++ unwords o_files_abs ++ ")"
|
||||
ld_r [SysTools.FileOption "" script] ccInfo
|
||||
else if sLdSupportsFilelist mySettings
|
||||
then do
|
@ -1,11 +0,0 @@
|
||||
--- tests/Makefile.in 2009-04-15 03:56:45.000000000 +0200
|
||||
+++ tests/Makefile-user.in 2009-04-22 16:36:20.000000000 +0200
|
||||
@@ -594,7 +594,6 @@
|
||||
|
||||
library_test:
|
||||
./testapp > output.cmp
|
||||
- diff output.res output.cmp
|
||||
|
||||
clients:
|
||||
memcached -d -P /tmp/Xumemc.pid -p 12555
|
||||
|
@ -1,17 +0,0 @@
|
||||
--- tests/server.c 2009-04-15 03:47:48.000000000 +0200
|
||||
+++ tests/server-user.c 2009-04-22 16:26:54.000000000 +0200
|
||||
@@ -40,12 +40,12 @@
|
||||
|
||||
if (x == 0)
|
||||
{
|
||||
- sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -m 128",
|
||||
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -m 128 -u memcached",
|
||||
MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
|
||||
}
|
||||
else
|
||||
{
|
||||
- sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u",
|
||||
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -u memcached",
|
||||
MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
|
||||
}
|
||||
fprintf(stderr, "STARTING SERVER: %s\n", buffer);
|
@ -1,18 +0,0 @@
|
||||
diff -Nuar --exclude '*~' libmemcached-0.39.orig//tests/server.c libmemcached-0.39//tests/server.c
|
||||
--- libmemcached-0.39.orig//tests/server.c 2010-03-03 13:52:47.000000000 -0800
|
||||
+++ libmemcached-0.39//tests/server.c 2010-04-17 11:12:13.000000000 -0700
|
||||
@@ -72,12 +72,12 @@
|
||||
|
||||
if (x == 0)
|
||||
{
|
||||
- sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -m 128",
|
||||
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -m 128 -u memcached",
|
||||
MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
|
||||
}
|
||||
else
|
||||
{
|
||||
- sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u",
|
||||
+ sprintf(buffer, "%s -d -P /tmp/%umemc.pid -t 1 -p %u -U %u -u memcached",
|
||||
MEMCACHED_BINARY, x, x + TEST_PORT_BASE, x + TEST_PORT_BASE);
|
||||
}
|
||||
fprintf(stderr, "STARTING SERVER: %s\n", buffer);
|
@ -0,0 +1,54 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-libs/libmemcached/libmemcached-1.0.18-r2.ebuild,v 1.1 2015/01/13 21:37:45 prometheanfire Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
WANT_AUTOMAKE=1.13
|
||||
|
||||
inherit autotools eutils multilib
|
||||
RESTRICT="test" # https://bugs.gentoo.org/show_bug.cgi?id=498250 https://bugs.launchpad.net/gentoo/+bug/1278023
|
||||
|
||||
DESCRIPTION="a C client library to the memcached server"
|
||||
HOMEPAGE="http://libmemcached.org/libMemcached.html"
|
||||
SRC_URI="http://launchpad.net/${PN}/1.0/${PV}/+download/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sh ~sparc ~x86 ~sparc-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos"
|
||||
IUSE="debug hsieh +libevent sasl static-libs"
|
||||
|
||||
DEPEND="net-misc/memcached
|
||||
sasl? ( dev-libs/cyrus-sasl )
|
||||
libevent? ( dev-libs/libevent )"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/debug-disable-enable-1.0.18.patch"
|
||||
sed -i '6i CFLAGS = @CFLAGS@' Makefile.am
|
||||
sed -e "/_APPEND_COMPILE_FLAGS_ERROR(\[-fmudflapth\?\])/d" -i m4/ax_harden_compiler_flags.m4
|
||||
eautoreconf
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
econf \
|
||||
--disable-dtrace \
|
||||
$(use_enable static-libs static) \
|
||||
$(use_enable sasl sasl) \
|
||||
$(use_enable debug debug) \
|
||||
$(use_enable debug assert) \
|
||||
$(use_enable hsieh hsieh_hash) \
|
||||
--libdir=/usr/$(get_libdir) \
|
||||
${myconf}
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" install
|
||||
|
||||
use static-libs || rm -f "${D}"/usr/$(get_libdir)/lib*.la
|
||||
|
||||
dodoc AUTHORS ChangeLog README THANKS TODO
|
||||
# remove manpage to avoid collision, see bug #299330
|
||||
rm -f "${D}"/usr/share/man/man1/memdump.*
|
||||
newman man/memdump.1 memcached_memdump.1
|
||||
}
|
@ -0,0 +1 @@
|
||||
DIST utf8_v2_3_4.zip 22422 SHA256 3373cebb25d88c662a2b960c4d585daf9ae7b396031ecd786e7bb31b15d010ef SHA512 0e85e443e7bd4ecbe85dedfb7bdf8b1767808108b3a4fc1c0c508bcf74787539ae0af95a31a70e715ca872689ac4d7233afc075ceb375375d26743f92051e222 WHIRLPOOL 023d9f1712d84b1f24ea3acaf17d2d4d17b3528dee819b72ffef907480bde78014e4e2a59344a1de25f26b5ac1fd02cc9bb3a33409ef37438e211a468e293222
|
@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer>
|
||||
<email>yac@gentoo.org</email>
|
||||
<name>Jan Matejka</name>
|
||||
</maintainer>
|
||||
<longdescription lang="en">
|
||||
</longdescription>
|
||||
</pkgmetadata>
|
@ -0,0 +1,25 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-libs/utfcpp/utfcpp-2.3.4.ebuild,v 1.1 2015/01/13 20:28:49 yac Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
DESCRIPTION="A simple, portable and lightweight generic library for handling UTF-8 encoded strings."
|
||||
HOMEPAGE="http://sourceforge.net/projects/utfcpp/"
|
||||
SRC_URI="mirror://sourceforge/utfcpp/utf8_v${PV//./_}.zip"
|
||||
|
||||
LICENSE="Boost-1.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="app-arch/unzip"
|
||||
RDEPEND=""
|
||||
|
||||
S="${WORKDIR}/source"
|
||||
|
||||
src_install() {
|
||||
doheader utf8.h
|
||||
insinto /usr/include/utf8
|
||||
doins utf8/{checked,unchecked,core}.h
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
https://github.com/pyca/cryptography/commit/5bea5ca0233be05e09d8c62fdeae86187e73a48e
|
||||
diff --git a/setup.py b/setup.py
|
||||
index ead5ec4..32a87ba 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -36,12 +36,14 @@
|
||||
|
||||
requirements = [
|
||||
CFFI_DEPENDENCY,
|
||||
- "enum34",
|
||||
"pyasn1",
|
||||
SIX_DEPENDENCY,
|
||||
SETUPTOOLS_DEPENDENCY
|
||||
]
|
||||
|
||||
+if sys.version_info < (3, 4):
|
||||
+ requirements.append("enum34")
|
||||
+
|
||||
# If you add a new dep here you probably need to add it in the tox.ini as well
|
||||
test_requirements = [
|
||||
"pytest",
|
||||
|
@ -1,2 +1 @@
|
||||
DIST graph-tool-2.2.31.tar.bz2 29643473 SHA256 7c1fa8edcef12d14c5e7ed15057778f533f69e38edb1aa70c6e89297ba3b2f1a SHA512 ef7f7d87747b7f85d43405f718433faed447b6c692fad0137b09358aa63ca563f7f591e474b87b395f0f57b7c4814ff70a476ec5e06b438549f20984d0d17e1b WHIRLPOOL b2c38d2308afdafb5f780397374980eef8d35e2558782d47bd9fbd22305d0cd31920cd50b1e13844349d2209c5d2925756e95d2762cb270fca355d781b76bd49
|
||||
DIST graph-tool-2.2.35.tar.bz2 15031958 SHA256 af99b26da18c5175c4f12a0761d9c70164ca083b16df3bf8404f9a2ab3408989 SHA512 e4fd524e5955fb9e926677e7330d476ce903efdd18d17432f29e07ca98a31481d3f2eecb94226684698ee544122f0436e3353cb8c0a746fe40404f190f277a61 WHIRLPOOL b53a14ed0cbd98e1020687c1f9c5d3181f0229699323bd11b686cc81351efd79b5362108f25e8c3f8e7d91fe0089b01d296b414c6aac25404dc56efb5b9ec71f
|
||||
DIST graph-tool-2.2.36.tar.bz2 15050904 SHA256 e1e030306480393464501cbcf3f3c938c2105c95fd0d67a8fe8bb4296e0be872 SHA512 3867fed367b547f28147c3234cf391d5415e5cf4594bc495abab1e1f827ba89af44d9d2bc92ee604ed184ce48f1644076aa852a0035fa2f8cdb449157d6b32bc WHIRLPOOL 741091c5504234767ed2662f69307aeaffb344ec132f708b494288d03485ff1910a967b244c35f5e7b77bad0564b249fd7b80ddb39051928f9806310c4d7843e
|
||||
|
@ -1,84 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/graph-tool/graph-tool-2.2.31.ebuild,v 1.1 2014/04/01 07:41:41 radhermit Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_7,3_2,3_3} )
|
||||
|
||||
inherit check-reqs eutils toolchain-funcs python-r1
|
||||
|
||||
if [[ ${PV} == "9999" ]] ; then
|
||||
EGIT_REPO_URI="git://git.skewed.de/graph-tool"
|
||||
inherit git-2
|
||||
else
|
||||
SRC_URI="http://downloads.skewed.de/${PN}/${P}.tar.bz2"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
fi
|
||||
|
||||
DESCRIPTION="An efficient python module for manipulation and statistical analysis of graphs"
|
||||
HOMEPAGE="http://graph-tool.skewed.de/"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0"
|
||||
IUSE="+cairo openmp"
|
||||
|
||||
CDEPEND="${PYTHON_DEPS}
|
||||
>=dev-libs/boost-1.46.0[python,${PYTHON_USEDEP}]
|
||||
dev-libs/expat
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
sci-libs/scipy[${PYTHON_USEDEP}]
|
||||
>=sci-mathematics/cgal-3.5
|
||||
cairo? (
|
||||
dev-cpp/cairomm
|
||||
dev-python/pycairo[${PYTHON_USEDEP}]
|
||||
)"
|
||||
RDEPEND="${CDEPEND}
|
||||
dev-python/matplotlib[${PYTHON_USEDEP}]"
|
||||
DEPEND="${CDEPEND}
|
||||
dev-cpp/sparsehash
|
||||
virtual/pkgconfig"
|
||||
|
||||
# most machines don't have enough ram for parallel builds
|
||||
MAKEOPTS="${MAKEOPTS} -j1"
|
||||
|
||||
# bug 453544
|
||||
CHECKREQS_DISK_BUILD="6G"
|
||||
|
||||
pkg_pretend() {
|
||||
if use openmp ; then
|
||||
tc-has-openmp || die "Please switch to an openmp compatible compiler"
|
||||
fi
|
||||
check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
>py-compile
|
||||
python_copy_sources
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
python_parallel_foreach_impl run_in_build_dir \
|
||||
econf \
|
||||
--disable-static \
|
||||
--disable-optimization \
|
||||
$(use_enable openmp) \
|
||||
$(use_enable cairo)
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
python_parallel_foreach_impl run_in_build_dir default
|
||||
}
|
||||
|
||||
src_install() {
|
||||
python_parallel_foreach_impl run_in_build_dir default
|
||||
prune_libtool_files --modules
|
||||
|
||||
# remove unwanted extra docs
|
||||
rm -r "${ED}"/usr/share/doc/${PN} || die
|
||||
}
|
||||
|
||||
run_in_build_dir() {
|
||||
pushd "${BUILD_DIR}" > /dev/null
|
||||
"$@"
|
||||
popd > /dev/null
|
||||
}
|
@ -1,6 +1,2 @@
|
||||
DIST msgpack-python-0.2.4.tar.gz 132973 SHA256 e63c7f3dd676e590111e156549a96b0bf4644ee10f3bfa42c561ad58e25566a3 SHA512 5d95e2ebf8ddee6b12c54ccdfa27bc5e0e185e4b131840ce9b414ef9be2fb42b8367939b4a4ca725fdfc2dac4123d0559b2e34e6a8e0656f50df4db5c602a2b2 WHIRLPOOL fd682d1efc55fbdd359970075210512e8e19dc8d2cf4542a0f4bc380c9b6dc47d9b8c4e4511a35df634e13579a0ad67e31abd4df44da6744c08473fa3e5de288
|
||||
DIST msgpack-python-0.3.0.tar.gz 97932 SHA256 fb6ed5144a9fe2b58d46f8f276417d48dd57f9eea2a94e0f51c6b04e7044f9b3 SHA512 4f4812293efbfb3b970b976d2fb37b5e0402f668ce03a2e1533df30070243c9d72d584f67ee15f76b1914b4928936983846e7e663574bd2cb3316dc69041946a WHIRLPOOL a2904c0fb5274953222af508403e4dbcd743e6917646e2a38bb726c92dd80754d73c6f520e7949a5df9608888fab9854819bd1d214edb565e578001b2dcf189b
|
||||
DIST msgpack-python-0.4.0.tar.gz 111411 SHA256 d078094f0b29b2b93cb96a76febc70fbe90ae4eb131ff60a6dc038edda92c278 SHA512 00d5ff5bffb290b01e790c47dec73cefd23020101d16308034ae7ca4e08cb4ed7d2491530cc10069ffb420c3f7e65a130410cd778497c74913711bdd6f7ad15c WHIRLPOOL b6b686a3da80f14b32c0b7087ad2ae14ff1de9c1428948ef7c3d2dd8efcbfd297589e2ffe41080f0ac22a41d2b759494d49f6f81318cf41033388bdb0cb1a02a
|
||||
DIST msgpack-python-0.4.1.tar.gz 111597 SHA256 63b944fe47c31155dc2239c22eb28eb282baef57de921408748eb9171291adf0 SHA512 0024ac3fd90a6c2cadd672c2512bd343a0b149c4efc078326a0a0efeeab04bd15342dc56507bacfd7dbd6e108bef81423accd048c03c47342b676790a72558f5 WHIRLPOOL 89f167a3cdc9c99301c14963227922e56bc4a3357214103fa620823b73d0f9f1bd372cdf0044a1149bfe947f6ca71ebf497a09b402d81de61c55822a85243d1f
|
||||
DIST msgpack-python-0.4.2.tar.gz 114043 SHA256 0476e8fdd79e5b648b349bd0edebf06e41271ee29421ef7adb12cdbe55dac2a9 SHA512 73cae17c08d34bd721828b1759b998372600e26fdfc62c16cb571b5cb41bf1a65ef98af65db0e48da229461f835aa17a547b03b25f407f570e493d8f363ab507 WHIRLPOOL 272ac48cb24f93efcbafaecbe3e947ac379bd01fc4913663a02bfa9bba41b75830b54090394017dabc4d4585bdf426ce69038202298ba9edad38bb3d5acda0be
|
||||
DIST msgpack-python-0.4.4.tar.gz 113908 SHA256 9988ea0cb9dc9d6505e088f1f43d1cf25c9f4d769b4b106ab56e3261438bde36 SHA512 f661ed3830c2e1286de829ed736f07217193377b4065c056b3db28e208d09ee8a875e2356e7e8b97392def581d3a51f176d83899ddb5d56e459cd1095f68ca0d WHIRLPOOL c2784ba4e241a186df497b8ca565fa11a9a7b6629131367a01394543a57079aaaa690b62b13121c8352ce7d926ec78b057d071453558eca2f9efdf75efc30035
|
||||
|
@ -1,29 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/msgpack/msgpack-0.2.4.ebuild,v 1.4 2014/02/19 17:30:27 pinkbyte Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN="${PN}-python"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="MessagePack (de)serializer for Python"
|
||||
HOMEPAGE="http://msgpack.org http://pypi.python.org/pypi/msgpack-python/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? ( dev-python/six[${PYTHON_USEDEP}] )"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
python_test() {
|
||||
nosetests -P -w test || die "Tests fail with ${EPYTHON}"
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/msgpack/msgpack-0.3.0.ebuild,v 1.5 2014/02/19 17:30:27 pinkbyte Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN="${PN}-python"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="MessagePack (de)serializer for Python"
|
||||
HOMEPAGE="http://msgpack.org http://pypi.python.org/pypi/msgpack-python/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? ( dev-python/six[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
dev-python/nose[${PYTHON_USEDEP}] )"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
python_test() {
|
||||
nosetests -P -w test || die "Tests fail with ${EPYTHON}"
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/msgpack/msgpack-0.4.0.ebuild,v 1.2 2014/02/19 17:30:27 pinkbyte Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN="${PN}-python"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="MessagePack (de)serializer for Python"
|
||||
HOMEPAGE="http://msgpack.org http://pypi.python.org/pypi/msgpack-python/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? ( dev-python/six[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
dev-python/nose[${PYTHON_USEDEP}] )"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
python_test() {
|
||||
nosetests -P -w test || die "Tests fail with ${EPYTHON}"
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/msgpack/msgpack-0.4.1.ebuild,v 1.1 2014/02/24 04:29:59 radhermit Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_6,2_7,3_2,3_3} )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN="${PN}-python"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="MessagePack (de)serializer for Python"
|
||||
HOMEPAGE="http://msgpack.org http://pypi.python.org/pypi/msgpack-python/"
|
||||
SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="
|
||||
dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? (
|
||||
dev-python/six[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
dev-python/nose[${PYTHON_USEDEP}]
|
||||
)
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
python_test() {
|
||||
nosetests -P -w test || die "Tests fail with ${EPYTHON}"
|
||||
}
|
@ -1 +1 @@
|
||||
DIST py2neo-2.0.2.tar.gz 251313 SHA256 19021c7aa8b4894f758b771527c7cba953088e21d4291734886e8b4742a858b9 SHA512 95d9f2f9c236e98d39aa6190bc8a3f2047a75da28b3032cfe784dd0e5669e6dce8fd884b8db094501733067ab2a1c025a7d9db66210ab6165c91697c7f914fa6 WHIRLPOOL c35209c9b23182f65c85aedf8e65f0fde7de7a2d1811e47620e6009b04ca4bc53930825b425ff593eb4054169f1e6a7982f1838f0fae31444159f0744233aeef
|
||||
DIST py2neo-2.0.3.tar.gz 251326 SHA256 e245e2c630d345f55571420ec8b748d3962ea299394e9f84cac942adab50016c SHA512 2a9d03bb3d423950a159d6e80ec597f55d88f73b6dbe5f56bc37dbb29c82c2815474b5f74e3ea11b3e8a076a82ef208139222636e32a4827376b7cacce0883d1 WHIRLPOOL 9a357bfd8106f25d134d6f28aa0eb6b37553fd3421dcd9a071e168845dc40a2077cc73ef9f2ac2bb9b0f6c96bd12c6871a0502cc4be101c17f30a39d4e77666d
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/py2neo/py2neo-2.0.2.ebuild,v 1.1 2014/12/25 08:53:48 idella4 Exp $
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/py2neo/py2neo-2.0.3.ebuild,v 1.1 2015/01/14 04:53:52 idella4 Exp $
|
||||
|
||||
EAPI=5
|
||||
|
@ -1,3 +1,2 @@
|
||||
DIST pycxx-6.2.3.tar.gz 140787 SHA256 74b89aec29f3fc40ce08b402f05bb6955f6546a796d2aeb3193737a268f6a4f2 SHA512 e1fdf74fb99df41be38d6b854400bed1c58a62e9fa457e8d2c7014f9f86799f5ad600cdd0af06e92eb4009d8c611135b09f3da282f7a1983e6a02186c47d75ce WHIRLPOOL 265e5115630139b6f3ab035b56aaff8fd466eb734e84265ed292d31f41d960ee0afac4e30a77ca249e29eed8159bc5c37e920fd1b1f178f9017d1c9c1fb4b79e
|
||||
DIST pycxx-6.2.4.tar.gz 140844 SHA256 362d8eec746abca8436299f4926fbafd9ce2faacca39eaa90f53ffc383b41f18 SHA512 d52e953f68b235ac8812fd3d8ce4801a8deb11648e8aaa0aecf42165badc1159c41df2feb330ce681082d2fb3df79ccbeefeb0e12d72e5f82dcc2628c699e049 WHIRLPOOL 100c93db7e52d1e9e4157f2e31f3ba1e29526cd0413990cb96baaf9c7cf6e0edb09786f13041527143ec56236467a40dea0d10225c62f61c2ae8441f308c6903
|
||||
DIST pycxx-6.2.5.tar.gz 141302 SHA256 f125c1b569d32dcfc5bdca565be0311306a2d759196460a5cac665cb515b014c SHA512 c7a5eeacdcb3f68e0a2336a33e6a84d6a7b240e4d232ce0f2676c4a467bf2c8b109eebd63ee42b655efa1f1993fe66a590459a9fbe7315b6c0a57501c73ff3b4 WHIRLPOOL 0792cf9050a21a3774d13124838300663f3b0fe458a243d9aadff2177772e5be0516e0c8a806c572401c28d59c98a252162267c65fc9010a6ea0af0bbdb6c254
|
||||
DIST pycxx-6.2.6.tar.gz 141547 SHA256 3e960db53dea640473410ea20063afe7fcfcb61c107334d7ff6af96d384c11fe SHA512 9a6c30acb99c112497c02fb0826dc0197bbf4b813d25eab3f7d6537dfd83db8150c94f617f79810bbcca64496b8d6e67b1a41446523d66031c54c21e0425ea0c WHIRLPOOL 570cc1ccd12748481c74aefe863a2cef2d2d048ddbeceeeea01477a6d1765f38582f3c9112c8d5fddf6f534b91c74aea11b38aab8da04ced18280047a0821090
|
||||
|
@ -1,27 +0,0 @@
|
||||
https://sourceforge.net/tracker/?func=detail&aid=3464317&group_id=3180&atid=303180
|
||||
--- Src/Python3/cxx_extensions.cxx
|
||||
+++ Src/Python3/cxx_extensions.cxx
|
||||
@@ -225,7 +225,11 @@
|
||||
static PyObject *rich_compare_handler( PyObject *, PyObject *, int );
|
||||
static PyObject *repr_handler( PyObject * );
|
||||
static PyObject *str_handler( PyObject * );
|
||||
+#if PY_VERSION_HEX >= 0x03020000
|
||||
+ static Py_hash_t hash_handler( PyObject * );
|
||||
+#else
|
||||
static long hash_handler( PyObject * );
|
||||
+#endif
|
||||
static PyObject *call_handler( PyObject *, PyObject *, PyObject * );
|
||||
static PyObject *iter_handler( PyObject * );
|
||||
static PyObject *iternext_handler( PyObject * );
|
||||
@@ -714,7 +718,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
+#if PY_VERSION_HEX >= 0x03020000
|
||||
+extern "C" Py_hash_t hash_handler( PyObject *self )
|
||||
+#else
|
||||
extern "C" long hash_handler( PyObject *self )
|
||||
+#endif
|
||||
{
|
||||
try
|
||||
{
|
@ -1,232 +0,0 @@
|
||||
http://cxx.svn.sourceforge.net/viewvc?view=revision&revision=266
|
||||
|
||||
--- CXX/Python3/ExtensionModule.hxx
|
||||
+++ CXX/Python3/ExtensionModule.hxx
|
||||
@@ -82,8 +82,6 @@
|
||||
extern "C" PyObject *method_varargs_call_handler( PyObject *_self_and_name_tuple, PyObject *_args );
|
||||
extern "C" PyObject *method_keyword_call_handler( PyObject *_self_and_name_tuple, PyObject *_args, PyObject *_keywords );
|
||||
|
||||
- extern "C" void do_not_dealloc( void * );
|
||||
-
|
||||
template<TEMPLATE_TYPENAME T>
|
||||
class ExtensionModule : public ExtensionModuleBase
|
||||
{
|
||||
@@ -134,11 +132,11 @@
|
||||
{
|
||||
MethodDefExt<T> *method_def = (*i).second;
|
||||
|
||||
- static PyObject *self = PyCObject_FromVoidPtr( this, do_not_dealloc );
|
||||
+ static PyObject *self = PyCapsule_New( this, NULL, NULL );
|
||||
|
||||
Tuple args( 2 );
|
||||
args[0] = Object( self );
|
||||
- args[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
|
||||
+ args[1] = Object( PyCapsule_New( method_def, NULL, NULL ) );
|
||||
|
||||
PyObject *func = PyCFunction_New
|
||||
(
|
||||
--- CXX/Python3/ExtensionOldType.hxx
|
||||
+++ CXX/Python3/ExtensionOldType.hxx
|
||||
@@ -178,7 +178,7 @@
|
||||
Tuple self( 2 );
|
||||
|
||||
self[0] = Object( this );
|
||||
- self[1] = Object( PyCObject_FromVoidPtr( method_def, do_not_dealloc ) );
|
||||
+ self[1] = Object( PyCapsule_New( method_def, NULL, NULL ) );
|
||||
|
||||
PyObject *func = PyCFunction_New( &method_def->ext_meth_def, self.ptr() );
|
||||
|
||||
@@ -237,7 +237,7 @@
|
||||
T *self = static_cast<T *>( self_in_cobject );
|
||||
|
||||
MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ) );
|
||||
|
||||
Object result;
|
||||
|
||||
@@ -273,7 +273,7 @@
|
||||
PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
|
||||
T *self = static_cast<T *>( self_in_cobject );
|
||||
MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ) );
|
||||
|
||||
Tuple args( _args );
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
|
||||
T *self = static_cast<T *>( self_in_cobject );
|
||||
MethodDefExt<T> *meth_def = reinterpret_cast<MethodDefExt<T> *>(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) );
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ) );
|
||||
|
||||
Tuple args( _args );
|
||||
|
||||
--- CXX/Python3/IndirectPythonInterface.hxx
|
||||
+++ CXX/Python3/IndirectPythonInterface.hxx
|
||||
@@ -109,9 +109,6 @@
|
||||
PyTypeObject * _Method_Type();
|
||||
bool _Method_Check( PyObject *op );
|
||||
|
||||
-PyTypeObject * _CObject_Type();
|
||||
-bool _CObject_Check( PyObject *op );
|
||||
-
|
||||
PyTypeObject * _Complex_Type();
|
||||
bool _Complex_Check( PyObject *op );
|
||||
|
||||
--- Src/IndirectPythonInterface.cxx
|
||||
+++ Src/IndirectPythonInterface.cxx
|
||||
@@ -40,7 +40,6 @@
|
||||
namespace Py
|
||||
{
|
||||
bool _CFunction_Check( PyObject *op ) { return op->ob_type == _CFunction_Type(); }
|
||||
-bool _CObject_Check( PyObject *op ) { return op->ob_type == _CObject_Type(); }
|
||||
bool _Complex_Check( PyObject *op ) { return op->ob_type == _Complex_Type(); }
|
||||
bool _Dict_Check( PyObject *op ) { return op->ob_type == _Dict_Type(); }
|
||||
bool _Float_Check( PyObject *op ) { return op->ob_type == _Float_Type(); }
|
||||
@@ -59,6 +58,7 @@
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
bool _String_Check( PyObject *op ) { return op->ob_type == _String_Type(); }
|
||||
bool _Int_Check( PyObject *op ) { return op->ob_type == _Int_Type(); }
|
||||
+bool _CObject_Check( PyObject *op ) { return op->ob_type == _CObject_Type(); }
|
||||
#endif
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
bool _Bytes_Check( PyObject *op ) { return op->ob_type == _Bytes_Type(); }
|
||||
@@ -111,7 +111,6 @@
|
||||
static PyObject *ptr__PyFalse = NULL;
|
||||
static PyObject *ptr__PyTrue = NULL;
|
||||
static PyTypeObject *ptr__CFunction_Type = NULL;
|
||||
-static PyTypeObject *ptr__CObject_Type = NULL;
|
||||
static PyTypeObject *ptr__Complex_Type = NULL;
|
||||
static PyTypeObject *ptr__Dict_Type = NULL;
|
||||
static PyTypeObject *ptr__Float_Type = NULL;
|
||||
@@ -129,6 +128,7 @@
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
static PyTypeObject *ptr__Int_Type = NULL;
|
||||
static PyTypeObject *ptr__String_Type = NULL;
|
||||
+static PyTypeObject *ptr__CObject_Type = NULL;
|
||||
#endif
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
static PyTypeObject *ptr__Bytes_Type = NULL;
|
||||
@@ -284,7 +284,6 @@
|
||||
ptr__PyTrue = GetPyObject_As_PyObjectPointer( "_Py_TrueStruct" );
|
||||
|
||||
ptr__CFunction_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyCFunction_Type" );
|
||||
- ptr__CObject_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyCObject_Type" );
|
||||
ptr__Complex_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyComplex_Type" );
|
||||
ptr__Dict_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyDict_Type" );
|
||||
ptr__Float_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyFloat_Type" );
|
||||
@@ -303,6 +302,7 @@
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
ptr__String_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyString_Type" );
|
||||
ptr__Int_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyInt_Type" );
|
||||
+ ptr__CObject_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyCObject_Type" );
|
||||
#endif
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
ptr__Bytes_Type = GetPyTypeObject_As_PyTypeObjectPointer( "PyBytes_Type" );
|
||||
@@ -367,7 +367,6 @@
|
||||
PyObject *_True() { return ptr__PyTrue; }
|
||||
|
||||
PyTypeObject *_CFunction_Type() { return ptr__CFunction_Type; }
|
||||
-PyTypeObject *_CObject_Type() { return ptr__CObject_Type; }
|
||||
PyTypeObject *_Complex_Type() { return ptr__Complex_Type; }
|
||||
PyTypeObject *_Dict_Type() { return ptr__Dict_Type; }
|
||||
PyTypeObject *_Float_Type() { return ptr__Float_Type; }
|
||||
@@ -386,6 +385,7 @@
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
PyTypeObject *_String_Type() { return ptr__String_Type; }
|
||||
PyTypeObject *_Int_Type() { return ptr__Int_Type; }
|
||||
+PyTypeObject *_CObject_Type() { return ptr__CObject_Type; }
|
||||
#endif
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
PyTypeObject *_Bytes_Type() { return ptr__Bytes_Type; }
|
||||
@@ -506,7 +506,6 @@
|
||||
PyObject *_True() { return Py_True; }
|
||||
|
||||
PyTypeObject *_CFunction_Type() { return &PyCFunction_Type; }
|
||||
-PyTypeObject *_CObject_Type() { return &PyCObject_Type; }
|
||||
PyTypeObject *_Complex_Type() { return &PyComplex_Type; }
|
||||
PyTypeObject *_Dict_Type() { return &PyDict_Type; }
|
||||
PyTypeObject *_Float_Type() { return &PyFloat_Type; }
|
||||
@@ -525,6 +524,7 @@
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
PyTypeObject *_String_Type() { return &PyString_Type; }
|
||||
PyTypeObject *_Int_Type() { return &PyInt_Type; }
|
||||
+PyTypeObject *_CObject_Type() { return &PyCObject_Type; }
|
||||
#endif
|
||||
#if PY_MAJOR_VERSION >= 3
|
||||
PyTypeObject *_Bytes_Type() { return &PyBytes_Type; }
|
||||
--- Src/Python3/cxx_extensions.cxx
|
||||
+++ Src/Python3/cxx_extensions.cxx
|
||||
@@ -1471,13 +1471,13 @@
|
||||
Tuple self_and_name_tuple( _self_and_name_tuple );
|
||||
|
||||
PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
|
||||
- void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
|
||||
+ void *self_as_void = PyCapsule_GetPointer( self_in_cobject, NULL );
|
||||
if( self_as_void == NULL )
|
||||
return NULL;
|
||||
|
||||
ExtensionModuleBase *self = static_cast<ExtensionModuleBase *>( self_as_void );
|
||||
|
||||
- Object result( self->invoke_method_noargs( PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ) ) );
|
||||
+ Object result( self->invoke_method_noargs( PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ) ) );
|
||||
|
||||
return new_reference_to( result.ptr() );
|
||||
}
|
||||
@@ -1494,7 +1494,7 @@
|
||||
Tuple self_and_name_tuple( _self_and_name_tuple );
|
||||
|
||||
PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
|
||||
- void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
|
||||
+ void *self_as_void = PyCapsule_GetPointer( self_in_cobject, NULL );
|
||||
if( self_as_void == NULL )
|
||||
return NULL;
|
||||
|
||||
@@ -1504,7 +1504,7 @@
|
||||
(
|
||||
self->invoke_method_varargs
|
||||
(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ),
|
||||
args
|
||||
)
|
||||
);
|
||||
@@ -1524,7 +1524,7 @@
|
||||
Tuple self_and_name_tuple( _self_and_name_tuple );
|
||||
|
||||
PyObject *self_in_cobject = self_and_name_tuple[0].ptr();
|
||||
- void *self_as_void = PyCObject_AsVoidPtr( self_in_cobject );
|
||||
+ void *self_as_void = PyCapsule_GetPointer( self_in_cobject, NULL );
|
||||
if( self_as_void == NULL )
|
||||
return NULL;
|
||||
|
||||
@@ -1540,7 +1540,7 @@
|
||||
(
|
||||
self->invoke_method_keyword
|
||||
(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ),
|
||||
args,
|
||||
keywords
|
||||
)
|
||||
@@ -1556,7 +1556,7 @@
|
||||
(
|
||||
self->invoke_method_keyword
|
||||
(
|
||||
- PyCObject_AsVoidPtr( self_and_name_tuple[1].ptr() ),
|
||||
+ PyCapsule_GetPointer( self_and_name_tuple[1].ptr(), NULL ),
|
||||
args,
|
||||
keywords
|
||||
)
|
||||
@@ -1571,9 +1571,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
-extern "C" void do_not_dealloc( void * )
|
||||
-{}
|
||||
-
|
||||
|
||||
//--------------------------------------------------------------------------------
|
||||
//
|
@ -1,33 +0,0 @@
|
||||
--- Lib/__init__.py
|
||||
+++ Lib/__init__.py
|
||||
@@ -34,8 +34,8 @@
|
||||
# DAMAGE.
|
||||
#
|
||||
#-----------------------------------------------------------------------------
|
||||
-print """CXX is installed.
|
||||
+print("""CXX is installed.
|
||||
The support files you need are in the PYTHON/etc/CXX directory.
|
||||
The include files are in the distutils include path already.
|
||||
Just refer to them as "CXX/CXX_Objects.h", etc.
|
||||
-"""
|
||||
+""")
|
||||
--- setup.py
|
||||
+++ setup.py
|
||||
@@ -12,13 +12,13 @@
|
||||
class my_install (install):
|
||||
|
||||
def finalize_options (self):
|
||||
- if not self.install_data or (len(self.install_data) < 8) :
|
||||
- self.install_data = "$base/share/python$py_version_short"
|
||||
+ if not self.install_data or (len(self.install_data) < 8) :
|
||||
+ self.install_data = "$base/share/python$py_version_short"
|
||||
install.finalize_options (self)
|
||||
|
||||
def run (self):
|
||||
- self.distribution.data_files = [("CXX", sources)]
|
||||
- self.distribution.headers = headers
|
||||
+ self.distribution.data_files = [("CXX", sources)]
|
||||
+ self.distribution.headers = headers
|
||||
install.run (self)
|
||||
|
||||
|
@ -1,43 +0,0 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycxx/pycxx-6.2.3-r2.ebuild,v 1.5 2011/11/29 11:04:25 naota Exp $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
RESTRICT_PYTHON_ABIS="*-jython"
|
||||
|
||||
inherit eutils distutils
|
||||
|
||||
DESCRIPTION="Set of facilities to extend Python with C++"
|
||||
HOMEPAGE="http://cxx.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/cxx/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 ~arm ppc ~ppc64 x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
|
||||
IUSE="doc examples"
|
||||
|
||||
PYTHON_MODNAME="CXX"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/${P}-python-3.patch"
|
||||
epatch "${FILESDIR}/${P}-installation.patch"
|
||||
epatch "${FILESDIR}/${P}-python-3.2.patch"
|
||||
|
||||
sed -e "/^#include/s:/Python[23]/:/:" -i CXX/*/*.hxx || die "sed failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r Doc/ || die "dohtml failed"
|
||||
fi
|
||||
|
||||
if use examples; then
|
||||
docinto examples/python-2
|
||||
dodoc Demo/Python2/* || die "dodoc failed"
|
||||
docinto examples/python-3
|
||||
dodoc Demo/Python3/* || die "dodoc failed"
|
||||
fi
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycxx/pycxx-6.2.3-r3.ebuild,v 1.5 2012/04/04 21:14:26 jdhore Exp $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
RESTRICT_PYTHON_ABIS="*-jython"
|
||||
|
||||
inherit eutils distutils
|
||||
|
||||
DESCRIPTION="Set of facilities to extend Python with C++"
|
||||
HOMEPAGE="http://cxx.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/cxx/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 ~arm ppc ~ppc64 x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
|
||||
IUSE="doc examples"
|
||||
|
||||
PYTHON_MODNAME="CXX"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/${P}-python-3.patch"
|
||||
epatch "${FILESDIR}/${P}-installation.patch"
|
||||
epatch "${FILESDIR}/${P}-python-3.2.patch"
|
||||
|
||||
# Bug 369329.
|
||||
# https://sourceforge.net/tracker/?func=detail&aid=3464317&group_id=3180&atid=303180
|
||||
epatch "${FILESDIR}/${P}-python-3.2-Py_hash_t.patch"
|
||||
|
||||
sed -e "/^#include/s:/Python[23]/:/:" -i CXX/*/*.hxx || die "sed failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r Doc/ || die "dohtml failed"
|
||||
fi
|
||||
|
||||
if use examples; then
|
||||
docinto examples/python-2
|
||||
dodoc Demo/Python2/* || die "dodoc failed"
|
||||
docinto examples/python-3
|
||||
dodoc Demo/Python3/* || die "dodoc failed"
|
||||
fi
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycxx/pycxx-6.2.4-r1.ebuild,v 1.4 2012/06/08 11:34:54 phajdan.jr Exp $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
RESTRICT_PYTHON_ABIS="*-jython"
|
||||
|
||||
inherit eutils distutils
|
||||
|
||||
DESCRIPTION="Set of facilities to extend Python with C++"
|
||||
HOMEPAGE="http://cxx.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/cxx/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 ~arm ppc ~ppc64 x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
|
||||
IUSE="doc examples"
|
||||
|
||||
PYTHON_MODNAME="CXX"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/${PN}-6.2.3-python-3.patch"
|
||||
epatch "${FILESDIR}/${PN}-6.2.3-installation.patch"
|
||||
|
||||
# Without this, pysvn fails.
|
||||
# CXX/Python2/Config.hxx: No such file or directory
|
||||
sed -e "/^#include/s:/Python[23]/:/:" -i CXX/*/*.hxx || die "sed failed"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r Doc/ || die "dohtml failed"
|
||||
fi
|
||||
|
||||
if use examples; then
|
||||
docinto examples/python-2
|
||||
dodoc Demo/Python2/* || die "dodoc failed"
|
||||
docinto examples/python-3
|
||||
dodoc Demo/Python3/* || die "dodoc failed"
|
||||
fi
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycxx/pycxx-6.2.4.ebuild,v 1.1 2012/03/29 10:52:46 djc Exp $
|
||||
|
||||
EAPI="3"
|
||||
SUPPORT_PYTHON_ABIS="1"
|
||||
RESTRICT_PYTHON_ABIS="*-jython"
|
||||
|
||||
inherit eutils distutils
|
||||
|
||||
DESCRIPTION="Set of facilities to extend Python with C++"
|
||||
HOMEPAGE="http://cxx.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/cxx/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
|
||||
IUSE="doc examples"
|
||||
|
||||
PYTHON_MODNAME="CXX"
|
||||
|
||||
src_prepare() {
|
||||
epatch "${FILESDIR}/${PN}-6.2.3-python-3.patch"
|
||||
epatch "${FILESDIR}/${PN}-6.2.3-installation.patch"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r Doc/ || die "dohtml failed"
|
||||
fi
|
||||
|
||||
if use examples; then
|
||||
docinto examples/python-2
|
||||
dodoc Demo/Python2/* || die "dodoc failed"
|
||||
docinto examples/python-3
|
||||
dodoc Demo/Python3/* || die "dodoc failed"
|
||||
fi
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pycxx/pycxx-6.2.6.ebuild,v 1.1 2015/01/14 05:30:22 idella4 Exp $
|
||||
|
||||
EAPI="5"
|
||||
PYTHON_COMPAT=( python{2_7,3_3,3_4} pypy )
|
||||
|
||||
inherit eutils distutils-r1
|
||||
|
||||
DESCRIPTION="Set of facilities to extend Python with C++"
|
||||
HOMEPAGE="http://cxx.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/cxx/${P}.tar.gz"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-solaris"
|
||||
IUSE="doc examples"
|
||||
|
||||
python_prepare_all() {
|
||||
# Without this, pysvn fails.
|
||||
# CXX/Python2/Config.hxx: No such file or directory
|
||||
sed -e "/^#include/s:/Python[23]/:/:" -i CXX/*/*.hxx || die "sed failed"
|
||||
|
||||
# Remove python2 print statement
|
||||
echo > Lib/__init__.py || die
|
||||
|
||||
local PATCHES=(
|
||||
"${FILESDIR}/${PN}-6.2.3-installation.patch"
|
||||
)
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
use doc && local HTML_DOCS=( Doc/. )
|
||||
use examples && local EXAMPLES=( Demo/Python{2,3}/. )
|
||||
distutils-r1_python_install_all
|
||||
}
|
@ -1,2 +1 @@
|
||||
DIST rackspace-monitoring-cli-0.5.2.tar.gz 154724 SHA256 b14097789b9008ea1662e713b9b7735d9f189971fc8610866b860ad8ed3f176b SHA512 22442a72c3f4586df12df927c35507f38299fbcb71e675bfe1c7756e0d973aa2a66ffaeb51a8d02466cf0b889ea40e2ef29bde58e468c2a3ed5612e0eac8e3a3 WHIRLPOOL dcb861c888770a12e08b027932bfe0700dcb3f58a028edb74c4e878b40b38e5bfbaeafb186c0cfcc3cb9f2c6a699ba264fafe72e9636044e734bbe09e1ad9a40
|
||||
DIST rackspace-monitoring-cli-0.6.2.tar.gz 155630 SHA256 d2e3f68169339d1d5b957f19c6d909745302d708058ac9e9e015be4a89f2ff01 SHA512 9155d4d63ca832108513fb87a7b3ee290fa3113f281a77c79fb9888907cc438027a8e93cf21c3fe7d1fd7200e4eb4941921d5d08b086cf68e25a1708002a7112 WHIRLPOOL 37be7f255c748ee4c5660d660625a1fdce2b188f6d14d0416ae4c0253d85f6b03ae7f6bd853bc37c31bdb63ac7a5266ec90a245e870043efcccae70950c454cd
|
||||
DIST rackspace-monitoring-cli-0.6.9.tar.gz 156113 SHA256 37a0c4f0efcbd736f4c3b73b6e728fd6a267d52ecbd449b18d3e7d2373b77cc9 SHA512 79fb2f56777fc3b7c3c5263e98adcc6ab5e44e112bcf69d72816d5bbcbeb5f1b63d55da1dce8b501ec0b801afaea70057e9fbb670db731514aca0d071d654ef8 WHIRLPOOL 663baf2a428fcfdeb512172f1767064e643cd0d05018386f5a63b7b97a5f040d0d5563ba028be53ef32e09756f2a557204acf1e64c86f0a5adbdd6b7e0308dbe
|
||||
|
@ -1,30 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/rackspace-monitoring-cli/rackspace-monitoring-cli-0.6.2.ebuild,v 1.3 2014/08/10 21:20:41 slyfox Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
# https://github.com/racker/rackspace-monitoring-cli/issues/49
|
||||
RESTRICT="test"
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="Command Line Utility for Rackspace Cloud Monitoring (MaaS)"
|
||||
HOMEPAGE="https://github.com/racker/rackspace-monitoring-cli"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
TEST_DEPENDS="dev-python/pep8[${PYTHON_USEDEP}]"
|
||||
RDEPEND=">=dev-python/rackspace-monitoring-0.6.0[${PYTHON_USEDEP}]"
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
dev-python/pip[${PYTHON_USEDEP}]
|
||||
test? ( ${TEST_DEPENDS} )"
|
||||
|
||||
python_test() {
|
||||
${EPYTHON} setup.py pep8 || die
|
||||
}
|
@ -1 +1 @@
|
||||
DIST rackspace-monitoring-0.6.2.tar.gz 31488 SHA256 ec89968b52ec851a517858cb7ad9e1449b2f59331ea978290ee7df03e0bdae99 SHA512 b2beca34abf82e4e16717bfbf474538de1139a4d0af058f7a67347e5cf1b6dfdb735025c217fdb466be4cdc7d3c17d5ad1b0606034c9172da148b1e08e1884ca WHIRLPOOL 70682ce2be33716d1e2d0801eb6ac7eb731d7db63e2ec87d5c1f62a6dc5365a1f45c8074b4a23dee120ee69bb5c195aa260fa24a5679c027fa5bf96bab596b80
|
||||
DIST rackspace-monitoring-0.6.5.tar.gz 31397 SHA256 28e91f1054a9fe3b130c9d4fd65cb007e8efdaa89e9d8a8e99479aec73e298c4 SHA512 513e02eb7b823ed4287462ffe6517011c389119dbf37d90df31cc08714f93806188d07e4f8d339453b59f17c067229a3f52f1ae7aaf13a7c6504c0ef63b1f4fe WHIRLPOOL f90a4cfe2d13d4e68c9cfddaf9e6f94e3c721688d82059eeaa722e60278a040cbd87ae92e6d5c492b59fd7dc92e7ed302b690bc7fda4638e0e01ba22610903df
|
||||
|
@ -1,4 +1 @@
|
||||
DIST translationstring-0.3.tar.gz 23179 SHA256 ef5aff7b977b3995abd822e9eb0469b5d26ea3508f64a30b801fccd84fe02a5a SHA512 af7c581ef36298f25a727a89888a1aef38a4126db0b94246ece027df041ed8db67961b53cc94d78ba45eee7e784db48c20bc9e36534d7ac501e81581dd341d2a WHIRLPOOL e389a91dcaa62d385b0e30b763cdaeaa9688ea7fe4e551bed0131cae1a751f252095bccbcb799d1406620281785cf72b66e07ea4b4c04f2668a282de2f6c6aab
|
||||
DIST translationstring-0.4.tar.gz 27533 SHA256 765eba6d152ec8cd1ec11b0b24dca38585b3afb96f0670574fbf16a16b412ee5 SHA512 d45e7b43346323126415447635cac39813dfbc6dcd0cf4d30f32d35054ce8c76ad9c5f6a7d33adc819f7d05793ba0457ee06307b70fffeda6633902d0b364cdc WHIRLPOOL 98141362b0bd09e30dc8a72514694d0d324d8ed3542bb52bed3fbdf7b78f69ec71c1df66cfd4bcbdc1c86a8cd2fe357d557836d54c5bb6a9c2c39022772f8a8d
|
||||
DIST translationstring-1.1.tar.gz 28524 SHA256 8147c47e8091bc7b8168758a01c049581959faba9d56cafde8734de44e98711c SHA512 76c8ef9bd745e6b52b6f383d277d94706dab5d6419543048d2138fb779cdfb19a7ce6452e99bbaad983c961233155690849dfda57db10a87d11240990e9adfd8 WHIRLPOOL 3c1dfcbcf2d6679029543c0326383391961a1dc9422f5b5b8863e8b7a8da71cb416a7204231001b9babf6532cc4da3fec76dab11326f25afb7f234760995fa7c
|
||||
DIST translationstring-1.3.tar.gz 29259 SHA256 4ee44cfa58c52ade8910ea0ebc3d2d84bdcad9fa0422405b1801ec9b9a65b72d SHA512 deba5b460d9ea640087cff8b5d7b9256708abd4340a54556f1f0542e2e4f9f0ae0a3482b66a176712fcd6925c470da621adbc5e4c4173c0ef29b9cca5fba1102 WHIRLPOOL bfc0f2d469718d6b27083feb10189dcab4e310183604c550314f4ecffaf38a8738bf2213e03eece6ce52dbf914c70b0629a44e5d1d7d1dcc4dfd9faa55b75191
|
||||
|
@ -1,42 +0,0 @@
|
||||
# Copyright 1999-2011 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/translationstring/translationstring-0.3.ebuild,v 1.5 2011/07/30 01:27:30 rafaelmartins Exp $
|
||||
|
||||
EAPI=3
|
||||
|
||||
SUPPORT_PYTHON_ABIS=1
|
||||
PYTHON_DEPEND="2"
|
||||
RESTRICT_PYTHON_ABIS="3.*"
|
||||
DISTUTILS_SRC_TEST="setup.py"
|
||||
|
||||
inherit distutils
|
||||
|
||||
DESCRIPTION="Utility library for i18n relied on by various Repoze packages"
|
||||
HOMEPAGE="http://www.repoze.org/ http://pypi.python.org/pypi/translationstring"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="repoze"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="doc test"
|
||||
|
||||
DEPEND="dev-python/setuptools
|
||||
doc? ( dev-python/sphinx )
|
||||
test? ( dev-python/Babel )"
|
||||
RDEPEND=""
|
||||
|
||||
src_compile() {
|
||||
distutils_src_compile
|
||||
|
||||
if use doc; then
|
||||
(cd docs && emake html) || die "make html failed"
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r docs/.build/html/* || die "dohtml failed"
|
||||
fi
|
||||
}
|
@ -1,42 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/translationstring/translationstring-0.4.ebuild,v 1.1 2012/02/08 07:03:58 patrick Exp $
|
||||
|
||||
EAPI=3
|
||||
|
||||
SUPPORT_PYTHON_ABIS=1
|
||||
PYTHON_DEPEND="2"
|
||||
RESTRICT_PYTHON_ABIS="3.*"
|
||||
DISTUTILS_SRC_TEST="setup.py"
|
||||
|
||||
inherit distutils
|
||||
|
||||
DESCRIPTION="Utility library for i18n relied on by various Repoze packages"
|
||||
HOMEPAGE="http://www.repoze.org/ http://pypi.python.org/pypi/translationstring"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="repoze"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="doc test"
|
||||
|
||||
DEPEND="dev-python/setuptools
|
||||
doc? ( dev-python/sphinx )
|
||||
test? ( dev-python/Babel )"
|
||||
RDEPEND=""
|
||||
|
||||
src_compile() {
|
||||
distutils_src_compile
|
||||
|
||||
if use doc; then
|
||||
(cd docs && emake html) || die "make html failed"
|
||||
fi
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
if use doc; then
|
||||
dohtml -r docs/.build/html/* || die "dohtml failed"
|
||||
fi
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/translationstring/translationstring-1.1-r1.ebuild,v 1.6 2014/12/07 08:44:02 idella4 Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
PYTHON_COMPAT=( python{2_7,3_3,3_4} pypy pypy3 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="Utility library for i18n relied on by various Repoze packages"
|
||||
HOMEPAGE="https://github.com/Pylons/translationstring http://pypi.python.org/pypi/translationstring"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="repoze"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
|
||||
RDEPEND=""
|
||||
|
||||
# Include COPYRIGHT.txt because the license seems to require it.
|
||||
DOCS=( CHANGES.txt README.txt COPYRIGHT.txt )
|
||||
|
||||
python_test() {
|
||||
esetup.py test || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
distutils-r1_src_install
|
||||
|
||||
# Install only the .rst source, as sphinx processing requires a
|
||||
# theme only available from git that contains hardcoded references
|
||||
# to files on https://static.pylonsproject.org/ (so the docs would
|
||||
# not actually work offline). Install into a "docs" subdirectory
|
||||
# so the reference in the README remains correct.
|
||||
docinto docs
|
||||
docompress -x usr/share/doc/${PF}/docs
|
||||
dodoc docs/*.rst
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
# Copyright 1999-2012 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/translationstring/translationstring-1.1.ebuild,v 1.2 2012/02/22 23:12:14 marienz Exp $
|
||||
|
||||
EAPI=4
|
||||
|
||||
PYTHON_DEPEND="2:2.5 3:3.2"
|
||||
SUPPORT_PYTHON_ABIS=1
|
||||
RESTRICT_PYTHON_ABIS="3.0 3.1"
|
||||
DISTUTILS_SRC_TEST="setup.py"
|
||||
|
||||
inherit distutils
|
||||
|
||||
DESCRIPTION="Utility library for i18n relied on by various Repoze packages"
|
||||
HOMEPAGE="https://github.com/Pylons/translationstring http://pypi.python.org/pypi/translationstring"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="repoze"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE=""
|
||||
|
||||
DEPEND="dev-python/setuptools"
|
||||
RDEPEND=""
|
||||
|
||||
# Include COPYRIGHT.txt because the license seems to require it.
|
||||
DOCS="CHANGES.txt README.txt COPYRIGHT.txt"
|
||||
|
||||
src_install() {
|
||||
distutils_src_install
|
||||
|
||||
# Install only the .rst source, as sphinx processing requires a
|
||||
# theme only available from git that contains hardcoded references
|
||||
# to files on https://static.pylonsproject.org/ (so the docs would
|
||||
# not actually work offline). Install into a "docs" subdirectory
|
||||
# so the reference in the README remains correct.
|
||||
docinto docs
|
||||
dodoc docs/*.rst
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue