parent
df5acb6b51
commit
cfa8350ad7
@ -0,0 +1,542 @@
|
||||
From 7d5d8657fd70b20518610b3c6f8e41e16c72fa31 Mon Sep 17 00:00:00 2001
|
||||
From: Zhi Yan Liu <zhiyanl@cn.ibm.com>
|
||||
Date: Tue, 30 Dec 2014 22:25:50 +0800
|
||||
Subject: [PATCH] Cleanup chunks for deleted image that was 'saving'
|
||||
|
||||
Currently image data cannot be removed synchronously for an image that
|
||||
is in saving state. And when, the upload operation for such an image is
|
||||
completed the operator configured quota can be exceeded.
|
||||
|
||||
This patch fixes the issue of left over chunks for an image which was
|
||||
deleted from saving status. However, by the limitation of the design we
|
||||
cannot enforce a global quota check for the image in saving status.
|
||||
|
||||
This change introduces a inconsonance between http response codes of
|
||||
v1 and v2 APIs. The status codes which we will now see after the upload
|
||||
process completes on an image which was deleted mid way are:
|
||||
|
||||
v1: 412 Precondition Failed
|
||||
v2: 410 Gone
|
||||
|
||||
SecurityImpact
|
||||
UpgradeImpact
|
||||
APIImpact
|
||||
|
||||
Closes-Bug: 1383973
|
||||
Closes-Bug: 1398830
|
||||
Closes-Bug: 1188532
|
||||
|
||||
Conflicts:
|
||||
glance/api/v1/upload_utils.py
|
||||
glance/api/v2/image_data.py
|
||||
glance/tests/unit/test_domain_proxy.py
|
||||
glance/tests/unit/v1/test_api.py
|
||||
|
||||
Change-Id: I47229b366c25367ec1bd48aec684e0880f3dfe60
|
||||
Signed-off-by: Zhi Yan Liu <zhiyanl@cn.ibm.com>
|
||||
(cherry picked from commit 0dc8fbb3479a53c5bba8475d14f4c7206904c5ea)
|
||||
---
|
||||
glance/api/authorization.py | 4 +-
|
||||
glance/api/policy.py | 8 ++--
|
||||
glance/api/v1/upload_utils.py | 19 +++++---
|
||||
glance/api/v2/image_data.py | 8 +++-
|
||||
glance/db/__init__.py | 7 +--
|
||||
glance/domain/proxy.py | 4 +-
|
||||
glance/location.py | 4 +-
|
||||
glance/notifier.py | 4 +-
|
||||
glance/quota/__init__.py | 4 +-
|
||||
glance/tests/unit/test_domain_proxy.py | 14 +++---
|
||||
glance/tests/unit/test_policy.py | 2 +-
|
||||
glance/tests/unit/test_quota.py | 17 ++++---
|
||||
glance/tests/unit/test_store_image.py | 2 +-
|
||||
glance/tests/unit/v1/test_api.py | 57 +++++++++++-------------
|
||||
glance/tests/unit/v2/test_image_data_resource.py | 24 +++++-----
|
||||
15 files changed, 98 insertions(+), 80 deletions(-)
|
||||
|
||||
diff --git a/glance/api/authorization.py b/glance/api/authorization.py
|
||||
index 149ff55..77f7ed3 100644
|
||||
--- a/glance/api/authorization.py
|
||||
+++ b/glance/api/authorization.py
|
||||
@@ -158,10 +158,10 @@ class ImageMemberRepoProxy(glance.domain.proxy.Repo):
|
||||
raise exception.Forbidden(message
|
||||
% self.image.image_id)
|
||||
|
||||
- def save(self, image_member):
|
||||
+ def save(self, image_member, from_state=None):
|
||||
if (self.context.is_admin or
|
||||
self.context.owner == image_member.member_id):
|
||||
- self.member_repo.save(image_member)
|
||||
+ self.member_repo.save(image_member, from_state=from_state)
|
||||
else:
|
||||
message = _("You cannot update image member %s")
|
||||
raise exception.Forbidden(message % image_member.member_id)
|
||||
diff --git a/glance/api/policy.py b/glance/api/policy.py
|
||||
index 0bc8d56..e395876 100644
|
||||
--- a/glance/api/policy.py
|
||||
+++ b/glance/api/policy.py
|
||||
@@ -182,9 +182,9 @@ class ImageRepoProxy(glance.domain.proxy.Repo):
|
||||
self.policy.enforce(self.context, 'get_images', {})
|
||||
return super(ImageRepoProxy, self).list(*args, **kwargs)
|
||||
|
||||
- def save(self, image):
|
||||
+ def save(self, image, from_state=None):
|
||||
self.policy.enforce(self.context, 'modify_image', {})
|
||||
- return super(ImageRepoProxy, self).save(image)
|
||||
+ return super(ImageRepoProxy, self).save(image, from_state=from_state)
|
||||
|
||||
def add(self, image):
|
||||
self.policy.enforce(self.context, 'add_image', {})
|
||||
@@ -285,9 +285,9 @@ class ImageMemberRepoProxy(glance.domain.proxy.Repo):
|
||||
self.policy.enforce(self.context, 'get_member', {})
|
||||
return self.member_repo.get(member_id)
|
||||
|
||||
- def save(self, member):
|
||||
+ def save(self, member, from_state=None):
|
||||
self.policy.enforce(self.context, 'modify_member', {})
|
||||
- self.member_repo.save(member)
|
||||
+ self.member_repo.save(member, from_state=from_state)
|
||||
|
||||
def list(self, *args, **kwargs):
|
||||
self.policy.enforce(self.context, 'get_members', {})
|
||||
diff --git a/glance/api/v1/upload_utils.py b/glance/api/v1/upload_utils.py
|
||||
index 8a190fc..60c3d3d 100644
|
||||
--- a/glance/api/v1/upload_utils.py
|
||||
+++ b/glance/api/v1/upload_utils.py
|
||||
@@ -153,12 +153,19 @@ def upload_data_to_store(req, image_meta, image_data, store, notifier):
|
||||
update_data = {'checksum': checksum,
|
||||
'size': size}
|
||||
try:
|
||||
- image_meta = registry.update_image_metadata(req.context,
|
||||
- image_id,
|
||||
- update_data,
|
||||
- from_state='saving')
|
||||
-
|
||||
- except exception.NotFound as e:
|
||||
+ try:
|
||||
+ state = 'saving'
|
||||
+ image_meta = registry.update_image_metadata(req.context,
|
||||
+ image_id,
|
||||
+ update_data,
|
||||
+ from_state=state)
|
||||
+ except exception.Duplicate:
|
||||
+ image = registry.get_image_metadata(req.context, image_id)
|
||||
+ if image['status'] == 'deleted':
|
||||
+ raise exception.NotFound()
|
||||
+ else:
|
||||
+ raise
|
||||
+ except exception.NotFound:
|
||||
msg = _LI("Image %s could not be found after upload. The image may"
|
||||
" have been deleted during the upload.") % image_id
|
||||
LOG.info(msg)
|
||||
diff --git a/glance/api/v2/image_data.py b/glance/api/v2/image_data.py
|
||||
index 430ffc5..cdfa34b 100644
|
||||
--- a/glance/api/v2/image_data.py
|
||||
+++ b/glance/api/v2/image_data.py
|
||||
@@ -73,8 +73,8 @@ class ImageDataController(object):
|
||||
try:
|
||||
image_repo.save(image)
|
||||
image.set_data(data, size)
|
||||
- image_repo.save(image)
|
||||
- except exception.NotFound as e:
|
||||
+ image_repo.save(image, from_state='saving')
|
||||
+ except (exception.NotFound, exception.Conflict) as e:
|
||||
msg = (_("Image %(id)s could not be found after upload."
|
||||
"The image may have been deleted during the upload: "
|
||||
"%(error)s Cleaning up the chunks uploaded") %
|
||||
@@ -152,6 +152,10 @@ class ImageDataController(object):
|
||||
raise webob.exc.HTTPServiceUnavailable(explanation=msg,
|
||||
request=req)
|
||||
|
||||
+ except webob.exc.HTTPGone as e:
|
||||
+ with excutils.save_and_reraise_exception():
|
||||
+ LOG.error(_LE("Failed to upload image data due to HTTP error"))
|
||||
+
|
||||
except webob.exc.HTTPError as e:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE("Failed to upload image data due to HTTP error"))
|
||||
diff --git a/glance/db/__init__.py b/glance/db/__init__.py
|
||||
index 05db7f8..483ba21 100644
|
||||
--- a/glance/db/__init__.py
|
||||
+++ b/glance/db/__init__.py
|
||||
@@ -164,7 +164,7 @@ class ImageRepo(object):
|
||||
image.created_at = new_values['created_at']
|
||||
image.updated_at = new_values['updated_at']
|
||||
|
||||
- def save(self, image):
|
||||
+ def save(self, image, from_state=None):
|
||||
image_values = self._format_image_to_db(image)
|
||||
if image_values['size'] > CONF.image_size_cap:
|
||||
raise exception.ImageSizeLimitExceeded
|
||||
@@ -172,7 +172,8 @@ class ImageRepo(object):
|
||||
new_values = self.db_api.image_update(self.context,
|
||||
image.image_id,
|
||||
image_values,
|
||||
- purge_props=True)
|
||||
+ purge_props=True,
|
||||
+ from_state=from_state)
|
||||
except (exception.NotFound, exception.Forbidden):
|
||||
msg = _("No image found with ID %s") % image.image_id
|
||||
raise exception.NotFound(msg)
|
||||
@@ -265,7 +266,7 @@ class ImageMemberRepo(object):
|
||||
msg = _("The specified member %s could not be found")
|
||||
raise exception.NotFound(msg % image_member.id)
|
||||
|
||||
- def save(self, image_member):
|
||||
+ def save(self, image_member, from_state=None):
|
||||
image_member_values = self._format_image_member_to_db(image_member)
|
||||
try:
|
||||
new_values = self.db_api.image_member_update(self.context,
|
||||
diff --git a/glance/domain/proxy.py b/glance/domain/proxy.py
|
||||
index 5a91d34..09c0fb2 100644
|
||||
--- a/glance/domain/proxy.py
|
||||
+++ b/glance/domain/proxy.py
|
||||
@@ -94,9 +94,9 @@ class Repo(object):
|
||||
result = self.base.add(base_item)
|
||||
return self.helper.proxy(result)
|
||||
|
||||
- def save(self, item):
|
||||
+ def save(self, item, from_state=None):
|
||||
base_item = self.helper.unproxy(item)
|
||||
- result = self.base.save(base_item)
|
||||
+ result = self.base.save(base_item, from_state=from_state)
|
||||
return self.helper.proxy(result)
|
||||
|
||||
def remove(self, item):
|
||||
diff --git a/glance/location.py b/glance/location.py
|
||||
index f83fa7a..b49546d 100644
|
||||
--- a/glance/location.py
|
||||
+++ b/glance/location.py
|
||||
@@ -60,8 +60,8 @@ class ImageRepoProxy(glance.domain.proxy.Repo):
|
||||
self._set_acls(image)
|
||||
return result
|
||||
|
||||
- def save(self, image):
|
||||
- result = super(ImageRepoProxy, self).save(image)
|
||||
+ def save(self, image, from_state=None):
|
||||
+ result = super(ImageRepoProxy, self).save(image, from_state=from_state)
|
||||
self._set_acls(image)
|
||||
return result
|
||||
|
||||
diff --git a/glance/notifier.py b/glance/notifier.py
|
||||
index 5ec0854..21223da 100644
|
||||
--- a/glance/notifier.py
|
||||
+++ b/glance/notifier.py
|
||||
@@ -122,8 +122,8 @@ class ImageRepoProxy(glance.domain.proxy.Repo):
|
||||
item_proxy_class=ImageProxy,
|
||||
item_proxy_kwargs=proxy_kwargs)
|
||||
|
||||
- def save(self, image):
|
||||
- super(ImageRepoProxy, self).save(image)
|
||||
+ def save(self, image, from_state=None):
|
||||
+ super(ImageRepoProxy, self).save(image, from_state=from_state)
|
||||
self.notifier.info('image.update',
|
||||
format_image_notification(image))
|
||||
|
||||
diff --git a/glance/quota/__init__.py b/glance/quota/__init__.py
|
||||
index 4051992..d628a8c 100644
|
||||
--- a/glance/quota/__init__.py
|
||||
+++ b/glance/quota/__init__.py
|
||||
@@ -104,10 +104,10 @@ class ImageRepoProxy(glance.domain.proxy.Repo):
|
||||
LOG.debug(six.text_type(exc))
|
||||
raise exc
|
||||
|
||||
- def save(self, image):
|
||||
+ def save(self, image, from_state=None):
|
||||
if image.added_new_properties():
|
||||
self._enforce_image_property_quota(len(image.extra_properties))
|
||||
- return super(ImageRepoProxy, self).save(image)
|
||||
+ return super(ImageRepoProxy, self).save(image, from_state=from_state)
|
||||
|
||||
def add(self, image):
|
||||
self._enforce_image_property_quota(len(image.extra_properties))
|
||||
diff --git a/glance/tests/unit/test_domain_proxy.py b/glance/tests/unit/test_domain_proxy.py
|
||||
index 1bb6863..2b8f792 100644
|
||||
--- a/glance/tests/unit/test_domain_proxy.py
|
||||
+++ b/glance/tests/unit/test_domain_proxy.py
|
||||
@@ -74,7 +74,7 @@ class TestProxyRepoPlain(test_utils.BaseTestCase):
|
||||
self._test_method('add', 'snuff', 'enough')
|
||||
|
||||
def test_save(self):
|
||||
- self._test_method('save', 'snuff', 'enough')
|
||||
+ self._test_method('save', 'snuff', 'enough', from_state=None)
|
||||
|
||||
def test_remove(self):
|
||||
self._test_method('add', None, 'flying')
|
||||
@@ -121,14 +121,14 @@ class TestProxyRepoWrapping(test_utils.BaseTestCase):
|
||||
self.assertEqual(results[i].args, tuple())
|
||||
self.assertEqual(results[i].kwargs, {'a': 1})
|
||||
|
||||
- def _test_method_with_proxied_argument(self, name, result):
|
||||
+ def _test_method_with_proxied_argument(self, name, result, **kwargs):
|
||||
self.fake_repo.result = result
|
||||
item = FakeProxy('snoop')
|
||||
method = getattr(self.proxy_repo, name)
|
||||
proxy_result = method(item)
|
||||
|
||||
- self.assertEqual(self.fake_repo.args, ('snoop',))
|
||||
- self.assertEqual(self.fake_repo.kwargs, {})
|
||||
+ self.assertEqual(('snoop',), self.fake_repo.args)
|
||||
+ self.assertEqual(kwargs, self.fake_repo.kwargs)
|
||||
|
||||
if result is None:
|
||||
self.assertIsNone(proxy_result)
|
||||
@@ -145,10 +145,12 @@ class TestProxyRepoWrapping(test_utils.BaseTestCase):
|
||||
self._test_method_with_proxied_argument('add', None)
|
||||
|
||||
def test_save(self):
|
||||
- self._test_method_with_proxied_argument('save', 'dog')
|
||||
+ self._test_method_with_proxied_argument('save', 'dog',
|
||||
+ from_state=None)
|
||||
|
||||
def test_save_with_no_result(self):
|
||||
- self._test_method_with_proxied_argument('save', None)
|
||||
+ self._test_method_with_proxied_argument('save', None,
|
||||
+ from_state=None)
|
||||
|
||||
def test_remove(self):
|
||||
self._test_method_with_proxied_argument('remove', 'dog')
|
||||
diff --git a/glance/tests/unit/test_policy.py b/glance/tests/unit/test_policy.py
|
||||
index 5b5e870..44546a0 100644
|
||||
--- a/glance/tests/unit/test_policy.py
|
||||
+++ b/glance/tests/unit/test_policy.py
|
||||
@@ -78,7 +78,7 @@ class MemberRepoStub(object):
|
||||
def get(self, *args, **kwargs):
|
||||
return 'member_repo_get'
|
||||
|
||||
- def save(self, image_member):
|
||||
+ def save(self, image_member, from_state=None):
|
||||
image_member.output = 'member_repo_save'
|
||||
|
||||
def list(self, *args, **kwargs):
|
||||
diff --git a/glance/tests/unit/test_quota.py b/glance/tests/unit/test_quota.py
|
||||
index c12eda2..1c40fb4 100644
|
||||
--- a/glance/tests/unit/test_quota.py
|
||||
+++ b/glance/tests/unit/test_quota.py
|
||||
@@ -367,7 +367,8 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
self.image.extra_properties = {'foo': 'bar'}
|
||||
self.image_repo_proxy.save(self.image)
|
||||
|
||||
- self.image_repo_mock.save.assert_called_once_with(self.base_image)
|
||||
+ self.image_repo_mock.save.assert_called_once_with(self.base_image,
|
||||
+ from_state=None)
|
||||
|
||||
def test_save_image_too_many_image_properties(self):
|
||||
self.config(image_property_quota=1)
|
||||
@@ -383,7 +384,8 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
self.image.extra_properties = {'foo': 'bar'}
|
||||
self.image_repo_proxy.save(self.image)
|
||||
|
||||
- self.image_repo_mock.save.assert_called_once_with(self.base_image)
|
||||
+ self.image_repo_mock.save.assert_called_once_with(self.base_image,
|
||||
+ from_state=None)
|
||||
|
||||
def test_add_image_with_image_property(self):
|
||||
self.config(image_property_quota=1)
|
||||
@@ -422,7 +424,8 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
self.config(image_property_quota=1)
|
||||
self.image.extra_properties = {'foo': 'frob', 'spam': 'eggs'}
|
||||
self.image_repo_proxy.save(self.image)
|
||||
- self.image_repo_mock.save.assert_called_once_with(self.base_image)
|
||||
+ self.image_repo_mock.save.assert_called_once_with(self.base_image,
|
||||
+ from_state=None)
|
||||
self.assertEqual('frob', self.base_image.extra_properties['foo'])
|
||||
self.assertEqual('eggs', self.base_image.extra_properties['spam'])
|
||||
|
||||
@@ -431,7 +434,8 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
self.config(image_property_quota=1)
|
||||
del self.image.extra_properties['foo']
|
||||
self.image_repo_proxy.save(self.image)
|
||||
- self.image_repo_mock.save.assert_called_once_with(self.base_image)
|
||||
+ self.image_repo_mock.save.assert_called_once_with(self.base_image,
|
||||
+ from_state=None)
|
||||
self.assertNotIn('foo', self.base_image.extra_properties)
|
||||
self.assertEqual('ham', self.base_image.extra_properties['spam'])
|
||||
|
||||
@@ -447,7 +451,7 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
del self.image.extra_properties['frob']
|
||||
del self.image.extra_properties['lorem']
|
||||
self.image_repo_proxy.save(self.image)
|
||||
- call_args = mock.call(self.base_image)
|
||||
+ call_args = mock.call(self.base_image, from_state=None)
|
||||
self.assertEqual(call_args, self.image_repo_mock.save.call_args)
|
||||
self.assertEqual('bar', self.base_image.extra_properties['foo'])
|
||||
self.assertEqual('ham', self.base_image.extra_properties['spam'])
|
||||
@@ -466,7 +470,8 @@ class TestImagePropertyQuotas(test_utils.BaseTestCase):
|
||||
self.config(image_property_quota=1)
|
||||
del self.image.extra_properties['foo']
|
||||
self.image_repo_proxy.save(self.image)
|
||||
- self.image_repo_mock.save.assert_called_once_with(self.base_image)
|
||||
+ self.image_repo_mock.save.assert_called_once_with(self.base_image,
|
||||
+ from_state=None)
|
||||
self.assertNotIn('foo', self.base_image.extra_properties)
|
||||
self.assertEqual('ham', self.base_image.extra_properties['spam'])
|
||||
self.assertEqual('baz', self.base_image.extra_properties['frob'])
|
||||
diff --git a/glance/tests/unit/test_store_image.py b/glance/tests/unit/test_store_image.py
|
||||
index 8b334ab..b656454 100644
|
||||
--- a/glance/tests/unit/test_store_image.py
|
||||
+++ b/glance/tests/unit/test_store_image.py
|
||||
@@ -36,7 +36,7 @@ class ImageRepoStub(object):
|
||||
def add(self, image):
|
||||
return image
|
||||
|
||||
- def save(self, image):
|
||||
+ def save(self, image, from_state=None):
|
||||
return image
|
||||
|
||||
|
||||
diff --git a/glance/tests/unit/v1/test_api.py b/glance/tests/unit/v1/test_api.py
|
||||
index 39e9a44..7dc0737 100644
|
||||
--- a/glance/tests/unit/v1/test_api.py
|
||||
+++ b/glance/tests/unit/v1/test_api.py
|
||||
@@ -39,7 +39,6 @@ from glance.db.sqlalchemy import api as db_api
|
||||
from glance.db.sqlalchemy import models as db_models
|
||||
from glance.openstack.common import jsonutils
|
||||
from glance.openstack.common import timeutils
|
||||
-
|
||||
import glance.registry.client.v1.api as registry
|
||||
from glance.tests.unit import base
|
||||
import glance.tests.unit.utils as unit_test_utils
|
||||
@@ -1735,8 +1734,7 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
|
||||
self.assertEqual(1, mock_store_add_to_backend.call_count)
|
||||
|
||||
- def test_delete_during_image_upload(self):
|
||||
- req = unit_test_utils.get_fake_request()
|
||||
+ def _check_delete_during_image_upload(self, is_admin=False):
|
||||
|
||||
fixture_headers = {'x-image-meta-store': 'file',
|
||||
'x-image-meta-disk-format': 'vhd',
|
||||
@@ -1744,8 +1742,8 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
'x-image-meta-name': 'fake image #3',
|
||||
'x-image-meta-property-key1': 'value1'}
|
||||
|
||||
- req = webob.Request.blank("/images")
|
||||
- req.method = 'POST'
|
||||
+ req = unit_test_utils.get_fake_request(path="/images",
|
||||
+ is_admin=is_admin)
|
||||
for k, v in six.iteritems(fixture_headers):
|
||||
req.headers[k] = v
|
||||
|
||||
@@ -1770,31 +1768,18 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
mock_initiate_deletion)
|
||||
|
||||
orig_update_image_metadata = registry.update_image_metadata
|
||||
- ctlr = glance.api.v1.controller.BaseController
|
||||
- orig_get_image_meta_or_404 = ctlr.get_image_meta_or_404
|
||||
-
|
||||
- def mock_update_image_metadata(*args, **kwargs):
|
||||
|
||||
- if args[2].get('status', None) == 'deleted':
|
||||
+ data = "somedata"
|
||||
|
||||
- # One shot.
|
||||
- def mock_get_image_meta_or_404(*args, **kwargs):
|
||||
- ret = orig_get_image_meta_or_404(*args, **kwargs)
|
||||
- ret['status'] = 'queued'
|
||||
- self.stubs.Set(ctlr, 'get_image_meta_or_404',
|
||||
- orig_get_image_meta_or_404)
|
||||
- return ret
|
||||
-
|
||||
- self.stubs.Set(ctlr, 'get_image_meta_or_404',
|
||||
- mock_get_image_meta_or_404)
|
||||
+ def mock_update_image_metadata(*args, **kwargs):
|
||||
|
||||
- req = webob.Request.blank("/images/%s" % image_id)
|
||||
- req.method = 'PUT'
|
||||
- req.headers['Content-Type'] = 'application/octet-stream'
|
||||
- req.body = "somedata"
|
||||
+ if args[2].get('size', None) == len(data):
|
||||
+ path = "/images/%s" % image_id
|
||||
+ req = unit_test_utils.get_fake_request(path=path,
|
||||
+ method='DELETE',
|
||||
+ is_admin=is_admin)
|
||||
res = req.get_response(self.api)
|
||||
- self.assertEqual(res.status_int, 200)
|
||||
- self.assertFalse(res.location)
|
||||
+ self.assertEqual(200, res.status_int)
|
||||
|
||||
self.stubs.Set(registry, 'update_image_metadata',
|
||||
orig_update_image_metadata)
|
||||
@@ -1804,20 +1789,30 @@ class TestGlanceAPI(base.IsolatedUnitTest):
|
||||
self.stubs.Set(registry, 'update_image_metadata',
|
||||
mock_update_image_metadata)
|
||||
|
||||
- req = webob.Request.blank("/images/%s" % image_id)
|
||||
- req.method = 'DELETE'
|
||||
+ req = unit_test_utils.get_fake_request(path="/images/%s" % image_id,
|
||||
+ method='PUT')
|
||||
+ req.headers['Content-Type'] = 'application/octet-stream'
|
||||
+ req.body = data
|
||||
res = req.get_response(self.api)
|
||||
- self.assertEqual(res.status_int, 200)
|
||||
+ self.assertEqual(412, res.status_int)
|
||||
+ self.assertFalse(res.location)
|
||||
|
||||
self.assertTrue(called['initiate_deletion'])
|
||||
|
||||
- req = webob.Request.blank("/images/%s" % image_id)
|
||||
- req.method = 'HEAD'
|
||||
+ req = unit_test_utils.get_fake_request(path="/images/%s" % image_id,
|
||||
+ method='HEAD',
|
||||
+ is_admin=True)
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(res.status_int, 200)
|
||||
self.assertEqual(res.headers['x-image-meta-deleted'], 'True')
|
||||
self.assertEqual(res.headers['x-image-meta-status'], 'deleted')
|
||||
|
||||
+ def test_delete_during_image_upload_by_normal_user(self):
|
||||
+ self._check_delete_during_image_upload(is_admin=False)
|
||||
+
|
||||
+ def test_delete_during_image_upload_by_admin(self):
|
||||
+ self._check_delete_during_image_upload(is_admin=True)
|
||||
+
|
||||
def test_disable_purge_props(self):
|
||||
"""
|
||||
Test the special x-glance-registry-purge-props header controls
|
||||
diff --git a/glance/tests/unit/v2/test_image_data_resource.py b/glance/tests/unit/v2/test_image_data_resource.py
|
||||
index cc8148a..a121e82 100644
|
||||
--- a/glance/tests/unit/v2/test_image_data_resource.py
|
||||
+++ b/glance/tests/unit/v2/test_image_data_resource.py
|
||||
@@ -81,7 +81,7 @@ class FakeImageRepo(object):
|
||||
else:
|
||||
return self.result
|
||||
|
||||
- def save(self, image):
|
||||
+ def save(self, image, from_state=None):
|
||||
self.saved_image = image
|
||||
|
||||
|
||||
@@ -184,17 +184,21 @@ class TestImagesController(base.StoreClearingUnitTest):
|
||||
request, unit_test_utils.UUID1, 'YYYY', 4)
|
||||
|
||||
def test_upload_non_existent_image_during_save_initiates_deletion(self):
|
||||
- def fake_save(self):
|
||||
+ def fake_save_not_found(self):
|
||||
raise exception.NotFound()
|
||||
|
||||
- request = unit_test_utils.get_fake_request()
|
||||
- image = FakeImage('abcd', locations=['http://example.com/image'])
|
||||
- self.image_repo.result = image
|
||||
- self.image_repo.save = fake_save
|
||||
- image.delete = mock.Mock()
|
||||
- self.assertRaises(webob.exc.HTTPGone, self.controller.upload,
|
||||
- request, str(uuid.uuid4()), 'ABC', 3)
|
||||
- self.assertTrue(image.delete.called)
|
||||
+ def fake_save_conflict(self):
|
||||
+ raise exception.Conflict()
|
||||
+
|
||||
+ for fun in [fake_save_not_found, fake_save_conflict]:
|
||||
+ request = unit_test_utils.get_fake_request()
|
||||
+ image = FakeImage('abcd', locations=['http://example.com/image'])
|
||||
+ self.image_repo.result = image
|
||||
+ self.image_repo.save = fun
|
||||
+ image.delete = mock.Mock()
|
||||
+ self.assertRaises(webob.exc.HTTPGone, self.controller.upload,
|
||||
+ request, str(uuid.uuid4()), 'ABC', 3)
|
||||
+ self.assertTrue(image.delete.called)
|
||||
|
||||
def test_upload_non_existent_image_raises_not_found_exception(self):
|
||||
def fake_save(self):
|
||||
--
|
||||
2.0.5
|
||||
|
@ -0,0 +1,189 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/app-admin/puppet/puppet-3.7.4.ebuild,v 1.1 2015/01/29 05:23:07 prometheanfire Exp $
|
||||
|
||||
EAPI="5"
|
||||
|
||||
USE_RUBY="ruby19 ruby20"
|
||||
|
||||
RUBY_FAKEGEM_RECIPE_TEST="rspec"
|
||||
|
||||
inherit elisp-common xemacs-elisp-common eutils user ruby-fakegem versionator
|
||||
|
||||
DESCRIPTION="A system automation and configuration management software"
|
||||
HOMEPAGE="http://puppetlabs.com/"
|
||||
SRC_URI="http://www.puppetlabs.com/downloads/puppet/${P}.tar.gz"
|
||||
|
||||
LICENSE="Apache-2.0 GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~hppa ~ppc ~sparc ~x86"
|
||||
IUSE="augeas diff doc emacs ldap minimal rrdtool selinux shadow sqlite3 vim-syntax xemacs"
|
||||
|
||||
ruby_add_rdepend "
|
||||
dev-ruby/hiera
|
||||
>=dev-ruby/rgen-0.6.5 =dev-ruby/rgen-0.6*
|
||||
>=dev-ruby/facter-1.6.2 <dev-ruby/facter-3
|
||||
dev-ruby/json
|
||||
augeas? ( dev-ruby/ruby-augeas )
|
||||
diff? ( dev-ruby/diff-lcs )
|
||||
doc? ( dev-ruby/rdoc )
|
||||
ldap? ( dev-ruby/ruby-ldap )
|
||||
shadow? ( dev-ruby/ruby-shadow )
|
||||
sqlite3? ( dev-ruby/sqlite3 )
|
||||
virtual/ruby-ssl"
|
||||
|
||||
DEPEND="${DEPEND}
|
||||
ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] )
|
||||
emacs? ( virtual/emacs )
|
||||
xemacs? ( app-editors/xemacs )"
|
||||
RDEPEND="${RDEPEND}
|
||||
ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] )
|
||||
rrdtool? ( >=net-analyzer/rrdtool-1.2.23[ruby] )
|
||||
selinux? (
|
||||
sys-libs/libselinux[ruby]
|
||||
sec-policy/selinux-puppet
|
||||
)
|
||||
vim-syntax? ( >=app-vim/puppet-syntax-3.0.1 )
|
||||
>=app-portage/eix-0.18.0"
|
||||
|
||||
SITEFILE="50${PN}-mode-gentoo.el"
|
||||
|
||||
pkg_setup() {
|
||||
enewgroup puppet
|
||||
enewuser puppet -1 -1 /var/lib/puppet puppet
|
||||
}
|
||||
|
||||
all_ruby_prepare() {
|
||||
# Avoid spec that require unpackaged json-schema.
|
||||
rm spec/lib/matchers/json.rb $( grep -Rl matchers/json spec) || die
|
||||
|
||||
# Avoid Rails specs to avoid this dependency and because they
|
||||
# currently fail against Rails 4.1.
|
||||
find spec -type f -name '*rails*' -o -name '*active_record*' | xargs rm || die
|
||||
rm -r spec/unit/rails || die
|
||||
rm spec/unit/parser/collector_spec.rb || die
|
||||
|
||||
# Avoid specs that can only run in the puppet.git repository. This
|
||||
# should be narrowed down to the specific specs.
|
||||
rm spec/integration/parser/compiler_spec.rb spec/integration/parser/future_compiler_spec.rb || die
|
||||
|
||||
# Avoid failing spec that need further investigation.
|
||||
rm spec/unit/module_tool/metadata_spec.rb || die
|
||||
}
|
||||
|
||||
all_ruby_compile() {
|
||||
if use emacs ; then
|
||||
elisp-compile ext/emacs/puppet-mode.el
|
||||
fi
|
||||
|
||||
if use xemacs ; then
|
||||
# Create a separate version for xemacs to be able to install
|
||||
# emacs and xemacs in parallel.
|
||||
mkdir ext/xemacs
|
||||
cp ext/emacs/* ext/xemacs/
|
||||
xemacs-elisp-compile ext/xemacs/puppet-mode.el
|
||||
fi
|
||||
}
|
||||
|
||||
each_ruby_install() {
|
||||
each_fakegem_install
|
||||
#${RUBY} install.rb --destdir="${D}" install || die
|
||||
}
|
||||
|
||||
all_ruby_install() {
|
||||
all_fakegem_install
|
||||
|
||||
#systemd stuffs
|
||||
insinto /usr/lib/systemd/system
|
||||
doins "${WORKDIR}/all/${P}/ext/systemd/puppet.service"
|
||||
insinto /usr/lib/tmpfiles.d
|
||||
newins "${FILESDIR}/tmpfiles.d" "puppet.conf"
|
||||
|
||||
newinitd "${FILESDIR}"/puppet.init-r1 puppet
|
||||
|
||||
# Initial configuration files
|
||||
insinto /etc/puppet
|
||||
|
||||
# Location of log and data files
|
||||
keepdir /var/log/puppet
|
||||
fowners -R puppet:puppet /var/log/puppet
|
||||
|
||||
if use minimal ; then
|
||||
rm "${ED}/etc/puppet/auth.conf"
|
||||
else
|
||||
insinto /usr/lib/systemd/system
|
||||
doins "${WORKDIR}/all/${P}/ext/systemd/puppetmaster.service"
|
||||
newinitd "${FILESDIR}"/puppetmaster.init-r1 puppetmaster
|
||||
newconfd "${FILESDIR}"/puppetmaster.confd puppetmaster
|
||||
|
||||
insinto /etc/puppet
|
||||
|
||||
keepdir /etc/puppet/manifests
|
||||
keepdir /etc/puppet/modules
|
||||
|
||||
keepdir /var/lib/puppet/ssl
|
||||
keepdir /var/lib/puppet/facts
|
||||
keepdir /var/lib/puppet/files
|
||||
fowners -R puppet:puppet /var/lib/puppet
|
||||
fperms 0750 /var/lib/puppet
|
||||
fi
|
||||
fperms 0750 /etc/puppet
|
||||
fowners :puppet /etc/puppet
|
||||
|
||||
if use emacs ; then
|
||||
elisp-install ${PN} ext/emacs/puppet-mode.el*
|
||||
elisp-site-file-install "${FILESDIR}/${SITEFILE}"
|
||||
fi
|
||||
|
||||
if use xemacs ; then
|
||||
xemacs-elisp-install ${PN} ext/xemacs/puppet-mode.el*
|
||||
xemacs-elisp-site-file-install "${FILESDIR}/${SITEFILE}"
|
||||
fi
|
||||
|
||||
if use ldap ; then
|
||||
insinto /etc/openldap/schema; doins ext/ldap/puppet.schema
|
||||
fi
|
||||
|
||||
# ext and examples files
|
||||
for f in $(find ext examples -type f) ; do
|
||||
docinto "$(dirname ${f})"; dodoc "${f}"
|
||||
done
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
elog
|
||||
elog "Please, *don't* include the --ask option in EMERGE_EXTRA_OPTS as this could"
|
||||
elog "cause puppet to hang while installing packages."
|
||||
elog
|
||||
elog "Portage Puppet module with Gentoo-specific resources:"
|
||||
elog "http://forge.puppetlabs.com/gentoo/portage"
|
||||
elog
|
||||
|
||||
if [ \
|
||||
-f "${EPREFIX}/etc/puppet/puppetd.conf" -o \
|
||||
-f "${EPREFIX}/etc/puppet/puppetmaster.conf" -o \
|
||||
-f "${EPREFIX}/etc/puppet/puppetca.conf" \
|
||||
] ; then
|
||||
elog
|
||||
elog "Please remove deprecated config files."
|
||||
elog " /etc/puppet/puppetca.conf"
|
||||
elog " /etc/puppet/puppetd.conf"
|
||||
elog " /etc/puppet/puppetmasterd.conf"
|
||||
elog
|
||||
fi
|
||||
|
||||
if [ "$(get_major_version $REPLACING_VERSIONS)" = "2" ]; then
|
||||
elog
|
||||
elog "If you're upgrading from 2.x then we strongly suggest you to read:"
|
||||
elog "http://docs.puppetlabs.com/guides/upgrading.html"
|
||||
elog
|
||||
fi
|
||||
|
||||
use emacs && elisp-site-regen
|
||||
use xemacs && xemacs-elisp-site-regen
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
use emacs && elisp-site-regen
|
||||
use xemacs && xemacs-elisp-site-regen
|
||||
}
|
@ -0,0 +1,60 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-libs/libcdio-paranoia/libcdio-paranoia-0.93_p1.ebuild,v 1.1 2015/01/29 06:59:42 polynomial-c Exp $
|
||||
|
||||
EAPI=5
|
||||
MY_P=${PN}-10.2+${PV/_p/+}
|
||||
|
||||
AUTOTOOLS_AUTORECONF=yes
|
||||
|
||||
inherit eutils autotools-multilib
|
||||
|
||||
DESCRIPTION="an advanced CDDA reader with error correction"
|
||||
HOMEPAGE="http://www.gnu.org/software/libcdio/"
|
||||
SRC_URI="mirror://gnu/${PN%-*}/${MY_P}.tar.gz"
|
||||
|
||||
# COPYING-GPL from cdparanoia says "2 or later"
|
||||
# COPYING-LGPL from cdparanoia says "2.1 or later" but 2 files are without the
|
||||
# clause "or later" so we use LGPL-2.1 without +
|
||||
LICENSE="GPL-3+ GPL-2+ LGPL-2.1"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
|
||||
IUSE="+cxx static-libs test"
|
||||
|
||||
RDEPEND="app-admin/eselect-cdparanoia
|
||||
>=dev-libs/libcdio-0.93[${MULTILIB_USEDEP}]
|
||||
>=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
DEPEND="${RDEPEND}
|
||||
sys-devel/gettext
|
||||
virtual/pkgconfig
|
||||
test? ( dev-lang/perl )"
|
||||
|
||||
S=${WORKDIR}/${MY_P}
|
||||
|
||||
DOCS=( AUTHORS ChangeLog NEWS README THANKS )
|
||||
|
||||
src_prepare() {
|
||||
sed -i -e 's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:' configure.ac || die #466410
|
||||
autotools-multilib_src_prepare
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local myeconfargs=(
|
||||
--disable-maintainer-mode
|
||||
--disable-example-progs
|
||||
$(use_enable cxx)
|
||||
--disable-cpp-progs
|
||||
--with-cd-paranoia-name=libcdio-paranoia
|
||||
)
|
||||
autotools-multilib_src_configure
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
eselect cdparanoia update ifunset
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
eselect cdparanoia update ifunset
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-libs/libcdio/libcdio-0.93.ebuild,v 1.1 2015/01/29 06:58:16 polynomial-c Exp $
|
||||
|
||||
EAPI=5
|
||||
inherit eutils libtool multilib-minimal
|
||||
|
||||
DESCRIPTION="A library to encapsulate CD-ROM reading and control"
|
||||
HOMEPAGE="http://www.gnu.org/software/libcdio/"
|
||||
SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="GPL-3"
|
||||
SLOT="0/15" # subslot is based on SONAME
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris"
|
||||
IUSE="cddb +cxx minimal static-libs test"
|
||||
|
||||
RDEPEND="
|
||||
!minimal? (
|
||||
>=sys-libs/ncurses-5.7-r7
|
||||
cddb? ( >=media-libs/libcddb-1.3.2 )
|
||||
)
|
||||
>=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
DEPEND="${RDEPEND}
|
||||
sys-apps/sed
|
||||
sys-devel/gettext
|
||||
virtual/pkgconfig
|
||||
test? ( dev-lang/perl )"
|
||||
DOCS="AUTHORS ChangeLog NEWS README* THANKS TODO"
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/cdio/cdio_config.h
|
||||
/usr/include/cdio/version.h
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
sed \
|
||||
-e "s:-lncurses:$($(tc-getPKG_CONFIG) --libs ncurses):g" \
|
||||
-i configure || die
|
||||
|
||||
elibtoolize # to prevent -L/usr/lib ending up in the linker line wrt 499510
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local util_switch
|
||||
if ! multilib_is_native_abi || use minimal ; then
|
||||
util_switch="--without"
|
||||
else
|
||||
util_switch="--with"
|
||||
fi
|
||||
|
||||
# Tests fail if ECONF_SOURCE is not relative
|
||||
ECONF_SOURCE="../${P}" econf \
|
||||
--disable-maintainer-mode \
|
||||
$(use_enable cxx) \
|
||||
--disable-cpp-progs \
|
||||
--disable-example-progs \
|
||||
$(use_enable static-libs static) \
|
||||
$(use_enable cddb) \
|
||||
--disable-vcd-info \
|
||||
${util_switch}-{cd-drive,cd-info,cdda-player,cd-read,iso-info,iso-read}
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
einstalldocs
|
||||
prune_libtool_files
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/msgpack/msgpack-0.4.5.ebuild,v 1.1 2015/01/29 06:46:23 radhermit Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python{2_7,3_3,3_4} pypy )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
MY_PN="${PN}-python"
|
||||
MY_P="${MY_PN}-${PV}"
|
||||
|
||||
DESCRIPTION="MessagePack (de)serializer for Python"
|
||||
HOMEPAGE="http://msgpack.org https://github.com/msgpack/msgpack-python/ https://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 ~arm ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
test? (
|
||||
dev-python/six[${PYTHON_USEDEP}]
|
||||
dev-python/pytest[${PYTHON_USEDEP}]
|
||||
)"
|
||||
|
||||
S=${WORKDIR}/${MY_P}
|
||||
|
||||
python_test() {
|
||||
py.test test || die "Tests fail with ${EPYTHON}"
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-python/pychef/pychef-0.2.3.ebuild,v 1.1 2015/01/29 05:56:35 prometheanfire Exp $
|
||||
|
||||
EAPI=5
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
inherit distutils-r1
|
||||
|
||||
DESCRIPTION="A Python API for interacting with a Chef server"
|
||||
HOMEPAGE="https://github.com/coderanger/pychef"
|
||||
SRC_URI="mirror://pypi/P/PyChef/PyChef-${PV}.tar.gz"
|
||||
S="${WORKDIR}/PyChef-${PV}"
|
||||
|
||||
LICENSE="BSD"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
IUSE="test"
|
||||
|
||||
DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
|
||||
dev-python/versiontools[${PYTHON_USEDEP}]
|
||||
test? ( dev-python/mock[${PYTHON_USEDEP}] )"
|
||||
RDEPEND=""
|
||||
|
||||
python_test() {
|
||||
nosetests || die
|
||||
}
|
@ -1,4 +1,14 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
DIST amq-client-1.0.4.gem 75776 SHA256 45a1161b8501f3955d9e45547666a5c1f534517255b2dc5d3d8f4c478ee6bfdf SHA512 d0c2acb3c223496f56e75070b6ac5d68317e3cffbe554b0f80c64250de7afe6e62f59b23a2dd634af4c5e17a1927cf09fe8d586541fef9d3dbc66da7779f3467 WHIRLPOOL 329df238946e3580623bfaf510698bf2cf4576ade848d4e3697a7931ad5e798de424dd3f8fb61f3997e35aa627188715520c6eaf3831f8b4ef7a364628982749
|
||||
EBUILD amq-client-1.0.4.ebuild 1084 SHA256 0d8b52d4dd32d22aacc10578a26f43b1f92e386353c37cf3856b19ad1b1710ae SHA512 baaf34becde5433791ff5736478ed5bd20eb9ff12ce029e65954b0db763eb395e0784889f0c353979a8378947f379fed438c42565700fddb0dac5883fa7b107c WHIRLPOOL d18e15c3ebe92230ad68142692f1c2d67d68fe9b44aeba7d30d24065584ab05ac9a853709225affefecc026f667b6e07163842b125b109588feb0be7c5b82b22
|
||||
MISC ChangeLog 1864 SHA256 6e9fc4d6c99a97d5fce7965f18e453f51c4f6f77914cfc59c8d5feaac6b6d752 SHA512 b5da9ffa7b239a22b7f5259fcfe73e57a9d327d076485a7b7154b8e83762244e652bea426d318510321c35bdafbf07464c073e8d6fc1b87b9c28a620204b37ca WHIRLPOOL 09b0407622e5b01849ecaf76433b8553b508be8d60c841ad2ab8f65ea1d2f359ec82be2f2aec0bef4df2813c05b9e4b693a3cf86755139f81b94638f2eb078cf
|
||||
EBUILD amq-client-1.0.4.ebuild 1092 SHA256 73592a813e55995edf4e7280f6f52e064838ca24025fc7628384eddcdf37f75c SHA512 131eda74d29b1c4ccb988f0504e59c89d148423f62234a2c802cb8fa78300e887f2c210c43097979292a432655dcc1fec212cdc99ecee1cf9d844b022e5a3145 WHIRLPOOL d00b79424a41988fba59b4bda5b064531acc6762114e6c4c965082243fb2f550ab03bf51b9e1969bd35c003e35fba210c0b2d9556a1e26a3bec7e081e5ec9475
|
||||
MISC ChangeLog 1955 SHA256 7c1e8674579c60265716963745fb7fe798ae8226c0cf66ad14a82d049cf478e6 SHA512 116663c65038da6a825076556a8e3fad1a185e3ff9a96054430e3e989520c1fce78dc591a3863e1c62696abbe5eca1d7827cc64edd16ca5a0e03a0317738784e WHIRLPOOL 82c2499c2f991a81a0be7d25d655c8a395499b8c013657f6fbff96a5923cfd55c971a176c3faf91f22a0c65606cd823ea6c5f4d0777605bf65e5ba8e1694ec42
|
||||
MISC metadata.xml 157 SHA256 11fba03a217e2d996f5cd8895493a5692ece8ddac2c1a2dfc71d0e830555121c SHA512 0cec73b966de88015ea4c7212723d848d367608aa93658bb945f298a8000c4ba8aba73c9eb8481859fb5bbed45e80dae32c628caf81e027a4ad8eafa7e632851 WHIRLPOOL 4da25c81e21173ad8b7b5f35b056264869d9a16741062aa4422c5ea1aa9e73da8eb700b0d54de84c169d702fbb3f41ed157c9dc7c9daac110849ae84715c051b
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
iF4EAREIAAYFAlTJ15AACgkQiIP6VqMIqNfWmgD/SpGlJcCEHG47AHYB0H7J0u1/
|
||||
OhOOQyyXUp/AqkQnlK8A/0NQTUpk6EQCNBHgT6XVIewIX4Im51fmUCj2Uuer5twg
|
||||
=cGtu
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -1,4 +1,14 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
DIST annoy-0.5.6.gem 9728 SHA256 f45924069fbc6996693fc06618f4bc28b7e80e68d4625ab198efea89eb8d34b7 SHA512 6cade9d766fa315042ba04922bba315157872a25bc2c7e5ea428c1f2343045d0a5d400dc8eade20f650f2cc6a64492020ef608d355963c09c5e6e8d454d3cc8f WHIRLPOOL 007f39780a900648f992455873da150387b0821ecac60634431bed71bcd550a3645e9b6313161f087a3909bee351bf0374c43ec423a81b75c200c654a9162a96
|
||||
EBUILD annoy-0.5.6-r1.ebuild 650 SHA256 b709484d054e7ac19d17ee61cbbd902963de5c1c4de419562c89bcf19abfbb58 SHA512 38ade530841fc2a6ced7e50fbb4ade7f44a95b138decd9859b189f3f45bf662125303b7dba0ffd3b63ded67b7e5b2841a8f665487747bea8e9cfce2a89bb7ce8 WHIRLPOOL 4c9270b29596ba45252f4d3d7bc2c4ccc552cba5cc907eb9de1db02d72aa981c8aace83c4c1d8ccc5ad91b1432689591570dc5c8333234a339ffae26607e94e0
|
||||
MISC ChangeLog 1039 SHA256 13c0ee81255f559b7f58207388988261fbc22b59871eb0789690164d00098d14 SHA512 e6f9c1eaf8e845e04de23cc82fa2f5b082a5d16c02d3569195e65354c8208cb4eb39fbfe85b2640a8e1436e034184f2ac3e1c988090396ebd652904d7319b2cb WHIRLPOOL 911e0203d63b8c211c23e546f7a7733c1fbf65bff387c77ccf77c5de9fc1beaac0a3141e4d8b5dfaee9ecef2051d66684c5be3746fc7614d76076fdcfd92d22b
|
||||
EBUILD annoy-0.5.6-r1.ebuild 658 SHA256 b9f6790416082500d9da197f6ab3645e7d803937088cb962f9f7225619781e85 SHA512 54b92fd03c63afe4bd8487b1594f8e9f7544df28c8f85fdbf5dd40e83f1440e9634467186cea532f189c948b6ad60f4abcd865a616a05803cbc7a595c7087946 WHIRLPOOL 5db319ac8ed4e362cc772f3c67702e7c326a27bfa0f45c6abaa9b331f100081f3abc0e2b42bb3a30151afa88db9d2b4b2954480a337798109df1da11d16cda59
|
||||
MISC ChangeLog 1128 SHA256 87759864b97e9409eccd621f0ffc0c95c4b07529db5f186a12e59ac22ff84afd SHA512 a02d76e7533e6053d9080cc84f3c44fe58a746d2e83c5c38b7a8489b163ee45a45bd07b8a4526bba570ab8681922fb6eb95326dfcd190f6ff07bf9926b232557 WHIRLPOOL 8fff336f5ffbb090c773cb6a4a88d7eeb7ba2b212d8b20af52aaaef0ca1d81cf7ff42af06a11a36d5a96d2e65fe04e08c043768bb656bfbcb8b64c366d934015
|
||||
MISC metadata.xml 157 SHA256 11fba03a217e2d996f5cd8895493a5692ece8ddac2c1a2dfc71d0e830555121c SHA512 0cec73b966de88015ea4c7212723d848d367608aa93658bb945f298a8000c4ba8aba73c9eb8481859fb5bbed45e80dae32c628caf81e027a4ad8eafa7e632851 WHIRLPOOL 4da25c81e21173ad8b7b5f35b056264869d9a16741062aa4422c5ea1aa9e73da8eb700b0d54de84c169d702fbb3f41ed157c9dc7c9daac110849ae84715c051b
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
iF4EAREIAAYFAlTJ19MACgkQiIP6VqMIqNfYzQD/a2mHCMN5bATUCDy5z2aYX0fL
|
||||
CY+Pu2JaEJZqzkG7xU8A/i7SRusIDogGbpz4LKI1wliRLHi4ZBWHxPZG5vSMJdyj
|
||||
=Fj94
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -1,6 +1,18 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
DIST bcrypt-3.1.10.gem 44032 SHA256 86d25b7eaec3db734bf681aa0e3d58e121766d75c849113aeb602549ff3f8e95 SHA512 11e7a1ea28c53d22354abd3891b88c5f58bd8c18611a2964db69e56e5f9b819e5af184423fbd7fb2ebd1fb84b1618fbd043f0bfd62902515a07427846bef607a WHIRLPOOL e27e2dc2b2796aca39359617adb1261064a58d72b7fe30477f1a7b76678794483b8edebff558f18e68807a38634bf3ae65483c68c967c1ad2bb71589bb6df358
|
||||
DIST bcrypt-3.1.7.gem 43520 SHA256 1c30953152c7151eac21aa59eed7ea933a7bc5d5838edea1d30d79b005955702 SHA512 27cd7fe8850cfcd0ff740a8afec936890b6adebfed0e86552785813739e2c9c50827ba822c88816c50cfa5e2ef90968aeb927577a0bd36d81cec3702f9fdec41 WHIRLPOOL 3b02c723eec2154b9ef5930f8bca53db712e8162f9f48dc81fb4b1d6688cab56bc8de395256fc92e2b2219068b93f5c8f8f9badf527b931803f707cfb59388b0
|
||||
DIST bcrypt-3.1.9.gem 44032 SHA256 10bda421e4423be8c3d719010b56be99a593de4c584737963c98fc939fadef3f SHA512 5fa1bcdff413abc6a36071f670c79b6d76404b3dc9aeb9a032b22e959674763f4d08afcff93211ad5fe56f20f63d8507688135a1878ca8fcf9bb9b33dc17882b WHIRLPOOL d3d477b412193073cff65ebad757c3c83c58939047481e8dd6e8056471daf4467214cde835d1e8430594f21da821921657b3a0b6fe03b40b29cc96c89dee71ed
|
||||
EBUILD bcrypt-ruby-3.1.10.ebuild 1741 SHA256 4815afc0bed67569bef9b2a04fea634f3913942c505a3d1e35ff8abea20a87e2 SHA512 64c79f40885d424e2e6db124930b42356431e7bda85a92ce072fd2da304a8164cd331bfb8bf22fd524d15f4b61976fb63fdf1f0a883df5c28f5267139a6507a5 WHIRLPOOL 64af8cc4cd5301a54eff0679737874812a93b7d16f578a348f64348f93e71d7d7222bcd8d0119504703f00863244b56166df112be0ca2cc83d4a01be8692bcd9
|
||||
EBUILD bcrypt-ruby-3.1.7.ebuild 1738 SHA256 c690de1dee11f149f4d0e7dfe045a58a9e091dda7f694b40e869f1f75dac7d47 SHA512 5d63fa4530db1d229b2c40964ac3c7d6449b1365f251fefcdc4f6b21bab896fca9f619f65f722aa308d3ff3ccf649525e48e09b656c1d32fe8cca1964c6612c9 WHIRLPOOL 51cdf275fb148bcf188133161cb2987d29e5bff9060e03228bac19b409d963595518aef65c555a33f4abf687cbf6def6f906099d07825c55861380784f1393d1
|
||||
EBUILD bcrypt-ruby-3.1.9.ebuild 1862 SHA256 d0f00d99f4d175425bc31712e19f74d68aebbdc27c409f856fdd3f97fe852034 SHA512 49b35d0d95703686e2a3705d0364cec95b9106c74993ba91f849e8f0e0cbb01c0e8e9b95ca38afb22f31013cead8d79f8a1765d79892a0d248b2801972a6232e WHIRLPOOL 1303aa6c2b6f8cffb388aefc6a9d3a62a3e4ab8171451dc7434d932075219a8ac168c0f193f1967da6e3687862a2f1127db69d2b751ad0e7e6f11a6476460b56
|
||||
MISC ChangeLog 3420 SHA256 e2a12e465834cc07ffcce13f62d0055ef84c84b506087d422ab057856e916983 SHA512 065b795f752ab1c2be0d041a339c2c82f30fe05f2b2f36014548ac2426277b4ba760a47d645f416eb7105f633124848558cb2932e667ccba15f3583b06b93f04 WHIRLPOOL 0f2bb741f55d2deebc89883750e490388c225b06df65abe4f4a2c2e94f48c6cff288087fa1ce2c27377a8313b955dd8dc0d1f4d631a6db859d56f8c9d44dfa5b
|
||||
MISC ChangeLog 3551 SHA256 2d4fa54b4d8dc614e6ea842755c63d5105cf5b4082d3fcab4d48c1731c9a7c7e SHA512 ac05d351eb36ff96ab9761246a43e3f0ddb98ae3be14fafa943523465dd097a32173f182dc49e8acc2ce9080ab267720dc5cc65ba555c0b19ead26df287780e5 WHIRLPOOL 781d9dbe8e1baddc0b31b970b1c7c4afdffa6d80fab9cb781df183f5398090f5b6840b757e179e2cffc67864b35bbe930cf034c24847aa0c5e8323b74bffe639
|
||||
MISC metadata.xml 157 SHA256 11fba03a217e2d996f5cd8895493a5692ece8ddac2c1a2dfc71d0e830555121c SHA512 0cec73b966de88015ea4c7212723d848d367608aa93658bb945f298a8000c4ba8aba73c9eb8481859fb5bbed45e80dae32c628caf81e027a4ad8eafa7e632851 WHIRLPOOL 4da25c81e21173ad8b7b5f35b056264869d9a16741062aa4422c5ea1aa9e73da8eb700b0d54de84c169d702fbb3f41ed157c9dc7c9daac110849ae84715c051b
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
iF4EAREIAAYFAlTJ0owACgkQiIP6VqMIqNfcywEAkDIOmrUF4xDK7IAh71kwdS3c
|
||||
qq/PDR0RcGxkqoQ2SaAA/jw6trEVdUIWoSgAuAv3w3EpfRLB9QtonizjZj327J8t
|
||||
=evoA
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -0,0 +1,60 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/dev-ruby/bcrypt-ruby/bcrypt-ruby-3.1.10.ebuild,v 1.1 2015/01/29 06:26:13 graaff Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
USE_RUBY="ruby19 ruby20 ruby21"
|
||||
|
||||
RUBY_FAKEGEM_RECIPE_TEST="rspec3"
|
||||
|
||||
RUBY_FAKEGEM_TASK_DOC=""
|
||||
RUBY_FAKEGEM_EXTRADOC="CHANGELOG README.md"
|
||||
|
||||
RUBY_FAKEGEM_NAME="bcrypt"
|
||||
|
||||
inherit multilib ruby-fakegem
|
||||
|
||||
DESCRIPTION="An easy way to keep your users' passwords secure"
|
||||
HOMEPAGE="https://github.com/codahale/bcrypt-ruby"
|
||||
LICENSE="MIT"
|
||||
|
||||
KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
|
||||
SLOT="0"
|
||||
IUSE=""
|
||||
|
||||
all_ruby_prepare() {
|
||||
rm Gemfile || die
|
||||
sed -i -e '/git ls-files/d' bcrypt.gemspec || die
|
||||
}
|
||||
|
||||
each_ruby_configure() {
|
||||
${RUBY} -Cext/mri extconf.rb || die
|
||||
}
|
||||
|
||||
each_ruby_compile() {
|
||||
emake -Cext/mri V=1
|
||||
cp ext/mri/*$(get_modname) lib/ || die
|
||||
}
|
||||
|
||||
each_ruby_install() {
|
||||
each_fakegem_install
|
||||
|
||||
# bcrypt was called bcrypt-ruby before, so add a spec file that
|
||||
# simply loads bcrypt to make sure that old projects load correctly
|
||||
# we don't even need to create a file to load this: the `require
|
||||
# bcrypt` was already part of bcrypt-ruby requirements.
|
||||
cat - <<EOF > "${T}/bcrypt-ruby.gemspec"
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "bcrypt-ruby"
|
||||
s.version = "${RUBY_FAKEGEM_VERSION}"
|
||||
s.summary = "Fake gem to load bcrypt"
|
||||
s.homepage = "${HOMEPAGE}"
|
||||
s.specification_version = 3
|
||||
s.add_runtime_dependency("${RUBY_FAKEGEM_NAME}", ["= ${RUBY_FAKEGEM_VERSION}"])
|
||||
end
|
||||
EOF
|
||||
RUBY_FAKEGEM_NAME=bcrypt-ruby \
|
||||
RUBY_FAKEGEM_GEMSPEC="${T}/bcrypt-ruby.gemspec" \
|
||||
ruby_fakegem_install_gemspec
|
||||
}
|
@ -1,7 +1,17 @@
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA256
|
||||
|
||||
DIST hike-1.2.3.tgz 9010 SHA256 0dbb22f1596ec0a5261e454028ce36661b4185b4527bfd98c365495f03234833 SHA512 0d7a35c0f9b4f5f1f99d4b2b753244cb712ebc24cc54b366c60ac6094a2ec693df86443e0b4499358cdd4f6411347ad80e0fc90b5fb7f4dd9b627832b645adcd WHIRLPOOL daf6673ac9f57b50f663c66c083e93de3c31c792803799d0a98c630a89338a21c5c27f6e641f0e781f1dc53ebf667bb128397bca8ef0934e16ea3d7ad18a3d04
|
||||
DIST hike-2.1.2.tgz 9111 SHA256 599732124a5b5f0a67694c7e12d1f55480e1fb0e0846e6ffe952b7202b872ed9 SHA512 fc05b6ec5676d5b6d12273688b0f98cd01784e201947293c5af92c637adcd9cd788fa9a696d6439efcc9097e540160fb96133dffd85289e498042acce8ca0c97 WHIRLPOOL fb6b4f095aa02fc27f81c52daad1f18ad63f388931934b440a061fd68e2cbce8b8e53701e8d067ef5d6a82e50c4a156d30da8afd18b64db16009faee99dc9951
|
||||
EBUILD hike-1.2.3-r1.ebuild 820 SHA256 7d495e61861bd8864ad2d459a3e2f5aa4ae28e4a05e59386e1dad7c58767bb29 SHA512 233b0f640d53857d7a0db6f333e673bceca2b61d9c650ecad4ebe57296b6012d86913295aee959daffce8fee7080c6dc956b3497060b3db5168b7dda2ee49550 WHIRLPOOL 0aca5454cbddcbb44f17b4d141dba388c24b1736dbdd376a455d42d0d30fcd6062d92b13dbaac690c9d3c4b3f404361bbef7b3b43d975cfec3a1947f706d7aab
|
||||
EBUILD hike-1.2.3.ebuild 810 SHA256 5468461be7238941d9d6affc8c3765c4da8623ee8babf529a7e52d4ebd032bd8 SHA512 22337b24fb028d84b3be997274d660699c9f619429502a51f60e54f6821143ef656695925525dd79119495c4845d71641a71388ee23dda7c09bc2eef74cc9c1b WHIRLPOOL cef268cd830f23fd25c300b73d5812cb063006b55c351ce84924122895c75c7ffe5c7adc43c769c8f765914fce08d2681f4527a2fe793817ca257deadf8d9252
|
||||
EBUILD hike-2.1.2.ebuild 805 SHA256 37b687104dfe785bdac8adb7faadd74eeb5f53342ed91acbb99d65521a7f3cc9 SHA512 ee782e3dc946e34366fb1797913a178bfca5c85d0e238f8b0a3189f5d3fbb54edc189648dda2c7165a5bda2b9d1eaef96c925742c535437f44876beb4c5eee4f WHIRLPOOL 3ebbc13bbb677770bebadeda8a1f0575d300ad07d9a4e34162e95424eefab299e8766756d764dd2a892a60523dab9e5a23f9998a259af08317e5550847602aaf
|
||||
MISC ChangeLog 2248 SHA256 415861c59c4f206cc245c48dfe82f116f10e5086c9f2445b7e7cee6cea9be1c3 SHA512 0ad58895c95fe01f6cbc6a7f3c1f85a3a767bf88c4adabf908556bd9748b0df1abddfbe8ac7b252b11438f9c49078ac43b7a8b389851c150b52f16855256c161 WHIRLPOOL 9e6b4ccca92c20cc361971ca2c63a5d45c8bff8480627687475613414a4407257f3d88e7a09ac1925e9444160ca5762fadbd1d84ff12d716a5c68833db268475
|
||||
EBUILD hike-2.1.2.ebuild 813 SHA256 3943e7c16efdb14fdbb246587cfaa349ad8b5577703ad469005c51feb1f19537 SHA512 4eb7ed04a67b4d0ac8deb64bb4a36994a8984cd0be3d4a00e199b23665ef8d5738ecb43d5bf9487c040008bbc7fb0c42de3fb8df6b42973076ea65169a329b1b WHIRLPOOL ca44466d365498ced522cfdcd754c21b37630c4425d580d2f3b0e123000908900be97d564bb2c714a6a64a0fa5bed85912a210cec81573c64919214f7444f6f7
|
||||
MISC ChangeLog 2333 SHA256 8d71fcafee4c53f39555f6b6de927625f4c5f00dc5685bbe3ab64286dde2dd4f SHA512 0df1f05f5799eba3df8124378879c638bd3e63799cf98ecd25ec3cbd954adabf9d4972830c5727404a37559bf900cc618d6bcf71616fd653baca2a45f559f0b5 WHIRLPOOL c63e8bae5022f13553bc3b265f6a82e975c73220fe9833bacdc163e971d0a6a6b543fa7f5eb4570a402d0f25f611c0c50d782c3a072b58158cc95b15a61c9303
|
||||
MISC metadata.xml 157 SHA256 11fba03a217e2d996f5cd8895493a5692ece8ddac2c1a2dfc71d0e830555121c SHA512 0cec73b966de88015ea4c7212723d848d367608aa93658bb945f298a8000c4ba8aba73c9eb8481859fb5bbed45e80dae32c628caf81e027a4ad8eafa7e632851 WHIRLPOOL 4da25c81e21173ad8b7b5f35b056264869d9a16741062aa4422c5ea1aa9e73da8eb700b0d54de84c169d702fbb3f41ed157c9dc7c9daac110849ae84715c051b
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
iF4EAREIAAYFAlTJ2YQACgkQiIP6VqMIqNc4uwD/fA9zFb/nJKaYzq70vUOwTEaT
|
||||
hMV7BFyq6EdVxzSljuUA/Rys9pvH2PAgZxnkyinpxDtjCuksiNJjwJVYGZtCx9/S
|
||||
=xIWx
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -0,0 +1,79 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-libs/glew/glew-1.12.0.ebuild,v 1.1 2015/01/29 06:43:19 radhermit Exp $
|
||||
|
||||
EAPI=5
|
||||
inherit multilib multilib-minimal toolchain-funcs versionator
|
||||
|
||||
DESCRIPTION="The OpenGL Extension Wrangler Library"
|
||||
HOMEPAGE="http://glew.sourceforge.net/"
|
||||
SRC_URI="mirror://sourceforge/${PN}/${P}.tgz"
|
||||
|
||||
LICENSE="BSD MIT"
|
||||
SLOT="0/$(get_version_component_range 1-2)"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris"
|
||||
IUSE="doc static-libs"
|
||||
|
||||
RDEPEND=">=virtual/glu-9.0-r1[${MULTILIB_USEDEP}]
|
||||
>=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXi-1.7.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXmu-1.1.1-r1[${MULTILIB_USEDEP}]
|
||||
abi_x86_32? ( !app-emulation/emul-linux-x86-opengl[-abi_x86_32(-)] )"
|
||||
DEPEND=${RDEPEND}
|
||||
|
||||
src_prepare() {
|
||||
sed -i \
|
||||
-e '/INSTALL/s:-s::' \
|
||||
-e '/$(CC) $(CFLAGS) -o/s:$(CFLAGS):$(CFLAGS) $(LDFLAGS):' \
|
||||
-e '/^.PHONY: .*\.pc$/d' \
|
||||
Makefile || die
|
||||
|
||||
if ! use static-libs ; then
|
||||
sed -i \
|
||||
-e '/glew.lib:/s|lib/$(LIB.STATIC) ||' \
|
||||
-e '/glew.lib.mx:/s|lib/$(LIB.STATIC.MX) ||' \
|
||||
-e '/INSTALL.*LIB.STATIC/d' \
|
||||
Makefile || die
|
||||
fi
|
||||
|
||||
# don't do stupid Solaris specific stuff that won't work in Prefix
|
||||
cp config/Makefile.linux config/Makefile.solaris || die
|
||||
# and let freebsd be built as on linux too
|
||||
cp config/Makefile.linux config/Makefile.freebsd || die
|
||||
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
set_opts() {
|
||||
myglewopts=(
|
||||
AR="$(tc-getAR)"
|
||||
STRIP=true
|
||||
CC="$(tc-getCC)"
|
||||
LD="$(tc-getCC) ${LDFLAGS}"
|
||||
M_ARCH=""
|
||||
LDFLAGS.EXTRA=""
|
||||
POPT="${CFLAGS}"
|
||||
)
|
||||
|
||||
# support MinGW targets (bug #523444)
|
||||
[[ ${CHOST} == *-mingw* ]] && myglewopts+=( SYSTEM=mingw )
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
set_opts
|
||||
emake GLEW_DEST="${EPREFIX}/usr" LIBDIR="${EPREFIX}/usr/$(get_libdir)" "${myglewopts[@]}"
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
set_opts
|
||||
emake \
|
||||
GLEW_DEST="${ED}/usr" \
|
||||
LIBDIR="${ED}/usr/$(get_libdir)" \
|
||||
"${myglewopts[@]}" \
|
||||
install.all
|
||||
|
||||
dodoc TODO.txt
|
||||
use doc && dohtml doc/*
|
||||
}
|
@ -1,342 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-video/ffmpeg/ffmpeg-1.2.10.ebuild,v 1.1 2014/11/08 18:22:58 aballier Exp $
|
||||
|
||||
EAPI="4"
|
||||
|
||||
SCM=""
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SCM="git-2"
|
||||
EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
|
||||
fi
|
||||
|
||||
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
|
||||
|
||||
DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
|
||||
HOMEPAGE="http://ffmpeg.org/"
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SRC_URI=""
|
||||
elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
else # Release
|
||||
SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
|
||||
fi
|
||||
FFMPEG_REVISION="${PV#*_p}"
|
||||
|
||||
LICENSE="GPL-2 amr? ( GPL-3 ) encode? ( aac? ( GPL-3 ) )"
|
||||
SLOT="0"
|
||||
if [ "${PV#9999}" = "${PV}" ] ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
|
||||
fi
|
||||
IUSE="
|
||||
aac aacplus alsa amr bindist bluray +bzip2 cdio celt
|
||||
cpudetection debug doc +encode examples faac fdk flite fontconfig frei0r
|
||||
gnutls gsm +hardcoded-tables +iconv iec61883 ieee1394 jack jpeg2k libass
|
||||
libcaca libsoxr libv4l modplug mp3 +network openal openssl opus oss pic
|
||||
pulseaudio rtmp schroedinger sdl speex static-libs test theora threads
|
||||
truetype twolame v4l vaapi vdpau vorbis vpx X x264 xvid +zlib
|
||||
"
|
||||
|
||||
# String for CPU features in the useflag[:configure_option] form
|
||||
# if :configure_option isn't set, it will use 'useflag' as configure option
|
||||
CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext altivec avx mmx mmxext ssse3 vis neon"
|
||||
|
||||
for i in ${CPU_FEATURES}; do
|
||||
IUSE="${IUSE} ${i%:*}"
|
||||
done
|
||||
|
||||
FFTOOLS="aviocat cws2fws ffescape ffeval fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher"
|
||||
|
||||
for i in ${FFTOOLS}; do
|
||||
IUSE="${IUSE} +fftools_$i"
|
||||
done
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
|
||||
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
|
||||
bluray? ( >=media-libs/libbluray-0.3.0-r1[${MULTILIB_USEDEP}] )
|
||||
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
|
||||
cdio? (
|
||||
|| (
|
||||
>=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}]
|
||||
<dev-libs/libcdio-0.90[-minimal,${MULTILIB_USEDEP}]
|
||||
)
|
||||
)
|
||||
celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
|
||||
encode? (
|
||||
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
|
||||
aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
|
||||
amr? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
|
||||
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
|
||||
fdk? ( >=media-libs/fdk-aac-0.1.2[${MULTILIB_USEDEP}] )
|
||||
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
|
||||
theora? (
|
||||
>=media-libs/libtheora-1.1.1[${MULTILIB_USEDEP},encode]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
|
||||
x264? ( >=media-libs/x264-0.0.20130506[${MULTILIB_USEDEP}] )
|
||||
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
|
||||
)
|
||||
flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
|
||||
fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
|
||||
frei0r? ( media-plugins/frei0r-plugins )
|
||||
gnutls? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
|
||||
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
|
||||
iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
|
||||
iec61883? (
|
||||
>=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
ieee1394? (
|
||||
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
|
||||
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
|
||||
libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
|
||||
libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
|
||||
libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
|
||||
modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
|
||||
openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
|
||||
openssl? ( >=dev-libs/openssl-1.0.1h-r2[${MULTILIB_USEDEP}] )
|
||||
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
|
||||
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
|
||||
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
|
||||
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
|
||||
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
|
||||
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
|
||||
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
|
||||
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
|
||||
vorbis? (
|
||||
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
|
||||
X? (
|
||||
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
|
||||
!media-video/qt-faststart
|
||||
!media-libs/libpostproc
|
||||
"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
>=sys-devel/make-3.81
|
||||
doc? ( app-text/texi2html )
|
||||
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
mmx? ( dev-lang/yasm )
|
||||
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
test? ( net-misc/wget )
|
||||
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
v4l? ( sys-kernel/linux-headers )
|
||||
"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
|
||||
# faac is license-incompatible with ffmpeg
|
||||
REQUIRED_USE="bindist? ( encode? ( !faac !aacplus ) !openssl )
|
||||
libv4l? ( v4l )
|
||||
fftools_cws2fws? ( zlib )
|
||||
test? ( encode )"
|
||||
|
||||
S=${WORKDIR}/${P/_/-}
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/libavutil/avconfig.h
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
|
||||
export revision=git-N-${FFMPEG_REVISION}
|
||||
fi
|
||||
|
||||
epatch_user
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myconf=( ${EXTRA_FFMPEG_CONF} )
|
||||
|
||||
# options to use as use_enable in the foo[:bar] form.
|
||||
# This will feed configure with $(use_enable foo bar)
|
||||
# or $(use_enable foo foo) if no :bar is set.
|
||||
local ffuse=(
|
||||
bzip2:bzlib cpudetection:runtime-cpudetect debug doc
|
||||
gnutls hardcoded-tables iconv network openssl sdl:ffplay vaapi vdpau zlib
|
||||
)
|
||||
use openssl && myconf+=( --enable-nonfree )
|
||||
|
||||
# Encoders
|
||||
if use encode
|
||||
then
|
||||
ffuse+=( aac:libvo-aacenc amr:libvo-amrwbenc mp3:libmp3lame fdk:libfdk-aac )
|
||||
for i in aacplus faac theora twolame x264 xvid; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
|
||||
# Licensing.
|
||||
if use aac || use amr ; then
|
||||
myconf+=( --enable-version3 )
|
||||
fi
|
||||
if use aacplus || use faac || use fdk ; then
|
||||
myconf+=( --enable-nonfree )
|
||||
fi
|
||||
else
|
||||
myconf+=( --disable-encoders )
|
||||
fi
|
||||
|
||||
# libavdevice options
|
||||
ffuse+=( cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal )
|
||||
|
||||
# Indevs
|
||||
use v4l || myconf+=( --disable-indev=v4l2 )
|
||||
for i in alsa oss jack ; do
|
||||
use ${i} || myconf+=( --disable-indev=${i} )
|
||||
done
|
||||
ffuse+=( libv4l:libv4l2 pulseaudio:libpulse X:x11grab )
|
||||
|
||||
# Outdevs
|
||||
for i in alsa oss sdl ; do
|
||||
use ${i} || myconf+=( --disable-outdev=${i} )
|
||||
done
|
||||
|
||||
# libavfilter options
|
||||
ffuse+=( flite:libflite frei0r fontconfig libass truetype:libfreetype )
|
||||
|
||||
# libswresample options
|
||||
ffuse+=( libsoxr )
|
||||
|
||||
# Threads; we only support pthread for now but ffmpeg supports more
|
||||
ffuse+=( threads:pthreads )
|
||||
|
||||
# Decoders
|
||||
ffuse+=( amr:libopencore-amrwb amr:libopencore-amrnb jpeg2k:libopenjpeg )
|
||||
use amr && myconf+=( --enable-version3 )
|
||||
for i in bluray celt gsm modplug opus rtmp schroedinger speex vorbis vpx; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
|
||||
for i in "${ffuse[@]}" ; do
|
||||
myconf+=( $(use_enable ${i%:*} ${i#*:}) )
|
||||
done
|
||||
|
||||
# (temporarily) disable non-multilib deps
|
||||
if ! multilib_is_native_abi; then
|
||||
myconf+=( --disable-frei0r )
|
||||
fi
|
||||
|
||||
# CPU features
|
||||
for i in ${CPU_FEATURES}; do
|
||||
use ${i%:*} || myconf+=( --disable-${i#*:} )
|
||||
done
|
||||
if use pic ; then
|
||||
myconf+=( --enable-pic )
|
||||
# disable asm code if PIC is required
|
||||
# as the provided asm decidedly is not PIC for x86.
|
||||
[[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
|
||||
fi
|
||||
[[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
|
||||
|
||||
# Try to get cpu type based on CFLAGS.
|
||||
# Bug #172723
|
||||
# We need to do this so that features of that CPU will be better used
|
||||
# If they contain an unknown CPU it will not hurt since ffmpeg's configure
|
||||
# will just ignore it.
|
||||
for i in $(get-flag march) $(get-flag mcpu) $(get-flag mtune) ; do
|
||||
[[ ${i} = native ]] && i="host" # bug #273421
|
||||
myconf+=( --cpu=${i} )
|
||||
break
|
||||
done
|
||||
|
||||
# Mandatory configuration
|
||||
myconf=(
|
||||
--enable-gpl
|
||||
--enable-postproc
|
||||
--enable-avfilter
|
||||
--enable-avresample
|
||||
--disable-stripping
|
||||
"${myconf[@]}"
|
||||
)
|
||||
|
||||
# cross compile support
|
||||
if tc-is-cross-compiler ; then
|
||||
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
|
||||
case ${CHOST} in
|
||||
*freebsd*)
|
||||
myconf+=( --target-os=freebsd )
|
||||
;;
|
||||
mingw32*)
|
||||
myconf+=( --target-os=mingw32 )
|
||||
;;
|
||||
*linux*)
|
||||
myconf+=( --target-os=linux )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
set -- "${S}/configure" \
|
||||
--prefix="${EPREFIX}/usr" \
|
||||
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--shlibdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--mandir="${EPREFIX}/usr/share/man" \
|
||||
--enable-shared \
|
||||
--cc="$(tc-getCC)" \
|
||||
--cxx="$(tc-getCXX)" \
|
||||
--ar="$(tc-getAR)" \
|
||||
--optflags="${CFLAGS}" \
|
||||
--extra-cflags="${CFLAGS}" \
|
||||
--extra-cxxflags="${CXXFLAGS}" \
|
||||
$(use_enable static-libs static) \
|
||||
"${myconf[@]}"
|
||||
echo "${@}"
|
||||
"${@}" || die
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake V=1
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
emake V=1 tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake V=1 DESTDIR="${D}" install install-man
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
dobin tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
dodoc Changelog README CREDITS doc/*.txt doc/APIchanges doc/RELEASE_NOTES
|
||||
use doc && dohtml -r doc/*
|
||||
if use examples ; then
|
||||
dodoc -r doc/examples
|
||||
docompress -x /usr/share/doc/${PF}/examples
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil:${BUILD_DIR}/libavresample" \
|
||||
emake V=1 fate
|
||||
}
|
@ -1,378 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-video/ffmpeg/ffmpeg-2.2.11.ebuild,v 1.1 2014/12/12 08:44:25 aballier Exp $
|
||||
|
||||
EAPI="5"
|
||||
|
||||
# Subslot: libavutil major.libavcodec major.libavformat major
|
||||
# Since FFmpeg ships several libraries, subslot is kind of limited here.
|
||||
# Most consumers will use those three libraries, if a "less used" library
|
||||
# changes its soname, consumers will have to be rebuilt the old way
|
||||
# (preserve-libs).
|
||||
# If, for example, a package does not link to libavformat and only libavformat
|
||||
# changes its ABI then this package will be rebuilt needlessly. Hence, such a
|
||||
# package is free _not_ to := depend on FFmpeg but I would strongly encourage
|
||||
# doing so since such a case is unlikely.
|
||||
FFMPEG_SUBSLOT=52.55.55
|
||||
|
||||
SCM=""
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SCM="git-2"
|
||||
EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
|
||||
fi
|
||||
|
||||
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
|
||||
|
||||
DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
|
||||
HOMEPAGE="http://ffmpeg.org/"
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SRC_URI=""
|
||||
elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
else # Release
|
||||
SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
|
||||
fi
|
||||
FFMPEG_REVISION="${PV#*_p}"
|
||||
|
||||
LICENSE="GPL-2 amr? ( GPL-3 ) encode? ( aac? ( GPL-3 ) )"
|
||||
SLOT="0/${FFMPEG_SUBSLOT}"
|
||||
if [ "${PV#9999}" = "${PV}" ] ; then
|
||||
KEYWORDS="~amd64 ~arm ~hppa ~mips ~x86 ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
|
||||
fi
|
||||
IUSE="
|
||||
aac aacplus alsa amr amrenc bindist bluray +bzip2 cdio celt
|
||||
cpudetection debug doc +encode examples faac fdk flite fontconfig frei0r
|
||||
gme gnutls gsm +hardcoded-tables +iconv iec61883 ieee1394 jack jpeg2k
|
||||
ladspa libass libcaca libsoxr libv4l modplug mp3 +network openal opengl
|
||||
openssl opus oss pic pulseaudio quvi rtmp schroedinger sdl speex ssh
|
||||
static-libs test theora threads truetype twolame v4l vaapi vdpau vorbis vpx
|
||||
wavpack webp X x264 x265 xvid +zlib zvbi
|
||||
"
|
||||
|
||||
ARM_CPU_FEATURES="armv5te armv6 armv6t2 neon armvfp:vfp"
|
||||
MIPS_CPU_FEATURES="mips32r2 mipsdspr1 mipsdspr2 mipsfpu"
|
||||
PPC_CPU_FEATURES="altivec"
|
||||
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext avx avx2 fma3 fma4 mmx mmxext sse sse2 sse3 ssse3 sse4 sse4_2:sse42"
|
||||
|
||||
# String for CPU features in the useflag[:configure_option] form
|
||||
# if :configure_option isn't set, it will use 'useflag' as configure option
|
||||
CPU_FEATURES="
|
||||
${ARM_CPU_FEATURES}
|
||||
${MIPS_CPU_FEATURES}
|
||||
${PPC_CPU_FEATURES}
|
||||
${X86_CPU_FEATURES}
|
||||
"
|
||||
|
||||
for i in ${CPU_FEATURES}; do
|
||||
IUSE="${IUSE} ${i%:*}"
|
||||
done
|
||||
|
||||
FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher"
|
||||
|
||||
for i in ${FFTOOLS}; do
|
||||
IUSE="${IUSE} +fftools_$i"
|
||||
done
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
|
||||
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
|
||||
bluray? ( >=media-libs/libbluray-0.3.0-r1[${MULTILIB_USEDEP}] )
|
||||
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
|
||||
cdio? (
|
||||
|| (
|
||||
>=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}]
|
||||
<dev-libs/libcdio-0.90[-minimal,${MULTILIB_USEDEP}]
|
||||
)
|
||||
)
|
||||
celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
|
||||
encode? (
|
||||
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
|
||||
aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
|
||||
amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
|
||||
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
|
||||
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
|
||||
theora? (
|
||||
>=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
|
||||
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
|
||||
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
|
||||
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
|
||||
x265? ( >=media-libs/x265-0.8:=[${MULTILIB_USEDEP}] )
|
||||
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
|
||||
)
|
||||
fdk? ( >=media-libs/fdk-aac-0.1.3[${MULTILIB_USEDEP}] )
|
||||
flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
|
||||
fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
|
||||
frei0r? ( media-plugins/frei0r-plugins )
|
||||
gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
|
||||
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
|
||||
iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
|
||||
iec61883? (
|
||||
>=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
ieee1394? (
|
||||
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
|
||||
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
|
||||
libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
|
||||
libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
|
||||
libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
|
||||
modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
|
||||
openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
|
||||
opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
|
||||
openssl? ( >=dev-libs/openssl-1.0.1h-r2[${MULTILIB_USEDEP}] )
|
||||
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
|
||||
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
|
||||
quvi? ( media-libs/libquvi:0.4 )
|
||||
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
|
||||
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
|
||||
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
|
||||
ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
|
||||
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
|
||||
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
|
||||
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
|
||||
vorbis? (
|
||||
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
|
||||
X? (
|
||||
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
|
||||
)
|
||||
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
|
||||
zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
|
||||
!media-video/qt-faststart
|
||||
!media-libs/libpostproc
|
||||
"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
>=sys-devel/make-3.81
|
||||
doc? ( app-text/texi2html )
|
||||
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
mmx? ( >=dev-lang/yasm-1.2 )
|
||||
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
test? ( net-misc/wget sys-devel/bc )
|
||||
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
v4l? ( sys-kernel/linux-headers )
|
||||
"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
|
||||
# faac is license-incompatible with ffmpeg
|
||||
REQUIRED_USE="bindist? ( encode? ( !faac !aacplus ) !openssl )
|
||||
libv4l? ( v4l )
|
||||
fftools_cws2fws? ( zlib )
|
||||
test? ( encode )"
|
||||
|
||||
S=${WORKDIR}/${P/_/-}
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/libavutil/avconfig.h
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
|
||||
export revision=git-N-${FFMPEG_REVISION}
|
||||
fi
|
||||
epatch "${FILESDIR}/ladspadl.patch"
|
||||
epatch_user
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myconf=( ${EXTRA_FFMPEG_CONF} )
|
||||
|
||||
# options to use as use_enable in the foo[:bar] form.
|
||||
# This will feed configure with $(use_enable foo bar)
|
||||
# or $(use_enable foo foo) if no :bar is set.
|
||||
local ffuse=(
|
||||
bzip2:bzlib cpudetection:runtime-cpudetect debug doc
|
||||
gnutls hardcoded-tables iconv network openssl sdl:ffplay vaapi
|
||||
vdpau zlib
|
||||
)
|
||||
use openssl && myconf+=( --enable-nonfree )
|
||||
|
||||
# Encoders
|
||||
if use encode
|
||||
then
|
||||
ffuse+=( aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame )
|
||||
for i in aacplus faac theora twolame wavpack webp x264 x265 xvid; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
|
||||
# Licensing.
|
||||
if use aac || use amrenc ; then
|
||||
myconf+=( --enable-version3 )
|
||||
fi
|
||||
if use aacplus || use faac ; then
|
||||
myconf+=( --enable-nonfree )
|
||||
fi
|
||||
else
|
||||
myconf+=( --disable-encoders )
|
||||
fi
|
||||
|
||||
# libavdevice options
|
||||
ffuse+=( cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal opengl )
|
||||
|
||||
# Indevs
|
||||
use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
|
||||
for i in alsa oss jack ; do
|
||||
use ${i} || myconf+=( --disable-indev=${i} )
|
||||
done
|
||||
ffuse+=( libv4l:libv4l2 pulseaudio:libpulse X:x11grab )
|
||||
|
||||
# Outdevs
|
||||
for i in alsa oss sdl ; do
|
||||
use ${i} || myconf+=( --disable-outdev=${i} )
|
||||
done
|
||||
|
||||
# libavfilter options
|
||||
ffuse+=( flite:libflite frei0r fontconfig ladspa libass truetype:libfreetype )
|
||||
|
||||
# libswresample options
|
||||
ffuse+=( libsoxr )
|
||||
|
||||
# Threads; we only support pthread for now but ffmpeg supports more
|
||||
ffuse+=( threads:pthreads )
|
||||
|
||||
# Decoders
|
||||
ffuse+=( amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac jpeg2k:libopenjpeg )
|
||||
use amr && myconf+=( --enable-version3 )
|
||||
for i in bluray celt gme gsm modplug opus quvi rtmp ssh schroedinger speex vorbis vpx zvbi; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
use fdk && myconf+=( --enable-nonfree )
|
||||
|
||||
for i in "${ffuse[@]}" ; do
|
||||
myconf+=( $(use_enable ${i%:*} ${i#*:}) )
|
||||
done
|
||||
|
||||
# (temporarily) disable non-multilib deps
|
||||
if ! multilib_is_native_abi; then
|
||||
for i in frei0r libquvi; do
|
||||
myconf+=( --disable-${i} )
|
||||
done
|
||||
fi
|
||||
|
||||
# CPU features
|
||||
for i in ${CPU_FEATURES}; do
|
||||
use ${i%:*} || myconf+=( --disable-${i#*:} )
|
||||
done
|
||||
if use pic ; then
|
||||
myconf+=( --enable-pic )
|
||||
# disable asm code if PIC is required
|
||||
# as the provided asm decidedly is not PIC for x86.
|
||||
[[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
|
||||
fi
|
||||
[[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
|
||||
|
||||
# Try to get cpu type based on CFLAGS.
|
||||
# Bug #172723
|
||||
# We need to do this so that features of that CPU will be better used
|
||||
# If they contain an unknown CPU it will not hurt since ffmpeg's configure
|
||||
# will just ignore it.
|
||||
for i in $(get-flag mcpu) $(get-flag mtune) $(get-flag march) ; do
|
||||
[[ ${i} = native ]] && i="host" # bug #273421
|
||||
myconf+=( --cpu=${i} )
|
||||
break
|
||||
done
|
||||
|
||||
# Mandatory configuration
|
||||
myconf=(
|
||||
--enable-gpl
|
||||
--enable-postproc
|
||||
--enable-avfilter
|
||||
--enable-avresample
|
||||
--disable-stripping
|
||||
"${myconf[@]}"
|
||||
)
|
||||
|
||||
# cross compile support
|
||||
if tc-is-cross-compiler ; then
|
||||
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
|
||||
case ${CHOST} in
|
||||
*freebsd*)
|
||||
myconf+=( --target-os=freebsd )
|
||||
;;
|
||||
mingw32*)
|
||||
myconf+=( --target-os=mingw32 )
|
||||
;;
|
||||
*linux*)
|
||||
myconf+=( --target-os=linux )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
set -- "${S}/configure" \
|
||||
--prefix="${EPREFIX}/usr" \
|
||||
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--shlibdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--mandir="${EPREFIX}/usr/share/man" \
|
||||
--enable-shared \
|
||||
--cc="$(tc-getCC)" \
|
||||
--cxx="$(tc-getCXX)" \
|
||||
--ar="$(tc-getAR)" \
|
||||
--optflags="${CFLAGS}" \
|
||||
--extra-cflags="${CFLAGS}" \
|
||||
--extra-cxxflags="${CXXFLAGS}" \
|
||||
$(use_enable static-libs static) \
|
||||
"${myconf[@]}"
|
||||
echo "${@}"
|
||||
"${@}" || die
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake V=1
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
emake V=1 tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake V=1 DESTDIR="${D}" install install-man
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
dobin tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
dodoc Changelog README CREDITS doc/*.txt doc/APIchanges doc/RELEASE_NOTES
|
||||
use doc && dohtml -r doc/*
|
||||
if use examples ; then
|
||||
dodoc -r doc/examples
|
||||
docompress -x /usr/share/doc/${PF}/examples
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil:${BUILD_DIR}/libavresample" \
|
||||
emake V=1 fate
|
||||
}
|
@ -1,379 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-video/ffmpeg/ffmpeg-2.5.1.ebuild,v 1.1 2014/12/16 08:15:29 aballier Exp $
|
||||
|
||||
EAPI="5"
|
||||
|
||||
# Subslot: libavutil major.libavcodec major.libavformat major
|
||||
# Since FFmpeg ships several libraries, subslot is kind of limited here.
|
||||
# Most consumers will use those three libraries, if a "less used" library
|
||||
# changes its soname, consumers will have to be rebuilt the old way
|
||||
# (preserve-libs).
|
||||
# If, for example, a package does not link to libavformat and only libavformat
|
||||
# changes its ABI then this package will be rebuilt needlessly. Hence, such a
|
||||
# package is free _not_ to := depend on FFmpeg but I would strongly encourage
|
||||
# doing so since such a case is unlikely.
|
||||
FFMPEG_SUBSLOT=54.56.56
|
||||
|
||||
SCM=""
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SCM="git-2"
|
||||
EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
|
||||
fi
|
||||
|
||||
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
|
||||
|
||||
DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
|
||||
HOMEPAGE="http://ffmpeg.org/"
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SRC_URI=""
|
||||
elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
else # Release
|
||||
SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
|
||||
fi
|
||||
FFMPEG_REVISION="${PV#*_p}"
|
||||
|
||||
LICENSE="GPL-2 amr? ( GPL-3 ) encode? ( aac? ( GPL-3 ) ) samba? ( GPL-3 )"
|
||||
SLOT="0/${FFMPEG_SUBSLOT}"
|
||||
if [ "${PV#9999}" = "${PV}" ] ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
|
||||
fi
|
||||
IUSE="
|
||||
aac aacplus alsa amr amrenc bindist bluray bs2b +bzip2 cdio celt
|
||||
cpudetection debug doc +encode examples faac fdk flite fontconfig frei0r
|
||||
fribidi gme gnutls gsm +hardcoded-tables +iconv iec61883 ieee1394 jack
|
||||
jpeg2k ladspa libass libcaca libsoxr libv4l lzma modplug mp3 +network
|
||||
openal opengl openssl opus oss pic pulseaudio quvi rtmp samba schroedinger
|
||||
sdl speex ssh static-libs test theora threads truetype twolame v4l vaapi
|
||||
vdpau vorbis vpx wavpack webp X x264 x265 xcb xvid +zlib zvbi
|
||||
"
|
||||
|
||||
ARM_CPU_FEATURES="armv5te armv6 armv6t2 neon armvfp:vfp"
|
||||
MIPS_CPU_FEATURES="mips32r2 mipsdspr1 mipsdspr2 mipsfpu"
|
||||
PPC_CPU_FEATURES="altivec"
|
||||
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext avx avx2 fma3 fma4 mmx mmxext sse sse2 sse3 ssse3 sse4 sse4_2:sse42 xop"
|
||||
|
||||
# String for CPU features in the useflag[:configure_option] form
|
||||
# if :configure_option isn't set, it will use 'useflag' as configure option
|
||||
CPU_FEATURES="
|
||||
${ARM_CPU_FEATURES}
|
||||
${MIPS_CPU_FEATURES}
|
||||
${PPC_CPU_FEATURES}
|
||||
${X86_CPU_FEATURES}
|
||||
"
|
||||
|
||||
for i in ${CPU_FEATURES}; do
|
||||
IUSE="${IUSE} ${i%:*}"
|
||||
done
|
||||
|
||||
FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher"
|
||||
|
||||
for i in ${FFTOOLS}; do
|
||||
IUSE="${IUSE} +fftools_$i"
|
||||
done
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
|
||||
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
|
||||
bluray? ( >=media-libs/libbluray-0.3.0-r1[${MULTILIB_USEDEP}] )
|
||||
bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
|
||||
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
|
||||
cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
|
||||
celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
|
||||
encode? (
|
||||
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
|
||||
aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
|
||||
amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
|
||||
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
|
||||
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
|
||||
theora? (
|
||||
>=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
|
||||
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
|
||||
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
|
||||
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
|
||||
x265? ( >=media-libs/x265-1.2:=[${MULTILIB_USEDEP}] )
|
||||
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
|
||||
)
|
||||
fdk? ( >=media-libs/fdk-aac-0.1.3[${MULTILIB_USEDEP}] )
|
||||
flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
|
||||
fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
|
||||
frei0r? ( media-plugins/frei0r-plugins )
|
||||
fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
|
||||
gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
|
||||
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
|
||||
iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
|
||||
iec61883? (
|
||||
>=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
ieee1394? (
|
||||
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
|
||||
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
|
||||
libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
|
||||
libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
|
||||
libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
|
||||
lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
|
||||
modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
|
||||
openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
|
||||
opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
|
||||
openssl? ( >=dev-libs/openssl-1.0.1h-r2[${MULTILIB_USEDEP}] )
|
||||
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
|
||||
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
|
||||
quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
|
||||
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
|
||||
samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
|
||||
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
|
||||
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
|
||||
ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
|
||||
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
|
||||
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
|
||||
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
|
||||
vorbis? (
|
||||
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
|
||||
X? (
|
||||
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
|
||||
)
|
||||
xcb? ( x11-libs/libxcb[${MULTILIB_USEDEP}] )
|
||||
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
|
||||
zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
|
||||
!media-video/qt-faststart
|
||||
!media-libs/libpostproc
|
||||
"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
>=sys-devel/make-3.81
|
||||
doc? ( app-text/texi2html )
|
||||
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
mmx? ( >=dev-lang/yasm-1.2 )
|
||||
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
test? ( net-misc/wget sys-devel/bc )
|
||||
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
v4l? ( sys-kernel/linux-headers )
|
||||
"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
|
||||
# faac is license-incompatible with ffmpeg
|
||||
REQUIRED_USE="bindist? ( encode? ( !faac !aacplus ) !openssl )
|
||||
libv4l? ( v4l )
|
||||
fftools_cws2fws? ( zlib )
|
||||
test? ( encode )"
|
||||
|
||||
S=${WORKDIR}/${P/_/-}
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/libavutil/avconfig.h
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
|
||||
export revision=git-N-${FFMPEG_REVISION}
|
||||
fi
|
||||
epatch_user
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myconf=( ${EXTRA_FFMPEG_CONF} )
|
||||
|
||||
# options to use as use_enable in the foo[:bar] form.
|
||||
# This will feed configure with $(use_enable foo bar)
|
||||
# or $(use_enable foo foo) if no :bar is set.
|
||||
local ffuse=(
|
||||
bzip2:bzlib cpudetection:runtime-cpudetect debug doc
|
||||
gnutls hardcoded-tables iconv lzma network openssl samba:libsmbclient
|
||||
sdl:ffplay vaapi vdpau X:xlib xcb:libxcb xcb:libxcb-shm xcb:libxcb-xfixes zlib
|
||||
)
|
||||
use openssl && myconf+=( --enable-nonfree )
|
||||
use samba && myconf+=( --enable-version3 )
|
||||
|
||||
# Encoders
|
||||
if use encode
|
||||
then
|
||||
ffuse+=( aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame )
|
||||
for i in aacplus faac theora twolame wavpack webp x264 x265 xvid; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
|
||||
# Licensing.
|
||||
if use aac || use amrenc ; then
|
||||
myconf+=( --enable-version3 )
|
||||
fi
|
||||
if use aacplus || use faac ; then
|
||||
myconf+=( --enable-nonfree )
|
||||
fi
|
||||
else
|
||||
myconf+=( --disable-encoders )
|
||||
fi
|
||||
|
||||
# libavdevice options
|
||||
ffuse+=( cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal opengl )
|
||||
|
||||
# Indevs
|
||||
use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
|
||||
for i in alsa oss jack ; do
|
||||
use ${i} || myconf+=( --disable-indev=${i} )
|
||||
done
|
||||
ffuse+=( libv4l:libv4l2 pulseaudio:libpulse X:x11grab )
|
||||
|
||||
# Outdevs
|
||||
for i in alsa oss sdl ; do
|
||||
use ${i} || myconf+=( --disable-outdev=${i} )
|
||||
done
|
||||
|
||||
# libavfilter options
|
||||
ffuse+=( bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa libass truetype:libfreetype )
|
||||
|
||||
# libswresample options
|
||||
ffuse+=( libsoxr )
|
||||
|
||||
# Threads; we only support pthread for now but ffmpeg supports more
|
||||
ffuse+=( threads:pthreads )
|
||||
|
||||
# Decoders
|
||||
ffuse+=( amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac jpeg2k:libopenjpeg )
|
||||
use amr && myconf+=( --enable-version3 )
|
||||
for i in bluray celt gme gsm modplug opus quvi rtmp ssh schroedinger speex vorbis vpx zvbi; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
use fdk && myconf+=( --enable-nonfree )
|
||||
|
||||
for i in "${ffuse[@]}" ; do
|
||||
myconf+=( $(use_enable ${i%:*} ${i#*:}) )
|
||||
done
|
||||
|
||||
# (temporarily) disable non-multilib deps
|
||||
if ! multilib_is_native_abi; then
|
||||
for i in frei0r ; do
|
||||
myconf+=( --disable-${i} )
|
||||
done
|
||||
fi
|
||||
|
||||
# CPU features
|
||||
for i in ${CPU_FEATURES}; do
|
||||
use ${i%:*} || myconf+=( --disable-${i#*:} )
|
||||
done
|
||||
if use pic ; then
|
||||
myconf+=( --enable-pic )
|
||||
# disable asm code if PIC is required
|
||||
# as the provided asm decidedly is not PIC for x86.
|
||||
[[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
|
||||
fi
|
||||
[[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
|
||||
|
||||
# Try to get cpu type based on CFLAGS.
|
||||
# Bug #172723
|
||||
# We need to do this so that features of that CPU will be better used
|
||||
# If they contain an unknown CPU it will not hurt since ffmpeg's configure
|
||||
# will just ignore it.
|
||||
for i in $(get-flag mcpu) $(get-flag mtune) $(get-flag march) ; do
|
||||
[[ ${i} = native ]] && i="host" # bug #273421
|
||||
myconf+=( --cpu=${i} )
|
||||
break
|
||||
done
|
||||
|
||||
# Mandatory configuration
|
||||
myconf=(
|
||||
--enable-gpl
|
||||
--enable-postproc
|
||||
--enable-avfilter
|
||||
--enable-avresample
|
||||
--disable-stripping
|
||||
"${myconf[@]}"
|
||||
)
|
||||
|
||||
# cross compile support
|
||||
if tc-is-cross-compiler ; then
|
||||
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
|
||||
case ${CHOST} in
|
||||
*freebsd*)
|
||||
myconf+=( --target-os=freebsd )
|
||||
;;
|
||||
mingw32*)
|
||||
myconf+=( --target-os=mingw32 )
|
||||
;;
|
||||
*linux*)
|
||||
myconf+=( --target-os=linux )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
set -- "${S}/configure" \
|
||||
--prefix="${EPREFIX}/usr" \
|
||||
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--shlibdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--mandir="${EPREFIX}/usr/share/man" \
|
||||
--enable-shared \
|
||||
--cc="$(tc-getCC)" \
|
||||
--cxx="$(tc-getCXX)" \
|
||||
--ar="$(tc-getAR)" \
|
||||
--optflags="${CFLAGS}" \
|
||||
--extra-cflags="${CFLAGS}" \
|
||||
--extra-cxxflags="${CXXFLAGS}" \
|
||||
$(use_enable static-libs static) \
|
||||
"${myconf[@]}"
|
||||
echo "${@}"
|
||||
"${@}" || die
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake V=1
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
emake V=1 tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake V=1 DESTDIR="${D}" install install-man
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
dobin tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
|
||||
[ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
|
||||
use doc && dohtml -r doc/*
|
||||
if use examples ; then
|
||||
dodoc -r doc/examples
|
||||
docompress -x /usr/share/doc/${PF}/examples
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil:${BUILD_DIR}/libavresample" \
|
||||
emake V=1 fate
|
||||
}
|
@ -1,379 +0,0 @@
|
||||
# Copyright 1999-2014 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/media-video/ffmpeg/ffmpeg-2.5.2.ebuild,v 1.1 2014/12/26 17:19:29 aballier Exp $
|
||||
|
||||
EAPI="5"
|
||||
|
||||
# Subslot: libavutil major.libavcodec major.libavformat major
|
||||
# Since FFmpeg ships several libraries, subslot is kind of limited here.
|
||||
# Most consumers will use those three libraries, if a "less used" library
|
||||
# changes its soname, consumers will have to be rebuilt the old way
|
||||
# (preserve-libs).
|
||||
# If, for example, a package does not link to libavformat and only libavformat
|
||||
# changes its ABI then this package will be rebuilt needlessly. Hence, such a
|
||||
# package is free _not_ to := depend on FFmpeg but I would strongly encourage
|
||||
# doing so since such a case is unlikely.
|
||||
FFMPEG_SUBSLOT=54.56.56
|
||||
|
||||
SCM=""
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SCM="git-2"
|
||||
EGIT_REPO_URI="git://source.ffmpeg.org/ffmpeg.git"
|
||||
fi
|
||||
|
||||
inherit eutils flag-o-matic multilib multilib-minimal toolchain-funcs ${SCM}
|
||||
|
||||
DESCRIPTION="Complete solution to record, convert and stream audio and video. Includes libavcodec"
|
||||
HOMEPAGE="http://ffmpeg.org/"
|
||||
if [ "${PV#9999}" != "${PV}" ] ; then
|
||||
SRC_URI=""
|
||||
elif [ "${PV%_p*}" != "${PV}" ] ; then # Snapshot
|
||||
SRC_URI="mirror://gentoo/${P}.tar.bz2"
|
||||
else # Release
|
||||
SRC_URI="http://ffmpeg.org/releases/${P/_/-}.tar.bz2"
|
||||
fi
|
||||
FFMPEG_REVISION="${PV#*_p}"
|
||||
|
||||
LICENSE="GPL-2 amr? ( GPL-3 ) encode? ( aac? ( GPL-3 ) ) samba? ( GPL-3 )"
|
||||
SLOT="0/${FFMPEG_SUBSLOT}"
|
||||
if [ "${PV#9999}" = "${PV}" ] ; then
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~arm-linux ~x86-linux"
|
||||
fi
|
||||
IUSE="
|
||||
aac aacplus alsa amr amrenc bindist bluray bs2b +bzip2 cdio celt
|
||||
cpudetection debug doc +encode examples faac fdk flite fontconfig frei0r
|
||||
fribidi gme gnutls gsm +hardcoded-tables +iconv iec61883 ieee1394 jack
|
||||
jpeg2k ladspa libass libcaca libsoxr libv4l lzma modplug mp3 +network
|
||||
openal opengl openssl opus oss pic pulseaudio quvi rtmp samba schroedinger
|
||||
sdl speex ssh static-libs test theora threads truetype twolame v4l vaapi
|
||||
vdpau vorbis vpx wavpack webp X x264 x265 xcb xvid +zlib zvbi
|
||||
"
|
||||
|
||||
ARM_CPU_FEATURES="armv5te armv6 armv6t2 neon armvfp:vfp"
|
||||
MIPS_CPU_FEATURES="mips32r2 mipsdspr1 mipsdspr2 mipsfpu"
|
||||
PPC_CPU_FEATURES="altivec"
|
||||
X86_CPU_FEATURES="3dnow:amd3dnow 3dnowext:amd3dnowext avx avx2 fma3 fma4 mmx mmxext sse sse2 sse3 ssse3 sse4 sse4_2:sse42 xop"
|
||||
|
||||
# String for CPU features in the useflag[:configure_option] form
|
||||
# if :configure_option isn't set, it will use 'useflag' as configure option
|
||||
CPU_FEATURES="
|
||||
${ARM_CPU_FEATURES}
|
||||
${MIPS_CPU_FEATURES}
|
||||
${PPC_CPU_FEATURES}
|
||||
${X86_CPU_FEATURES}
|
||||
"
|
||||
|
||||
for i in ${CPU_FEATURES}; do
|
||||
IUSE="${IUSE} ${i%:*}"
|
||||
done
|
||||
|
||||
FFTOOLS="aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper qt-faststart trasher"
|
||||
|
||||
for i in ${FFTOOLS}; do
|
||||
IUSE="${IUSE} +fftools_$i"
|
||||
done
|
||||
|
||||
RDEPEND="
|
||||
alsa? ( >=media-libs/alsa-lib-1.0.27.2[${MULTILIB_USEDEP}] )
|
||||
amr? ( >=media-libs/opencore-amr-0.1.3-r1[${MULTILIB_USEDEP}] )
|
||||
bluray? ( >=media-libs/libbluray-0.3.0-r1[${MULTILIB_USEDEP}] )
|
||||
bs2b? ( >=media-libs/libbs2b-3.1.0-r1[${MULTILIB_USEDEP}] )
|
||||
bzip2? ( >=app-arch/bzip2-1.0.6-r4[${MULTILIB_USEDEP}] )
|
||||
cdio? ( >=dev-libs/libcdio-paranoia-0.90_p1-r1[${MULTILIB_USEDEP}] )
|
||||
celt? ( >=media-libs/celt-0.11.1-r1[${MULTILIB_USEDEP}] )
|
||||
encode? (
|
||||
aac? ( >=media-libs/vo-aacenc-0.1.3[${MULTILIB_USEDEP}] )
|
||||
aacplus? ( >=media-libs/libaacplus-2.0.2-r1[${MULTILIB_USEDEP}] )
|
||||
amrenc? ( >=media-libs/vo-amrwbenc-0.1.2-r1[${MULTILIB_USEDEP}] )
|
||||
faac? ( >=media-libs/faac-1.28-r3[${MULTILIB_USEDEP}] )
|
||||
mp3? ( >=media-sound/lame-3.99.5-r1[${MULTILIB_USEDEP}] )
|
||||
theora? (
|
||||
>=media-libs/libtheora-1.1.1[encode,${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
twolame? ( >=media-sound/twolame-0.3.13-r1[${MULTILIB_USEDEP}] )
|
||||
wavpack? ( >=media-sound/wavpack-4.60.1-r1[${MULTILIB_USEDEP}] )
|
||||
webp? ( >=media-libs/libwebp-0.3.0[${MULTILIB_USEDEP}] )
|
||||
x264? ( >=media-libs/x264-0.0.20130506:=[${MULTILIB_USEDEP}] )
|
||||
x265? ( >=media-libs/x265-1.2:=[${MULTILIB_USEDEP}] )
|
||||
xvid? ( >=media-libs/xvid-1.3.2-r1[${MULTILIB_USEDEP}] )
|
||||
)
|
||||
fdk? ( >=media-libs/fdk-aac-0.1.3[${MULTILIB_USEDEP}] )
|
||||
flite? ( >=app-accessibility/flite-1.4-r4[${MULTILIB_USEDEP}] )
|
||||
fontconfig? ( >=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}] )
|
||||
frei0r? ( media-plugins/frei0r-plugins )
|
||||
fribidi? ( >=dev-libs/fribidi-0.19.6[${MULTILIB_USEDEP}] )
|
||||
gme? ( >=media-libs/game-music-emu-0.6.0[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}] )
|
||||
gsm? ( >=media-sound/gsm-1.0.13-r1[${MULTILIB_USEDEP}] )
|
||||
iconv? ( >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] )
|
||||
iec61883? (
|
||||
>=media-libs/libiec61883-1.2.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libavc1394-0.5.4-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
ieee1394? (
|
||||
>=media-libs/libdc1394-2.2.1[${MULTILIB_USEDEP}]
|
||||
>=sys-libs/libraw1394-2.1.0-r1[${MULTILIB_USEDEP}]
|
||||
)
|
||||
jack? ( >=media-sound/jack-audio-connection-kit-0.121.3-r1[${MULTILIB_USEDEP}] )
|
||||
jpeg2k? ( >=media-libs/openjpeg-1.5.0:0[${MULTILIB_USEDEP}] )
|
||||
libass? ( >=media-libs/libass-0.10.2[${MULTILIB_USEDEP}] )
|
||||
libcaca? ( >=media-libs/libcaca-0.99_beta18-r1[${MULTILIB_USEDEP}] )
|
||||
libsoxr? ( >=media-libs/soxr-0.1.0[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
|
||||
lzma? ( >=app-arch/xz-utils-5.0.5-r1[${MULTILIB_USEDEP}] )
|
||||
modplug? ( >=media-libs/libmodplug-0.8.8.4-r1[${MULTILIB_USEDEP}] )
|
||||
openal? ( >=media-libs/openal-1.15.1[${MULTILIB_USEDEP}] )
|
||||
opengl? ( >=virtual/opengl-7.0-r1[${MULTILIB_USEDEP}] )
|
||||
openssl? ( >=dev-libs/openssl-1.0.1h-r2[${MULTILIB_USEDEP}] )
|
||||
opus? ( >=media-libs/opus-1.0.2-r2[${MULTILIB_USEDEP}] )
|
||||
pulseaudio? ( >=media-sound/pulseaudio-2.1-r1[${MULTILIB_USEDEP}] )
|
||||
quvi? ( media-libs/libquvi:0.4[${MULTILIB_USEDEP}] )
|
||||
rtmp? ( >=media-video/rtmpdump-2.4_p20131018[${MULTILIB_USEDEP}] )
|
||||
samba? ( >=net-fs/samba-3.6.23-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=media-libs/schroedinger-1.0.11-r1[${MULTILIB_USEDEP}] )
|
||||
sdl? ( >=media-libs/libsdl-1.2.15-r4[sound,video,${MULTILIB_USEDEP}] )
|
||||
speex? ( >=media-libs/speex-1.2_rc1-r1[${MULTILIB_USEDEP}] )
|
||||
ssh? ( >=net-libs/libssh-0.5.5[${MULTILIB_USEDEP}] )
|
||||
truetype? ( >=media-libs/freetype-2.5.0.1:2[${MULTILIB_USEDEP}] )
|
||||
vaapi? ( >=x11-libs/libva-1.2.1-r1[${MULTILIB_USEDEP}] )
|
||||
vdpau? ( >=x11-libs/libvdpau-0.7[${MULTILIB_USEDEP}] )
|
||||
vorbis? (
|
||||
>=media-libs/libvorbis-1.3.3-r1[${MULTILIB_USEDEP}]
|
||||
>=media-libs/libogg-1.3.0[${MULTILIB_USEDEP}]
|
||||
)
|
||||
vpx? ( >=media-libs/libvpx-1.2.0_pre20130625[${MULTILIB_USEDEP}] )
|
||||
X? (
|
||||
>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXfixes-5.0.1[${MULTILIB_USEDEP}]
|
||||
>=x11-libs/libXv-1.0.10[${MULTILIB_USEDEP}]
|
||||
)
|
||||
xcb? ( x11-libs/libxcb[${MULTILIB_USEDEP}] )
|
||||
zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
|
||||
zvbi? ( >=media-libs/zvbi-0.2.35[${MULTILIB_USEDEP}] )
|
||||
!media-video/qt-faststart
|
||||
!media-libs/libpostproc
|
||||
"
|
||||
|
||||
DEPEND="${RDEPEND}
|
||||
>=sys-devel/make-3.81
|
||||
doc? ( app-text/texi2html )
|
||||
fontconfig? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
gnutls? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ieee1394? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
ladspa? ( >=media-libs/ladspa-sdk-1.13-r2[${MULTILIB_USEDEP}] )
|
||||
libv4l? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
mmx? ( >=dev-lang/yasm-1.2 )
|
||||
rtmp? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
schroedinger? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
test? ( net-misc/wget sys-devel/bc )
|
||||
truetype? ( >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}] )
|
||||
v4l? ( sys-kernel/linux-headers )
|
||||
"
|
||||
|
||||
RDEPEND="${RDEPEND}
|
||||
abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20140508-r3
|
||||
!app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )"
|
||||
|
||||
# faac is license-incompatible with ffmpeg
|
||||
REQUIRED_USE="bindist? ( encode? ( !faac !aacplus ) !openssl )
|
||||
libv4l? ( v4l )
|
||||
fftools_cws2fws? ( zlib )
|
||||
test? ( encode )"
|
||||
|
||||
S=${WORKDIR}/${P/_/-}
|
||||
|
||||
MULTILIB_WRAPPED_HEADERS=(
|
||||
/usr/include/libavutil/avconfig.h
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
if [[ "${PV%_p*}" != "${PV}" ]] ; then # Snapshot
|
||||
export revision=git-N-${FFMPEG_REVISION}
|
||||
fi
|
||||
epatch_user
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
local myconf=( ${EXTRA_FFMPEG_CONF} )
|
||||
|
||||
# options to use as use_enable in the foo[:bar] form.
|
||||
# This will feed configure with $(use_enable foo bar)
|
||||
# or $(use_enable foo foo) if no :bar is set.
|
||||
local ffuse=(
|
||||
bzip2:bzlib cpudetection:runtime-cpudetect debug doc
|
||||
gnutls hardcoded-tables iconv lzma network openssl samba:libsmbclient
|
||||
sdl:ffplay vaapi vdpau X:xlib xcb:libxcb xcb:libxcb-shm xcb:libxcb-xfixes zlib
|
||||
)
|
||||
use openssl && myconf+=( --enable-nonfree )
|
||||
use samba && myconf+=( --enable-version3 )
|
||||
|
||||
# Encoders
|
||||
if use encode
|
||||
then
|
||||
ffuse+=( aac:libvo-aacenc amrenc:libvo-amrwbenc mp3:libmp3lame )
|
||||
for i in aacplus faac theora twolame wavpack webp x264 x265 xvid; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
|
||||
# Licensing.
|
||||
if use aac || use amrenc ; then
|
||||
myconf+=( --enable-version3 )
|
||||
fi
|
||||
if use aacplus || use faac ; then
|
||||
myconf+=( --enable-nonfree )
|
||||
fi
|
||||
else
|
||||
myconf+=( --disable-encoders )
|
||||
fi
|
||||
|
||||
# libavdevice options
|
||||
ffuse+=( cdio:libcdio iec61883:libiec61883 ieee1394:libdc1394 libcaca openal opengl )
|
||||
|
||||
# Indevs
|
||||
use v4l || myconf+=( --disable-indev=v4l2 --disable-outdev=v4l2 )
|
||||
for i in alsa oss jack ; do
|
||||
use ${i} || myconf+=( --disable-indev=${i} )
|
||||
done
|
||||
ffuse+=( libv4l:libv4l2 pulseaudio:libpulse X:x11grab )
|
||||
|
||||
# Outdevs
|
||||
for i in alsa oss sdl ; do
|
||||
use ${i} || myconf+=( --disable-outdev=${i} )
|
||||
done
|
||||
|
||||
# libavfilter options
|
||||
ffuse+=( bs2b:libbs2b flite:libflite frei0r fribidi:libfribidi fontconfig ladspa libass truetype:libfreetype )
|
||||
|
||||
# libswresample options
|
||||
ffuse+=( libsoxr )
|
||||
|
||||
# Threads; we only support pthread for now but ffmpeg supports more
|
||||
ffuse+=( threads:pthreads )
|
||||
|
||||
# Decoders
|
||||
ffuse+=( amr:libopencore-amrwb amr:libopencore-amrnb fdk:libfdk-aac jpeg2k:libopenjpeg )
|
||||
use amr && myconf+=( --enable-version3 )
|
||||
for i in bluray celt gme gsm modplug opus quvi rtmp ssh schroedinger speex vorbis vpx zvbi; do
|
||||
ffuse+=( ${i}:lib${i} )
|
||||
done
|
||||
use fdk && myconf+=( --enable-nonfree )
|
||||
|
||||
for i in "${ffuse[@]}" ; do
|
||||
myconf+=( $(use_enable ${i%:*} ${i#*:}) )
|
||||
done
|
||||
|
||||
# (temporarily) disable non-multilib deps
|
||||
if ! multilib_is_native_abi; then
|
||||
for i in frei0r ; do
|
||||
myconf+=( --disable-${i} )
|
||||
done
|
||||
fi
|
||||
|
||||
# CPU features
|
||||
for i in ${CPU_FEATURES}; do
|
||||
use ${i%:*} || myconf+=( --disable-${i#*:} )
|
||||
done
|
||||
if use pic ; then
|
||||
myconf+=( --enable-pic )
|
||||
# disable asm code if PIC is required
|
||||
# as the provided asm decidedly is not PIC for x86.
|
||||
[[ ${ABI} == x86 ]] && myconf+=( --disable-asm )
|
||||
fi
|
||||
[[ ${ABI} == x32 ]] && myconf+=( --disable-asm ) #427004
|
||||
|
||||
# Try to get cpu type based on CFLAGS.
|
||||
# Bug #172723
|
||||
# We need to do this so that features of that CPU will be better used
|
||||
# If they contain an unknown CPU it will not hurt since ffmpeg's configure
|
||||
# will just ignore it.
|
||||
for i in $(get-flag mcpu) $(get-flag mtune) $(get-flag march) ; do
|
||||
[[ ${i} = native ]] && i="host" # bug #273421
|
||||
myconf+=( --cpu=${i} )
|
||||
break
|
||||
done
|
||||
|
||||
# Mandatory configuration
|
||||
myconf=(
|
||||
--enable-gpl
|
||||
--enable-postproc
|
||||
--enable-avfilter
|
||||
--enable-avresample
|
||||
--disable-stripping
|
||||
"${myconf[@]}"
|
||||
)
|
||||
|
||||
# cross compile support
|
||||
if tc-is-cross-compiler ; then
|
||||
myconf+=( --enable-cross-compile --arch=$(tc-arch-kernel) --cross-prefix=${CHOST}- )
|
||||
case ${CHOST} in
|
||||
*freebsd*)
|
||||
myconf+=( --target-os=freebsd )
|
||||
;;
|
||||
mingw32*)
|
||||
myconf+=( --target-os=mingw32 )
|
||||
;;
|
||||
*linux*)
|
||||
myconf+=( --target-os=linux )
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
set -- "${S}/configure" \
|
||||
--prefix="${EPREFIX}/usr" \
|
||||
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--shlibdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--mandir="${EPREFIX}/usr/share/man" \
|
||||
--enable-shared \
|
||||
--cc="$(tc-getCC)" \
|
||||
--cxx="$(tc-getCXX)" \
|
||||
--ar="$(tc-getAR)" \
|
||||
--optflags="${CFLAGS}" \
|
||||
--extra-cflags="${CFLAGS}" \
|
||||
--extra-cxxflags="${CXXFLAGS}" \
|
||||
$(use_enable static-libs static) \
|
||||
"${myconf[@]}"
|
||||
echo "${@}"
|
||||
"${@}" || die
|
||||
}
|
||||
|
||||
multilib_src_compile() {
|
||||
emake V=1
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
emake V=1 tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install() {
|
||||
emake V=1 DESTDIR="${D}" install install-man
|
||||
|
||||
if multilib_is_native_abi; then
|
||||
for i in ${FFTOOLS} ; do
|
||||
if use fftools_${i} ; then
|
||||
dobin tools/${i}
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
dodoc Changelog README.md CREDITS doc/*.txt doc/APIchanges
|
||||
[ -f "RELEASE_NOTES" ] && dodoc "RELEASE_NOTES"
|
||||
use doc && dohtml -r doc/*
|
||||
if use examples ; then
|
||||
dodoc -r doc/examples
|
||||
docompress -x /usr/share/doc/${PF}/examples
|
||||
fi
|
||||
}
|
||||
|
||||
multilib_src_test() {
|
||||
LD_LIBRARY_PATH="${BUILD_DIR}/libpostproc:${BUILD_DIR}/libswscale:${BUILD_DIR}/libswresample:${BUILD_DIR}/libavcodec:${BUILD_DIR}/libavdevice:${BUILD_DIR}/libavfilter:${BUILD_DIR}/libavformat:${BUILD_DIR}/libavutil:${BUILD_DIR}/libavresample" \
|
||||
emake V=1 fate
|
||||
}
|
@ -1 +1 @@
|
||||
Thu, 29 Jan 2015 05:06:52 +0000
|
||||
Thu, 29 Jan 2015 09:06:50 +0000
|
||||
|
@ -1 +1 @@
|
||||
Thu, 29 Jan 2015 05:06:52 +0000
|
||||
Thu, 29 Jan 2015 09:06:50 +0000
|
||||
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
|
||||
DEPEND=test? ( ruby_targets_ruby19? ( dev-ruby/hiera[ruby_targets_ruby19] >=dev-ruby/rgen-0.6.5[ruby_targets_ruby19] =dev-ruby/rgen-0.6*[ruby_targets_ruby19] >=dev-ruby/facter-1.6.2[ruby_targets_ruby19] <dev-ruby/facter-3[ruby_targets_ruby19] dev-ruby/json[ruby_targets_ruby19] augeas? ( dev-ruby/ruby-augeas[ruby_targets_ruby19] ) diff? ( dev-ruby/diff-lcs[ruby_targets_ruby19] ) doc? ( dev-ruby/rdoc[ruby_targets_ruby19] ) ldap? ( dev-ruby/ruby-ldap[ruby_targets_ruby19] ) shadow? ( dev-ruby/ruby-shadow[ruby_targets_ruby19] ) sqlite3? ( dev-ruby/sqlite3[ruby_targets_ruby19] ) virtual/ruby-ssl[ruby_targets_ruby19] ) ruby_targets_ruby20? ( dev-ruby/hiera[ruby_targets_ruby20] >=dev-ruby/rgen-0.6.5[ruby_targets_ruby20] =dev-ruby/rgen-0.6*[ruby_targets_ruby20] >=dev-ruby/facter-1.6.2[ruby_targets_ruby20] <dev-ruby/facter-3[ruby_targets_ruby20] dev-ruby/json[ruby_targets_ruby20] augeas? ( dev-ruby/ruby-augeas[ruby_targets_ruby20] ) diff? ( dev-ruby/diff-lcs[ruby_targets_ruby20] ) doc? ( dev-ruby/rdoc[ruby_targets_ruby20] ) ldap? ( dev-ruby/ruby-ldap[ruby_targets_ruby20] ) shadow? ( dev-ruby/ruby-shadow[ruby_targets_ruby20] ) sqlite3? ( dev-ruby/sqlite3[ruby_targets_ruby20] ) virtual/ruby-ssl[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] ) emacs? ( virtual/emacs ) xemacs? ( app-editors/xemacs ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby19? ( doc? ( dev-ruby/rake[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( doc? ( dev-ruby/rake[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby19] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby20] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) )
|
||||
DESCRIPTION=A system automation and configuration management software
|
||||
EAPI=5
|
||||
HOMEPAGE=http://puppetlabs.com/
|
||||
IUSE=augeas diff doc emacs ldap minimal rrdtool selinux shadow sqlite3 vim-syntax xemacs test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 doc test test
|
||||
KEYWORDS=~amd64 ~hppa ~ppc ~sparc ~x86
|
||||
LICENSE=Apache-2.0 GPL-2
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-ruby/hiera[ruby_targets_ruby19] >=dev-ruby/rgen-0.6.5[ruby_targets_ruby19] =dev-ruby/rgen-0.6*[ruby_targets_ruby19] >=dev-ruby/facter-1.6.2[ruby_targets_ruby19] <dev-ruby/facter-3[ruby_targets_ruby19] dev-ruby/json[ruby_targets_ruby19] augeas? ( dev-ruby/ruby-augeas[ruby_targets_ruby19] ) diff? ( dev-ruby/diff-lcs[ruby_targets_ruby19] ) doc? ( dev-ruby/rdoc[ruby_targets_ruby19] ) ldap? ( dev-ruby/ruby-ldap[ruby_targets_ruby19] ) shadow? ( dev-ruby/ruby-shadow[ruby_targets_ruby19] ) sqlite3? ( dev-ruby/sqlite3[ruby_targets_ruby19] ) virtual/ruby-ssl[ruby_targets_ruby19] ) ruby_targets_ruby20? ( dev-ruby/hiera[ruby_targets_ruby20] >=dev-ruby/rgen-0.6.5[ruby_targets_ruby20] =dev-ruby/rgen-0.6*[ruby_targets_ruby20] >=dev-ruby/facter-1.6.2[ruby_targets_ruby20] <dev-ruby/facter-3[ruby_targets_ruby20] dev-ruby/json[ruby_targets_ruby20] augeas? ( dev-ruby/ruby-augeas[ruby_targets_ruby20] ) diff? ( dev-ruby/diff-lcs[ruby_targets_ruby20] ) doc? ( dev-ruby/rdoc[ruby_targets_ruby20] ) ldap? ( dev-ruby/ruby-ldap[ruby_targets_ruby20] ) shadow? ( dev-ruby/ruby-shadow[ruby_targets_ruby20] ) sqlite3? ( dev-ruby/sqlite3[ruby_targets_ruby20] ) virtual/ruby-ssl[ruby_targets_ruby20] ) ruby_targets_ruby19? ( dev-lang/ruby:1.9[yaml] ) rrdtool? ( >=net-analyzer/rrdtool-1.2.23[ruby] ) selinux? ( sys-libs/libselinux[ruby] sec-policy/selinux-puppet ) vim-syntax? ( >=app-vim/puppet-syntax-3.0.1 ) >=app-portage/eix-0.18.0 ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 )
|
||||
SLOT=0
|
||||
SRC_URI=http://www.puppetlabs.com/downloads/puppet/puppet-3.7.4.tar.gz
|
||||
_eclasses_=elisp-common 1aa23b3de5dae55456fa2071428eb5bf eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac user f54e098dd38ba1c0847a13e685b87747 versionator cd0bcdb170807e4a1984115e9d53a26f xemacs-elisp-common 81f5b5356f3397c277e83736c42256b5
|
||||
_md5_=de6898b10616ca0322e02e4926b16db1
|
@ -0,0 +1,13 @@
|
||||
DEFINED_PHASES=compile configure install prepare test
|
||||
DEPEND=!minimal? ( >=sys-libs/ncurses-5.7-r7 cddb? ( >=media-libs/libcddb-1.3.2 ) ) >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] ) sys-apps/sed sys-devel/gettext virtual/pkgconfig test? ( dev-lang/perl )
|
||||
DESCRIPTION=A library to encapsulate CD-ROM reading and control
|
||||
EAPI=5
|
||||
HOMEPAGE=http://www.gnu.org/software/libcdio/
|
||||
IUSE=cddb +cxx minimal static-libs test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64
|
||||
KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris
|
||||
LICENSE=GPL-3
|
||||
RDEPEND=!minimal? ( >=sys-libs/ncurses-5.7-r7 cddb? ( >=media-libs/libcddb-1.3.2 ) ) >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )
|
||||
SLOT=0/15
|
||||
SRC_URI=mirror://gnu/libcdio/libcdio-0.93.tar.gz
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 libtool 52d0e17251d04645ffaa61bfdd858944 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multilib-build 0983c7893df461213a05f791cc7dea6d multilib-minimal 13dd976916c35a1e2c8d170e840c7018 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=a2d5e1e73a16d2b22c3f1d46e1eb7104
|
@ -0,0 +1,13 @@
|
||||
DEFINED_PHASES=compile configure install postinst postrm prepare test
|
||||
DEPEND=app-admin/eselect-cdparanoia >=dev-libs/libcdio-0.93[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] ) sys-devel/gettext virtual/pkgconfig test? ( dev-lang/perl ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.13:1.13 >=sys-devel/automake-1.15:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
|
||||
DESCRIPTION=an advanced CDDA reader with error correction
|
||||
EAPI=5
|
||||
HOMEPAGE=http://www.gnu.org/software/libcdio/
|
||||
IUSE=+cxx static-libs test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64
|
||||
KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x86-solaris
|
||||
LICENSE=GPL-3+ GPL-2+ LGPL-2.1
|
||||
RDEPEND=app-admin/eselect-cdparanoia >=dev-libs/libcdio-0.93[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !<=app-emulation/emul-linux-x86-medialibs-20130224-r10 !app-emulation/emul-linux-x86-medialibs[-abi_x86_32(-)] )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://gnu/libcdio/libcdio-paranoia-10.2+0.93+1.tar.gz
|
||||
_eclasses_=autotools 8fc2dd333ef9346c906ffd9a523d8211 autotools-multilib 037c4046d25f29e78dd44dccabd5d66b autotools-utils 3727db64c7b960903d5033280f108080 eutils 998e5931fb95b10a6a11ec796ada2759 libtool 52d0e17251d04645ffaa61bfdd858944 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multilib-build 0983c7893df461213a05f791cc7dea6d multilib-minimal 13dd976916c35a1e2c8d170e840c7018 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=f7326c655f2cdf11742c1e109c1d9204
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare test
|
||||
DEPEND=dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_3(-)?,python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_7(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),-python_single_target_pypy(-)] test? ( dev-python/six[python_targets_python2_7(-)?,python_targets_python3_3(-)?,python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_7(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),-python_single_target_pypy(-)] dev-python/pytest[python_targets_python2_7(-)?,python_targets_python3_3(-)?,python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_7(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),-python_single_target_pypy(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_3? ( >=dev-lang/python-3.3.2-r2:3.3 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_pypy? ( virtual/pypy:0= ) dev-lang/python-exec:=[python_targets_python2_7(-)?,python_targets_python3_3(-)?,python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_7(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),-python_single_target_pypy(-)]
|
||||
DESCRIPTION=MessagePack (de)serializer for Python
|
||||
EAPI=5
|
||||
HOMEPAGE=http://msgpack.org https://github.com/msgpack/msgpack-python/ https://pypi.python.org/pypi/msgpack-python/
|
||||
IUSE=test python_targets_python2_7 python_targets_python3_3 python_targets_python3_4 python_targets_pypy
|
||||
KEYWORDS=~amd64 ~arm ~x86
|
||||
LICENSE=Apache-2.0
|
||||
RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_3? ( >=dev-lang/python-3.3.2-r2:3.3 ) python_targets_python3_4? ( dev-lang/python:3.4 ) python_targets_pypy? ( virtual/pypy:0= ) dev-lang/python-exec:=[python_targets_python2_7(-)?,python_targets_python3_3(-)?,python_targets_python3_4(-)?,python_targets_pypy(-)?,-python_single_target_python2_7(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),-python_single_target_pypy(-)]
|
||||
REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_3 python_targets_python3_4 python_targets_pypy )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://pypi/m/msgpack-python/msgpack-python-0.4.5.tar.gz
|
||||
_eclasses_=distutils-r1 5cf77567a87c3a6f59d6a51848ebde98 eutils 998e5931fb95b10a6a11ec796ada2759 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multiprocessing d7f2985a2c76c365ee20269db5261414 python-r1 236a8d81f730332749bd484d8b53ee91 python-utils-r1 7d5f4ad9ba85664d8c5f56041a70f4c3 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=300024f8967ac42aa92b06c50af52c53
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare test
|
||||
DEPEND=dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/versiontools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] test? ( dev-python/mock[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
|
||||
DESCRIPTION=A Python API for interacting with a Chef server
|
||||
EAPI=5
|
||||
HOMEPAGE=https://github.com/coderanger/pychef
|
||||
IUSE=test python_targets_python2_7
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=BSD
|
||||
RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
|
||||
REQUIRED_USE=|| ( python_targets_python2_7 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://pypi/P/PyChef/PyChef-0.2.3.tar.gz
|
||||
_eclasses_=distutils-r1 5cf77567a87c3a6f59d6a51848ebde98 eutils 998e5931fb95b10a6a11ec796ada2759 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multiprocessing d7f2985a2c76c365ee20269db5261414 python-r1 236a8d81f730332749bd484d8b53ee91 python-utils-r1 7d5f4ad9ba85664d8c5f56041a70f4c3 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=088e28d318b4483baf1e01d13e5fc7b5
|
@ -1,14 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare setup test unpack
|
||||
DEPEND=test? ( ruby_targets_ruby19? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby19] dev-ruby/eventmachine[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby20] dev-ruby/eventmachine[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( test? ( dev-ruby/evented-spec[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/evented-spec[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby19? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby19] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby20] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby20] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) )
|
||||
DEPEND=test? ( ruby_targets_ruby19? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby19] dev-ruby/eventmachine[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby20] dev-ruby/eventmachine[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby21] dev-ruby/eventmachine[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( test? ( dev-ruby/evented-spec[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/evented-spec[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/evented-spec[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby19] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby20] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/rspec:2[ruby_targets_ruby21] >=dev-ruby/rspec-core-2.14.8-r2[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) )
|
||||
DESCRIPTION=A fully-featured, low-level AMQP 0.9.1 client
|
||||
EAPI=5
|
||||
HOMEPAGE=http://github.com/ruby-amqp/amq-client
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 test test
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 test test
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=MIT
|
||||
RDEPEND=ruby_targets_ruby19? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby19] dev-ruby/eventmachine[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby20] dev-ruby/eventmachine[ruby_targets_ruby20] ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 )
|
||||
RDEPEND=ruby_targets_ruby19? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby19] dev-ruby/eventmachine[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby20] dev-ruby/eventmachine[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/amq-protocol-1.2.0[ruby_targets_ruby21] dev-ruby/eventmachine[ruby_targets_ruby21] ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://rubygems/amq-client-1.0.4.gem
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=79b00ecc32b9d341af080faadd09732a
|
||||
_md5_=be4b8bb318fd4a98102c8740eac571e7
|
||||
|
@ -1,14 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare setup test unpack
|
||||
DEPEND=test? ( ruby_targets_ruby19? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) )
|
||||
DEPEND=test? ( ruby_targets_ruby19? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby21] ) ruby_targets_ruby22? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby22] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby21] ) ) ruby_targets_ruby22? ( doc? ( dev-ruby/rdoc[ruby_targets_ruby22] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) )
|
||||
DESCRIPTION=Like your annoying friend that asks you questions all the time
|
||||
EAPI=5
|
||||
HOMEPAGE=http://solutious.com/
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 doc test
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 doc test
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=MIT
|
||||
RDEPEND=ruby_targets_ruby19? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby21] ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 )
|
||||
RDEPEND=ruby_targets_ruby19? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby19] ) ruby_targets_ruby20? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby20] ) ruby_targets_ruby21? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby21] ) ruby_targets_ruby22? ( >=dev-ruby/highline-1.5.0[ruby_targets_ruby22] ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://rubygems/annoy-0.5.6.gem
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=02e06cf2003174e9e48d60b71be1c595
|
||||
_md5_=5f24de99f81b021b84e3f7ee1fcfa072
|
||||
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare setup test unpack
|
||||
DEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( test? ( dev-ruby/rspec:3[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rspec:3[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/rspec:3[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) )
|
||||
DESCRIPTION=An easy way to keep your users' passwords secure
|
||||
EAPI=5
|
||||
HOMEPAGE=https://github.com/codahale/bcrypt-ruby
|
||||
IUSE=elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 test test
|
||||
KEYWORDS=~amd64 ~arm ~ppc ~ppc64 ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris
|
||||
LICENSE=MIT
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://rubygems/bcrypt-3.1.10.gem
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=d1cce3f5a627d313376cd058ae90fa67
|
@ -1,14 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare setup test unpack
|
||||
DEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) )
|
||||
DEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) )
|
||||
DESCRIPTION=Ruby CoffeeScript is a bridge to the official CoffeeScript compiler
|
||||
EAPI=5
|
||||
HOMEPAGE=http://jashkenas.github.io/coffee-script/
|
||||
IUSE=elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 test
|
||||
IUSE=elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 test
|
||||
KEYWORDS=~amd64 ~arm ~ppc ~ppc64 ~x86 ~x64-macos ~x86-solaris
|
||||
LICENSE=MIT
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 )
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://rubygems/coffee-script-source-1.8.0.gem
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=c93c413cceb1c8dd5286d21447cb3606
|
||||
_md5_=a50eed0880d1b145f0620f439f4e53fe
|
||||
|
@ -1,14 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install prepare setup test unpack
|
||||
DEPEND=ruby_targets_ruby19? ( test? ( dev-ruby/minitest[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/minitest[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/minitest[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( test? ( dev-ruby/rake[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rake[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/rake[ruby_targets_ruby21] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) )
|
||||
DEPEND=ruby_targets_ruby19? ( test? ( dev-ruby/minitest[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/minitest[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/minitest[ruby_targets_ruby21] ) ) ruby_targets_ruby22? ( test? ( dev-ruby/minitest[ruby_targets_ruby22] ) ) ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( test? ( dev-ruby/rake[ruby_targets_ruby19] ) ) ruby_targets_ruby20? ( test? ( dev-ruby/rake[ruby_targets_ruby20] ) ) ruby_targets_ruby21? ( test? ( dev-ruby/rake[ruby_targets_ruby21] ) ) ruby_targets_ruby22? ( test? ( dev-ruby/rake[ruby_targets_ruby22] ) ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) test? ( ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] ) )
|
||||
DESCRIPTION=Hike is a Ruby library for finding files in a set of paths
|
||||
EAPI=5
|
||||
HOMEPAGE=https://github.com/sstephenson/hike
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 test test
|
||||
IUSE=test elibc_FreeBSD ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 test test
|
||||
KEYWORDS=~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris
|
||||
LICENSE=MIT
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 )
|
||||
RDEPEND=ruby_targets_ruby19? ( dev-lang/ruby:1.9 ) ruby_targets_ruby20? ( dev-lang/ruby:2.0 ) ruby_targets_ruby21? ( dev-lang/ruby:2.1 ) ruby_targets_ruby22? ( dev-lang/ruby:2.2 ) ruby_targets_ruby19? ( virtual/rubygems[ruby_targets_ruby19] ) ruby_targets_ruby20? ( virtual/rubygems[ruby_targets_ruby20] ) ruby_targets_ruby21? ( virtual/rubygems[ruby_targets_ruby21] ) ruby_targets_ruby22? ( virtual/rubygems[ruby_targets_ruby22] )
|
||||
REQUIRED_USE=|| ( ruby_targets_ruby19 ruby_targets_ruby20 ruby_targets_ruby21 ruby_targets_ruby22 )
|
||||
SLOT=2
|
||||
SRC_URI=https://github.com/sstephenson/hike/archive/v2.1.2.tar.gz -> hike-2.1.2.tgz
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 java-utils-2 f02d3e4777b404c719a5a6479c37c6e3 multilib 3bf24e6abb9b76d9f6c20600f0b716bf ruby-fakegem d4f8591e9b20b106327e9d143eb13da5 ruby-ng c79a9fd7644eefe8009be02a82648e1f toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=944054692fe726c4a62a89f2bb64ffff
|
||||
_md5_=3bde3c6306e3becc95b90a30e8dbb109
|
||||
|
@ -0,0 +1,13 @@
|
||||
DEFINED_PHASES=compile configure install prepare test
|
||||
DEPEND=>=virtual/glu-9.0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=virtual/opengl-7.0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXi-1.7.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXmu-1.1.1-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !app-emulation/emul-linux-x86-opengl[-abi_x86_32(-)] )
|
||||
DESCRIPTION=The OpenGL Extension Wrangler Library
|
||||
EAPI=5
|
||||
HOMEPAGE=http://glew.sourceforge.net/
|
||||
IUSE=doc static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64
|
||||
KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris
|
||||
LICENSE=BSD MIT
|
||||
RDEPEND=>=virtual/glu-9.0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=virtual/opengl-7.0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXi-1.7.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >=x11-libs/libXmu-1.1.1-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?] abi_x86_32? ( !app-emulation/emul-linux-x86-opengl[-abi_x86_32(-)] )
|
||||
SLOT=0/1.12
|
||||
SRC_URI=mirror://sourceforge/glew/glew-1.12.0.tgz
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multilib-build 0983c7893df461213a05f791cc7dea6d multilib-minimal 13dd976916c35a1e2c8d170e840c7018 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=03c8c45a34331938ecd6859ce92d6a51
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,14 +0,0 @@
|
||||
DEFINED_PHASES=compile configure install postinst prepare setup test
|
||||
DEPEND=dev-util/cmake dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-libs/openssl >=dev-libs/boost-1.41 sys-devel/bison >=sys-devel/flex-2.5.35 mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) apache2? ( =www-servers/apache-2* ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] sys-devel/make >=dev-util/cmake-2.8.12 userland_GNU? ( >=sys-apps/findutils-4.4.0 ) virtual/pkgconfig
|
||||
DESCRIPTION=Distributed, general purpose, network monitoring engine
|
||||
EAPI=5
|
||||
HOMEPAGE=http://icinga.org/icinga2
|
||||
IUSE=+mysql postgres classicui nano-syntax +plugins +vim-syntax apache2 python_targets_python2_7
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=GPL-2
|
||||
RDEPEND=dev-util/cmake dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-libs/openssl >=dev-libs/boost-1.41 sys-devel/bison >=sys-devel/flex-2.5.35 mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) plugins? ( net-analyzer/nagios-plugins ) classicui? ( net-analyzer/icinga[web] ) apache2? ( =www-servers/apache-2* ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
|
||||
REQUIRED_USE=|| ( mysql postgres ) || ( python_targets_python2_7 )
|
||||
SLOT=0
|
||||
SRC_URI=http://github.com/Icinga/icinga2/archive/v2.2.3.tar.gz -> icinga2-2.2.3.tar.gz
|
||||
_eclasses_=cmake-utils 0e29eadbd656185bce30d2449ab48035 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd distutils-r1 5cf77567a87c3a6f59d6a51848ebde98 eutils 998e5931fb95b10a6a11ec796ada2759 flag-o-matic c263990f1b677b0f0be0a3299f179762 multibuild 6d4858dc00f8bc51caf3f957f8430eb0 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multiprocessing d7f2985a2c76c365ee20269db5261414 python-r1 236a8d81f730332749bd484d8b53ee91 python-utils-r1 7d5f4ad9ba85664d8c5f56041a70f4c3 systemd 090342761f573a8280dd5aa6b0345f3b toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac user f54e098dd38ba1c0847a13e685b87747 versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=2de9d97607a6e0792facf4f9d70716bb
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile configure install postinst prepare setup test
|
||||
DEPEND=dev-util/cmake dev-libs/openssl >=dev-libs/boost-1.41 sys-devel/bison >=sys-devel/flex-2.5.35 mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) apache2? ( =www-servers/apache-2* ) sys-devel/make >=dev-util/cmake-2.8.12 userland_GNU? ( >=sys-apps/findutils-4.4.0 ) virtual/pkgconfig
|
||||
DESCRIPTION=Distributed, general purpose, network monitoring engine
|
||||
EAPI=5
|
||||
HOMEPAGE=http://icinga.org/icinga2
|
||||
IUSE=+mysql postgres classicui nano-syntax +plugins +vim-syntax apache2
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=GPL-2
|
||||
RDEPEND=dev-util/cmake dev-libs/openssl >=dev-libs/boost-1.41 sys-devel/bison >=sys-devel/flex-2.5.35 mysql? ( virtual/mysql ) postgres? ( dev-db/postgresql ) plugins? ( net-analyzer/nagios-plugins ) classicui? ( net-analyzer/icinga[web] ) apache2? ( =www-servers/apache-2* )
|
||||
REQUIRED_USE=|| ( mysql postgres )
|
||||
SLOT=0
|
||||
SRC_URI=http://github.com/Icinga/icinga2/archive/v2.2.3.tar.gz -> icinga2-2.2.3.tar.gz
|
||||
_eclasses_=cmake-utils 0e29eadbd656185bce30d2449ab48035 depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd eutils 998e5931fb95b10a6a11ec796ada2759 flag-o-matic c263990f1b677b0f0be0a3299f179762 multilib 3bf24e6abb9b76d9f6c20600f0b716bf systemd 090342761f573a8280dd5aa6b0345f3b toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac user f54e098dd38ba1c0847a13e685b87747 versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=7cf7821144cd961abf9b59a3cfe66fe8
|
@ -0,0 +1,11 @@
|
||||
DEFINED_PHASES=prepare
|
||||
DEPEND=>=sys-kernel/linux-headers-2.6.39
|
||||
DESCRIPTION=Utilities for TIPC (Transparent Inter-Process Communication)
|
||||
EAPI=5
|
||||
HOMEPAGE=http://tipc.sourceforge.net
|
||||
KEYWORDS=~amd64 ~x86
|
||||
LICENSE=|| ( BSD-2 GPL-2 )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://sourceforge/tipc/tipcutils-2.0.3.tar.gz
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 multilib 3bf24e6abb9b76d9f6c20600f0b716bf toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=d0ee1ad809daa521428d24541c70ae2c
|
@ -0,0 +1,14 @@
|
||||
DEFINED_PHASES=compile install prepare setup test
|
||||
DEPEND=>=dev-lang/python-2.7.5-r2:2.7 dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/Numdifftools[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/matplotlib[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/numpy[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/wxpython:2.9[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-chemistry/molmol sci-chemistry/pymol[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-chemistry/vmd >=sci-libs/bmrblib-1.0.3[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] >=sci-libs/minfx-1.0.11[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-libs/scipy[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-visualization/grace sci-visualization/opendx x11-libs/wxGTK:2.9[X] media-gfx/pngcrush dev-util/scons test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost )
|
||||
DESCRIPTION=Molecular dynamics by NMR data analysis
|
||||
EAPI=5
|
||||
HOMEPAGE=http://www.nmr-relax.com/
|
||||
IUSE=python_targets_python2_7 test
|
||||
KEYWORDS=~amd64 ~x86 ~amd64-linux ~x86-linux
|
||||
LICENSE=GPL-2
|
||||
RDEPEND=>=dev-lang/python-2.7.5-r2:2.7 dev-lang/python-exec:=[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/Numdifftools[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/matplotlib[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/numpy[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] dev-python/wxpython:2.9[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-chemistry/molmol sci-chemistry/pymol[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-chemistry/vmd >=sci-libs/bmrblib-1.0.3[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] >=sci-libs/minfx-1.0.11[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-libs/scipy[python_targets_python2_7(-)?,-python_single_target_jython2_5(-),-python_single_target_jython2_7(-),-python_single_target_pypy(-),-python_single_target_pypy3(-),-python_single_target_python3_3(-),-python_single_target_python3_4(-),python_single_target_python2_7(+)] sci-visualization/grace sci-visualization/opendx x11-libs/wxGTK:2.9[X]
|
||||
REQUIRED_USE=python_targets_python2_7
|
||||
SLOT=0
|
||||
SRC_URI=http://download.gna.org/relax/relax-3.3.5.src.tar.bz2
|
||||
_eclasses_=eutils 998e5931fb95b10a6a11ec796ada2759 multilib 3bf24e6abb9b76d9f6c20600f0b716bf multiprocessing d7f2985a2c76c365ee20269db5261414 python-single-r1 ed2ee20dc74a34be60f5b1b500e92a5b python-utils-r1 7d5f4ad9ba85664d8c5f56041a70f4c3 scons-utils 988e24b9e2e4642189b4e97c03e5ae71 toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac virtualx 73cfc129b4b9ba23aed1abb10c825d86 wxwidgets 6d6eec2685256d35511e7b6d5461bec9
|
||||
_md5_=cb414e5bb990fabff0ab5edd6911e41f
|
@ -0,0 +1,13 @@
|
||||
DEFINED_PHASES=compile install prepare
|
||||
DEPEND=doc? ( dev-lang/perl >=app-text/docbook2X-0.8.8-r2 app-text/docbook-xml-dtd:4.4 )
|
||||
DESCRIPTION=a growing collection of the unix tools that nobody thought to write thirty years ago
|
||||
EAPI=5
|
||||
HOMEPAGE=http://joeyh.name/code/moreutils/
|
||||
IUSE=+doc +perl
|
||||
KEYWORDS=~alpha ~amd64 ~hppa ~ppc ~ppc64 ~x86 ~x86-linux
|
||||
LICENSE=GPL-2
|
||||
RDEPEND=perl? ( dev-lang/perl dev-perl/IPC-Run dev-perl/Time-Duration dev-perl/TimeDate )
|
||||
SLOT=0
|
||||
SRC_URI=mirror://debian/pool/main/m/moreutils/moreutils_0.55.orig.tar.gz
|
||||
_eclasses_=multilib 3bf24e6abb9b76d9f6c20600f0b716bf toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac
|
||||
_md5_=3a45567338ace70f0789c0dcf7d7b665
|
@ -0,0 +1,13 @@
|
||||
DEFINED_PHASES=configure install prepare setup
|
||||
DEPEND=!<sys-apps/util-linux-2.20.1-r2 !sys-fs/ntfsprogs ntfsdecrypt? ( >=dev-libs/libgcrypt-1.2.2:0 >=net-libs/gnutls-1.4.4 ) external-fuse? ( >=sys-fs/fuse-2.8.0 ) sys-apps/attr virtual/pkgconfig virtual/pkgconfig !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.13:1.13 >=sys-devel/automake-1.15:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
|
||||
DESCRIPTION=Open source read-write NTFS driver that runs under FUSE
|
||||
EAPI=5
|
||||
HOMEPAGE=http://www.tuxera.com/community/ntfs-3g-download/
|
||||
IUSE=acl debug +external-fuse ntfsdecrypt +ntfsprogs static-libs suid xattr
|
||||
KEYWORDS=~alpha ~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux
|
||||
LICENSE=GPL-2
|
||||
RDEPEND=!<sys-apps/util-linux-2.20.1-r2 !sys-fs/ntfsprogs ntfsdecrypt? ( >=dev-libs/libgcrypt-1.2.2:0 >=net-libs/gnutls-1.4.4 ) external-fuse? ( >=sys-fs/fuse-2.8.0 )
|
||||
SLOT=0
|
||||
SRC_URI=http://tuxera.com/opensource/ntfs-3g_ntfsprogs-2014.2.15.tgz
|
||||
_eclasses_=autotools 8fc2dd333ef9346c906ffd9a523d8211 eutils 998e5931fb95b10a6a11ec796ada2759 libtool 52d0e17251d04645ffaa61bfdd858944 linux-info 2b8c53f6065bdee2d757472215a3088f multilib 3bf24e6abb9b76d9f6c20600f0b716bf toolchain-funcs 0dfbfa13f57c6184f4728d12ac002aac udev da001465a2e939c93f7ae16947ce3438 versionator cd0bcdb170807e4a1984115e9d53a26f
|
||||
_md5_=d23312e618788142d10c0b5d039ca141
|
@ -1 +1 @@
|
||||
Thu, 29 Jan 2015 05:36:55 +0000
|
||||
Thu, 29 Jan 2015 09:06:53 +0000
|
||||
|
@ -1 +1 @@
|
||||
Thu Jan 29 05:06:51 UTC 2015
|
||||
Thu Jan 29 09:06:50 UTC 2015
|
||||
|
@ -1 +1 @@
|
||||
Thu, 29 Jan 2015 05:30:01 +0000
|
||||
Thu, 29 Jan 2015 09:30:01 +0000
|
||||
|
@ -1 +1 @@
|
||||
1422507901 Thu 29 Jan 2015 05:05:01 AM UTC UTC
|
||||
1422522301 Thu 29 Jan 2015 09:05:01 AM UTC UTC
|
||||
|
@ -1,7 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<herd>proxy-maintainers</herd>
|
||||
<maintainer>
|
||||
<email>maintainer-needed@gentoo.org</email>
|
||||
<email>tokiclover@gmail.com</email>
|
||||
<description>Maintainer. Assign bugs on him</description>
|
||||
</maintainer>
|
||||
<upstream>
|
||||
<remote-id type="sourceforge">tipc</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
||||
|
@ -0,0 +1,23 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/net-misc/tipcutils/tipcutils-2.0.3.ebuild,v 1.1 2015/01/29 08:53:26 pinkbyte Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
inherit eutils
|
||||
|
||||
DESCRIPTION="Utilities for TIPC (Transparent Inter-Process Communication)"
|
||||
HOMEPAGE="http://tipc.sourceforge.net"
|
||||
SRC_URI="mirror://sourceforge/tipc/${P}.tar.gz"
|
||||
|
||||
LICENSE="|| ( BSD-2 GPL-2 )"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
|
||||
DEPEND=">=sys-kernel/linux-headers-2.6.39"
|
||||
|
||||
DOCS=( README )
|
||||
|
||||
src_prepare() {
|
||||
epatch_user
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sci-chemistry/relax/relax-3.3.5.ebuild,v 1.1 2015/01/29 07:53:47 jlec Exp $
|
||||
|
||||
EAPI=5
|
||||
|
||||
PYTHON_COMPAT=( python2_7 )
|
||||
|
||||
WX_GTK_VER="2.9"
|
||||
|
||||
inherit eutils multiprocessing python-single-r1 scons-utils toolchain-funcs wxwidgets virtualx
|
||||
|
||||
DESCRIPTION="Molecular dynamics by NMR data analysis"
|
||||
HOMEPAGE="http://www.nmr-relax.com/"
|
||||
SRC_URI="http://download.gna.org/relax/${P}.src.tar.bz2"
|
||||
|
||||
SLOT="0"
|
||||
LICENSE="GPL-2"
|
||||
KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
|
||||
IUSE=""
|
||||
|
||||
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
|
||||
|
||||
RDEPEND="
|
||||
${PYTHON_DEPS}
|
||||
dev-python/Numdifftools[${PYTHON_USEDEP}]
|
||||
dev-python/matplotlib[${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/wxpython:${WX_GTK_VER}[${PYTHON_USEDEP}]
|
||||
sci-chemistry/molmol
|
||||
sci-chemistry/pymol[${PYTHON_USEDEP}]
|
||||
sci-chemistry/vmd
|
||||
>=sci-libs/bmrblib-1.0.3[${PYTHON_USEDEP}]
|
||||
>=sci-libs/minfx-1.0.11[${PYTHON_USEDEP}]
|
||||
sci-libs/scipy[${PYTHON_USEDEP}]
|
||||
sci-visualization/grace
|
||||
sci-visualization/opendx
|
||||
x11-libs/wxGTK:${WX_GTK_VER}[X]"
|
||||
DEPEND="${RDEPEND}
|
||||
media-gfx/pngcrush"
|
||||
|
||||
pkg_setup() {
|
||||
python-single-r1_pkg_setup
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
rm -rf minfx bmrblib extern/numdifftools || die
|
||||
tc-export CC
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
escons
|
||||
}
|
||||
|
||||
src_test() {
|
||||
VIRTUALX_COMMAND="${EPYTHON} ./${PN}.py -x --traceback"
|
||||
virtualmake
|
||||
}
|
||||
|
||||
src_install() {
|
||||
dodoc README docs/{CHANGES,COMMITTERS,JOBS,relax.pdf}
|
||||
|
||||
python_moduleinto ${PN}
|
||||
python_domodule *
|
||||
|
||||
rm ${PN} README || die
|
||||
|
||||
make_wrapper ${PN}-nmr "${EPYTHON} $(python_get_sitedir)/${PN}/${PN}.py $@"
|
||||
}
|
@ -0,0 +1,56 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-apps/moreutils/moreutils-0.55.ebuild,v 1.1 2015/01/29 06:40:31 radhermit Exp $
|
||||
|
||||
EAPI=5
|
||||
inherit toolchain-funcs
|
||||
|
||||
DESCRIPTION="a growing collection of the unix tools that nobody thought to write thirty years ago"
|
||||
HOMEPAGE="http://joeyh.name/code/moreutils/"
|
||||
SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}.orig.tar.gz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~ppc64 ~x86 ~x86-linux"
|
||||
IUSE="+doc +perl"
|
||||
|
||||
RDEPEND="
|
||||
perl? (
|
||||
dev-lang/perl
|
||||
dev-perl/IPC-Run
|
||||
dev-perl/Time-Duration
|
||||
dev-perl/TimeDate
|
||||
)"
|
||||
DEPEND="
|
||||
doc? (
|
||||
dev-lang/perl
|
||||
>=app-text/docbook2X-0.8.8-r2
|
||||
app-text/docbook-xml-dtd:4.4
|
||||
)"
|
||||
|
||||
src_prepare() {
|
||||
# don't build manpages
|
||||
if ! use doc ; then
|
||||
sed -i -e '/^all:/s/$(MANS)//' -e '/man1/d' Makefile || die
|
||||
fi
|
||||
|
||||
# don't install perl scripts
|
||||
if ! use perl ; then
|
||||
sed -i -e '/PERLSCRIPTS/d' Makefile || die
|
||||
fi
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
tc-export CC
|
||||
emake CFLAGS="${CFLAGS}" DOCBOOK2XMAN=docbook2man.pl PREFIX="${EPREFIX}/usr"
|
||||
}
|
||||
|
||||
src_install() {
|
||||
emake DESTDIR="${D}" PREFIX="${EPREFIX}/usr" INSTALL_BIN=install install
|
||||
|
||||
# sys-process is more advanced than parallel from moreutils, rename it
|
||||
if use doc; then
|
||||
mv "${ED}"usr/share/man/man1/{,${PN}_}parallel.1 || die
|
||||
fi
|
||||
mv "${ED}"usr/bin/{,${PN}_}parallel || die
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15.orig/ntfsprogs/Makefile.am ntfs-3g_ntfsprogs-2014.2.15/ntfsprogs/Makefile.am
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.orig/ntfsprogs/Makefile.am 2015-01-29 00:12:51.786936314 -0800
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/ntfsprogs/Makefile.am 2015-01-29 00:13:59.156442369 -0800
|
||||
@@ -140,8 +140,7 @@
|
||||
# mkfs.ntfs[.8] hard link
|
||||
|
||||
install-exec-hook:
|
||||
- $(INSTALL) -d $(DESTDIR)/sbin
|
||||
- $(LN_S) -f $(sbindir)/mkntfs $(DESTDIR)/sbin/mkfs.ntfs
|
||||
+ $(LN_S) -f mkntfs $(DESTDIR)/$(sbindir)/mkfs.ntfs
|
||||
|
||||
install-data-hook:
|
||||
$(INSTALL) -d $(DESTDIR)$(man8dir)
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15.orig/src/Makefile.am ntfs-3g_ntfsprogs-2014.2.15/src/Makefile.am
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.orig/src/Makefile.am 2015-01-29 00:12:51.789936248 -0800
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/src/Makefile.am 2015-01-29 00:14:00.570411008 -0800
|
||||
@@ -68,9 +68,8 @@
|
||||
|
||||
if ENABLE_MOUNT_HELPER
|
||||
install-exec-local: install-rootbinPROGRAMS
|
||||
- $(MKDIR_P) "$(DESTDIR)/sbin"
|
||||
- $(LN_S) -f "$(rootbindir)/ntfs-3g" "$(DESTDIR)/sbin/mount.ntfs-3g"
|
||||
- $(LN_S) -f "$(rootbindir)/lowntfs-3g" "$(DESTDIR)/sbin/mount.lowntfs-3g"
|
||||
+ $(LN_S) -f "../bin/ntfs-3g" "$(DESTDIR)/$(sbindir)/mount.ntfs-3g"
|
||||
+ $(LN_S) -f "../bin/lowntfs-3g" "$(DESTDIR)/$(sbindir)/mount.lowntfs-3g"
|
||||
endif
|
||||
|
||||
install-data-local: install-man8
|
||||
@@ -80,7 +79,7 @@
|
||||
uninstall-local:
|
||||
$(RM) -f "$(DESTDIR)$(man8dir)/mount.ntfs-3g.8"
|
||||
if ENABLE_MOUNT_HELPER
|
||||
- $(RM) -f "$(DESTDIR)/sbin/mount.ntfs-3g" "$(DESTDIR)/sbin/mount.lowntfs-3g"
|
||||
+ $(RM) -f "$(DESTDIR)/$(sbindir)/mount.ntfs-3g" "$(DESTDIR)/$(sbindir)/mount.lowntfs-3g"
|
||||
endif
|
||||
|
||||
endif # ENABLE_NTFS_3G
|
@ -0,0 +1,217 @@
|
||||
From c26a519da1ed182e7cfd67e7a353932dda53d811 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= <jpandre@users.sourceforge.net>
|
||||
Date: Mon, 4 Aug 2014 17:39:50 +0200
|
||||
Subject: [PATCH] Fixed fstrim(8) applied to partitions
|
||||
|
||||
The new way goes via /sys/dev/block/MAJOR:MINOR to map partitions to
|
||||
devices and get discard parameters of the parent device. It also ensures
|
||||
that the partition is aligned to the discard block size.
|
||||
|
||||
Contributed by Richard W.M. Jones
|
||||
---
|
||||
libntfs-3g/ioctl.c | 140 ++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 68 insertions(+), 72 deletions(-)
|
||||
|
||||
diff --git a/libntfs-3g/ioctl.c b/libntfs-3g/ioctl.c
|
||||
index bbbceb9..eb7c8e7 100644
|
||||
--- a/libntfs-3g/ioctl.c
|
||||
+++ b/libntfs-3g/ioctl.c
|
||||
@@ -66,8 +66,6 @@
|
||||
#include <linux/fs.h>
|
||||
#endif
|
||||
|
||||
-#include <dirent.h>
|
||||
-
|
||||
#include "compat.h"
|
||||
#include "debug.h"
|
||||
#include "bitmap.h"
|
||||
@@ -135,17 +133,14 @@ static int read_u64(const char *path, u64 *n)
|
||||
}
|
||||
|
||||
/* Find discard limits for current backing device.
|
||||
- * XXX Kernel makes this a pain in the neck.
|
||||
*/
|
||||
-static int fstrim_limits(ntfs_volume *vol, u64 *discard_granularity,
|
||||
+static int fstrim_limits(ntfs_volume *vol,
|
||||
+ u64 *discard_alignment,
|
||||
+ u64 *discard_granularity,
|
||||
u64 *discard_max_bytes)
|
||||
{
|
||||
struct stat statbuf;
|
||||
- DIR *dir;
|
||||
- struct dirent *d;
|
||||
- char path[80];
|
||||
- char line[64];
|
||||
- char dev[64];
|
||||
+ char path1[80], path2[80];
|
||||
int ret;
|
||||
|
||||
/* Stat the backing device. Caller has ensured it is a block device. */
|
||||
@@ -155,82 +150,78 @@ static int fstrim_limits(ntfs_volume *vol, u64 *discard_granularity,
|
||||
return -errno;
|
||||
}
|
||||
|
||||
- /* Now look for a /sys/block/<dev>/dev file which contains
|
||||
- * "major:minor\n".
|
||||
+ /* For whole devices,
|
||||
+ * /sys/dev/block/MAJOR:MINOR/discard_alignment
|
||||
+ * /sys/dev/block/MAJOR:MINOR/queue/discard_granularity
|
||||
+ * /sys/dev/block/MAJOR:MINOR/queue/discard_max_bytes
|
||||
+ * will exist.
|
||||
+ * For partitions, we also need to check the parent device:
|
||||
+ * /sys/dev/block/MAJOR:MINOR/../queue/discard_granularity
|
||||
+ * /sys/dev/block/MAJOR:MINOR/../queue/discard_max_bytes
|
||||
*/
|
||||
- snprintf(dev, sizeof dev, "%d:%d\n",
|
||||
+ snprintf(path1, sizeof path1, "/sys/dev/block/%d:%d",
|
||||
major(statbuf.st_rdev), minor(statbuf.st_rdev));
|
||||
|
||||
- dir = opendir("/sys/block");
|
||||
- if (dir == NULL) {
|
||||
- ntfs_log_debug("fstrim_limits: could not open /sys/block\n");
|
||||
- return -errno;
|
||||
+ snprintf(path2, sizeof path2, "%s/discard_alignment", path1);
|
||||
+ ret = read_u64(path2, discard_alignment);
|
||||
+ if (ret) {
|
||||
+ if (ret != -ENOENT)
|
||||
+ return ret;
|
||||
+ else
|
||||
+ /* We would expect this file to exist on all
|
||||
+ * modern kernels. But for the sake of very
|
||||
+ * old kernels:
|
||||
+ */
|
||||
+ goto not_found;
|
||||
}
|
||||
- for (;;) {
|
||||
- errno = 0;
|
||||
- d = readdir(dir);
|
||||
- if (!d) break;
|
||||
|
||||
- snprintf(path, sizeof path, "/sys/block/%s/dev", d->d_name);
|
||||
- ret = read_line(path, line, sizeof line);
|
||||
- if (ret)
|
||||
- continue;
|
||||
- if (strcmp(line, dev) == 0)
|
||||
- goto found;
|
||||
+ snprintf(path2, sizeof path2, "%s/queue/discard_granularity", path1);
|
||||
+ ret = read_u64(path2, discard_granularity);
|
||||
+ if (ret) {
|
||||
+ if (ret != -ENOENT)
|
||||
+ return ret;
|
||||
+ else {
|
||||
+ snprintf(path2, sizeof path2,
|
||||
+ "%s/../queue/discard_granularity", path1);
|
||||
+ ret = read_u64(path2, discard_granularity);
|
||||
+ if (ret) {
|
||||
+ if (ret != -ENOENT)
|
||||
+ return ret;
|
||||
+ else
|
||||
+ goto not_found;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
- /* Check readdir didn't fail. */
|
||||
- if (errno != 0) {
|
||||
- ret = -errno;
|
||||
- ntfs_log_debug("fstrim_limits: readdir failed\n");
|
||||
- goto out;
|
||||
+ snprintf(path2, sizeof path2, "%s/queue/discard_max_bytes", path1);
|
||||
+ ret = read_u64(path2, discard_max_bytes);
|
||||
+ if (ret) {
|
||||
+ if (ret != -ENOENT)
|
||||
+ return ret;
|
||||
+ else {
|
||||
+ snprintf(path2, sizeof path2,
|
||||
+ "%s/../queue/discard_max_bytes", path1);
|
||||
+ ret = read_u64(path2, discard_max_bytes);
|
||||
+ if (ret) {
|
||||
+ if (ret != -ENOENT)
|
||||
+ return ret;
|
||||
+ else
|
||||
+ goto not_found;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
+ return 0;
|
||||
+
|
||||
+not_found:
|
||||
/* If we reach here then we didn't find the device. This is
|
||||
* not an error, but set discard_max_bytes = 0 to indicate
|
||||
* that discard is not available.
|
||||
*/
|
||||
+ *discard_alignment = 0;
|
||||
*discard_granularity = 0;
|
||||
*discard_max_bytes = 0;
|
||||
- ntfs_log_debug("fstrim_limits: /sys/block entry corresponding to device %s not found\n",
|
||||
- vol->dev->d_name);
|
||||
- ret = 0;
|
||||
- goto out;
|
||||
-
|
||||
-found:
|
||||
- /* Found the device at /sys/block/ + d->d_name */
|
||||
- snprintf (path, sizeof path,
|
||||
- "/sys/block/%s/queue/discard_granularity",
|
||||
- d->d_name);
|
||||
- ret = read_u64(path, discard_granularity);
|
||||
- if (ret) {
|
||||
- ntfs_log_debug("fstrim_limits: could not read %s\n", path);
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- snprintf (path, sizeof path,
|
||||
- "/sys/block/%s/queue/discard_max_bytes",
|
||||
- d->d_name);
|
||||
- ret = read_u64(path, discard_max_bytes);
|
||||
- if (ret) {
|
||||
- ntfs_log_debug("fstrim_limits: could not read %s\n", path);
|
||||
- goto out;
|
||||
- }
|
||||
-
|
||||
- ntfs_log_debug("fstrim_limits: device %s discard granularity = %llu max_bytes = %llu\n",
|
||||
- d->d_name,
|
||||
- (unsigned long long) *discard_granularity,
|
||||
- (unsigned long long) *discard_max_bytes);
|
||||
-
|
||||
- ret = 0;
|
||||
-out:
|
||||
- if (closedir (dir) == -1) {
|
||||
- ret = -errno;
|
||||
- ntfs_log_debug("fstrim_limits: closedir failed\n");
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- return ret;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
#define FSTRIM_BUFSIZ 4096
|
||||
@@ -247,7 +238,7 @@ static int fstrim(ntfs_volume *vol, void *data)
|
||||
u64 start = range->start;
|
||||
u64 len = range->len;
|
||||
u64 minlen = range->minlen;
|
||||
- u64 discard_granularity, discard_max_bytes;
|
||||
+ u64 discard_alignment, discard_granularity, discard_max_bytes;
|
||||
u8 *buf = NULL;
|
||||
LCN start_buf;
|
||||
int ret;
|
||||
@@ -279,9 +270,14 @@ static int fstrim(ntfs_volume *vol, void *data)
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
- ret = fstrim_limits(vol, &discard_granularity, &discard_max_bytes);
|
||||
+ ret = fstrim_limits(vol, &discard_alignment,
|
||||
+ &discard_granularity, &discard_max_bytes);
|
||||
if (ret)
|
||||
return ret;
|
||||
+ if (discard_alignment != 0) {
|
||||
+ ntfs_log_debug("fstrim: backing device is not aligned for discards\n");
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
if (discard_granularity > vol->cluster_size) {
|
||||
ntfs_log_debug("fstrim: discard granularity of backing device is larger than cluster size\n");
|
||||
return -EOPNOTSUPP;
|
||||
--
|
||||
1.9.3
|
||||
|
@ -0,0 +1,648 @@
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/configure.ac ntfs-3g_ntfsprogs-2014.2.15/configure.ac
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/configure.ac 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/configure.ac 2014-07-31 13:51:24.425065808 +0100
|
||||
@@ -463,7 +463,8 @@
|
||||
regex.h endian.h byteswap.h sys/byteorder.h sys/disk.h sys/endian.h \
|
||||
sys/param.h sys/ioctl.h sys/mkdev.h sys/mount.h sys/stat.h sys/types.h \
|
||||
sys/vfs.h sys/statvfs.h sys/sysmacros.h linux/major.h linux/fd.h \
|
||||
- linux/hdreg.h machine/endian.h windows.h syslog.h pwd.h malloc.h])
|
||||
+ linux/fs.h inttypes.h linux/hdreg.h \
|
||||
+ machine/endian.h windows.h syslog.h pwd.h malloc.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_HEADER_STDBOOL
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/include/ntfs-3g/ioctl.h ntfs-3g_ntfsprogs-2014.2.15/include/ntfs-3g/ioctl.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/include/ntfs-3g/ioctl.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/include/ntfs-3g/ioctl.h 2014-07-31 13:51:24.426065810 +0100
|
||||
@@ -0,0 +1,30 @@
|
||||
+/*
|
||||
+ *
|
||||
+ * Copyright (c) 2014 Jean-Pierre Andre
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program (in the main directory of the NTFS-3G
|
||||
+ * distribution in the file COPYING); if not, write to the Free Software
|
||||
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ */
|
||||
+
|
||||
+#ifndef IOCTL_H
|
||||
+#define IOCTL_H
|
||||
+
|
||||
+int ntfs_ioctl(ntfs_inode *ni, int cmd, void *arg,
|
||||
+ unsigned int flags, void *data);
|
||||
+
|
||||
+#endif /* IOCTL_H */
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/include/ntfs-3g/volume.h ntfs-3g_ntfsprogs-2014.2.15/include/ntfs-3g/volume.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/include/ntfs-3g/volume.h 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/include/ntfs-3g/volume.h 2014-07-31 13:51:24.426065810 +0100
|
||||
@@ -36,9 +36,7 @@
|
||||
#ifdef HAVE_SYS_PARAM_H
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
-#ifdef HAVE_SYS_MOUNT_H
|
||||
-#include <sys/mount.h>
|
||||
-#endif
|
||||
+ /* Do not #include <sys/mount.h> here : conflicts with <linux/fs.h> */
|
||||
#ifdef HAVE_MNTENT_H
|
||||
#include <mntent.h>
|
||||
#endif
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/libntfs-3g/ioctl.c ntfs-3g_ntfsprogs-2014.2.15/libntfs-3g/ioctl.c
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/libntfs-3g/ioctl.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/libntfs-3g/ioctl.c 2014-07-31 13:51:24.427065813 +0100
|
||||
@@ -0,0 +1,382 @@
|
||||
+/**
|
||||
+ * ioctl.c - Processing of ioctls
|
||||
+ *
|
||||
+ * This module is part of ntfs-3g library
|
||||
+ *
|
||||
+ * Copyright (c) 2014 Jean-Pierre Andre
|
||||
+ * Copyright (c) 2014 Red Hat, Inc.
|
||||
+ *
|
||||
+ * This program/include file is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU General Public License as published
|
||||
+ * by the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program/include file is distributed in the hope that it will be
|
||||
+ * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
||||
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program (in the main directory of the NTFS-3G
|
||||
+ * distribution in the file COPYING); if not, write to the Free Software
|
||||
+ * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
+ */
|
||||
+
|
||||
+#include "config.h"
|
||||
+
|
||||
+#ifdef HAVE_STDIO_H
|
||||
+#include <stdio.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_INTTYPES_H
|
||||
+#include <inttypes.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_STRING_H
|
||||
+#include <string.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_ERRNO_H
|
||||
+#include <errno.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_FCNTL_H
|
||||
+#include <fcntl.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_UNISTD_H
|
||||
+#include <unistd.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_STDLIB_H
|
||||
+#include <stdlib.h>
|
||||
+#endif
|
||||
+#ifdef HAVE_LIMITS_H
|
||||
+#include <limits.h>
|
||||
+#endif
|
||||
+#include <syslog.h>
|
||||
+
|
||||
+#ifdef HAVE_SETXATTR
|
||||
+#include <sys/xattr.h>
|
||||
+#endif
|
||||
+
|
||||
+#ifdef HAVE_SYS_TYPES_H
|
||||
+#include <sys/types.h>
|
||||
+#endif
|
||||
+
|
||||
+#ifdef HAVE_SYS_STAT_H
|
||||
+#include <sys/stat.h>
|
||||
+#endif
|
||||
+
|
||||
+#ifdef HAVE_LINUX_FS_H
|
||||
+#include <linux/fs.h>
|
||||
+#endif
|
||||
+
|
||||
+#include <dirent.h>
|
||||
+
|
||||
+#include "compat.h"
|
||||
+#include "debug.h"
|
||||
+#include "bitmap.h"
|
||||
+#include "attrib.h"
|
||||
+#include "inode.h"
|
||||
+#include "layout.h"
|
||||
+#include "volume.h"
|
||||
+#include "index.h"
|
||||
+#include "logging.h"
|
||||
+#include "ntfstime.h"
|
||||
+#include "unistr.h"
|
||||
+#include "dir.h"
|
||||
+#include "security.h"
|
||||
+#include "ioctl.h"
|
||||
+#include "misc.h"
|
||||
+
|
||||
+#if defined(FITRIM) && defined(BLKDISCARD)
|
||||
+
|
||||
+/* Issue a TRIM request to the underlying device for the given clusters. */
|
||||
+static int fstrim_clusters(ntfs_volume *vol, LCN lcn, s64 length)
|
||||
+{
|
||||
+ struct ntfs_device *dev = vol->dev;
|
||||
+ uint64_t range[2];
|
||||
+
|
||||
+ ntfs_log_debug("fstrim_clusters: %lld length %lld\n",
|
||||
+ (long long) lcn, (long long) length);
|
||||
+
|
||||
+ range[0] = lcn << vol->cluster_size_bits;
|
||||
+ range[1] = length << vol->cluster_size_bits;
|
||||
+
|
||||
+ if (dev->d_ops->ioctl(dev, BLKDISCARD, range) == -1) {
|
||||
+ ntfs_log_debug("fstrim_one_cluster: ioctl failed: %m\n");
|
||||
+ return -errno;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int read_line(const char *path, char *line, size_t max_bytes)
|
||||
+{
|
||||
+ FILE *fp;
|
||||
+
|
||||
+ fp = fopen(path, "r");
|
||||
+ if (fp == NULL)
|
||||
+ return -errno;
|
||||
+ if (fgets(line, max_bytes, fp) == NULL) {
|
||||
+ int ret = -EIO; /* fgets doesn't set errno */
|
||||
+ fclose(fp);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ fclose (fp);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int read_u64(const char *path, u64 *n)
|
||||
+{
|
||||
+ char line[64];
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = read_line(path, line, sizeof line);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ if (sscanf(line, "%" SCNu64, n) != 1)
|
||||
+ return -EINVAL;
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* Find discard limits for current backing device.
|
||||
+ * XXX Kernel makes this a pain in the neck.
|
||||
+ */
|
||||
+static int fstrim_limits(ntfs_volume *vol, u64 *discard_granularity,
|
||||
+ u64 *discard_max_bytes)
|
||||
+{
|
||||
+ struct stat statbuf;
|
||||
+ DIR *dir;
|
||||
+ struct dirent *d;
|
||||
+ char path[80];
|
||||
+ char line[64];
|
||||
+ char dev[64];
|
||||
+ int ret;
|
||||
+
|
||||
+ /* Stat the backing device. Caller has ensured it is a block device. */
|
||||
+ if (stat(vol->dev->d_name, &statbuf) == -1) {
|
||||
+ ntfs_log_debug("fstrim_limits: could not stat %s\n",
|
||||
+ vol->dev->d_name);
|
||||
+ return -errno;
|
||||
+ }
|
||||
+
|
||||
+ /* Now look for a /sys/block/<dev>/dev file which contains
|
||||
+ * "major:minor\n".
|
||||
+ */
|
||||
+ snprintf(dev, sizeof dev, "%d:%d\n",
|
||||
+ major(statbuf.st_rdev), minor(statbuf.st_rdev));
|
||||
+
|
||||
+ dir = opendir("/sys/block");
|
||||
+ if (dir == NULL) {
|
||||
+ ntfs_log_debug("fstrim_limits: could not open /sys/block\n");
|
||||
+ return -errno;
|
||||
+ }
|
||||
+ for (;;) {
|
||||
+ errno = 0;
|
||||
+ d = readdir(dir);
|
||||
+ if (!d) break;
|
||||
+
|
||||
+ snprintf(path, sizeof path, "/sys/block/%s/dev", d->d_name);
|
||||
+ ret = read_line(path, line, sizeof line);
|
||||
+ if (ret)
|
||||
+ continue;
|
||||
+ if (strcmp(line, dev) == 0)
|
||||
+ goto found;
|
||||
+ }
|
||||
+
|
||||
+ /* Check readdir didn't fail. */
|
||||
+ if (errno != 0) {
|
||||
+ ret = -errno;
|
||||
+ ntfs_log_debug("fstrim_limits: readdir failed\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ /* If we reach here then we didn't find the device. This is
|
||||
+ * not an error, but set discard_max_bytes = 0 to indicate
|
||||
+ * that discard is not available.
|
||||
+ */
|
||||
+ *discard_granularity = 0;
|
||||
+ *discard_max_bytes = 0;
|
||||
+ ntfs_log_debug("fstrim_limits: /sys/block entry corresponding to device %s not found\n",
|
||||
+ vol->dev->d_name);
|
||||
+ ret = 0;
|
||||
+ goto out;
|
||||
+
|
||||
+found:
|
||||
+ /* Found the device at /sys/block/ + d->d_name */
|
||||
+ snprintf (path, sizeof path,
|
||||
+ "/sys/block/%s/queue/discard_granularity",
|
||||
+ d->d_name);
|
||||
+ ret = read_u64(path, discard_granularity);
|
||||
+ if (ret) {
|
||||
+ ntfs_log_debug("fstrim_limits: could not read %s\n", path);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ snprintf (path, sizeof path,
|
||||
+ "/sys/block/%s/queue/discard_max_bytes",
|
||||
+ d->d_name);
|
||||
+ ret = read_u64(path, discard_max_bytes);
|
||||
+ if (ret) {
|
||||
+ ntfs_log_debug("fstrim_limits: could not read %s\n", path);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
+ ntfs_log_debug("fstrim_limits: device %s discard granularity = %llu max_bytes = %llu\n",
|
||||
+ d->d_name,
|
||||
+ (unsigned long long) *discard_granularity,
|
||||
+ (unsigned long long) *discard_max_bytes);
|
||||
+
|
||||
+ ret = 0;
|
||||
+out:
|
||||
+ if (closedir (dir) == -1) {
|
||||
+ ret = -errno;
|
||||
+ ntfs_log_debug("fstrim_limits: closedir failed\n");
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+#define FSTRIM_BUFSIZ 4096
|
||||
+
|
||||
+/* Trim the filesystem.
|
||||
+ *
|
||||
+ * Free blocks between 'start' and 'start+len-1' (both byte offsets)
|
||||
+ * are found and TRIM requests are sent to the block device. 'minlen'
|
||||
+ * is the minimum continguous free range to discard.
|
||||
+ */
|
||||
+static int fstrim(ntfs_volume *vol, void *data)
|
||||
+{
|
||||
+ struct fstrim_range *range = data;
|
||||
+ u64 start = range->start;
|
||||
+ u64 len = range->len;
|
||||
+ u64 minlen = range->minlen;
|
||||
+ u64 discard_granularity, discard_max_bytes;
|
||||
+ u8 *buf = NULL;
|
||||
+ LCN start_buf;
|
||||
+ int ret;
|
||||
+
|
||||
+ ntfs_log_debug("fstrim: start=%llu len=%llu minlen=%llu\n",
|
||||
+ (unsigned long long) start,
|
||||
+ (unsigned long long) len,
|
||||
+ (unsigned long long) minlen);
|
||||
+
|
||||
+ /* Fail if user tries to use the fstrim -o/-l/-m options.
|
||||
+ * XXX We could fix these limitations in future.
|
||||
+ */
|
||||
+ if (start != 0 || len != (uint64_t)-1) {
|
||||
+ ntfs_log_debug("fstrim: setting start or length is not supported\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (minlen > vol->cluster_size) {
|
||||
+ ntfs_log_debug("fstrim: minlen > cluster size is not supported\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ /* Only block devices are supported. It would be possible to
|
||||
+ * support backing files (ie. without using loop) but the
|
||||
+ * ioctls used to punch holes in files are completely
|
||||
+ * different.
|
||||
+ */
|
||||
+ if (!NDevBlock(vol->dev)) {
|
||||
+ ntfs_log_debug("fstrim: not supported for non-block-device\n");
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
+
|
||||
+ ret = fstrim_limits(vol, &discard_granularity, &discard_max_bytes);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ if (discard_granularity > vol->cluster_size) {
|
||||
+ ntfs_log_debug("fstrim: discard granularity of backing device is larger than cluster size\n");
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
+ if (discard_max_bytes == 0) {
|
||||
+ ntfs_log_debug("fstrim: backing device does not support discard (discard_max_bytes == 0)\n");
|
||||
+ return -EOPNOTSUPP;
|
||||
+ }
|
||||
+
|
||||
+ /* Sync the device before doing anything. */
|
||||
+ ret = ntfs_device_sync(vol->dev);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+
|
||||
+ /* Read through the bitmap. */
|
||||
+ buf = ntfs_malloc(FSTRIM_BUFSIZ);
|
||||
+ if (buf == NULL)
|
||||
+ return -errno;
|
||||
+ for (start_buf = 0; start_buf < vol->nr_clusters;
|
||||
+ start_buf += FSTRIM_BUFSIZ * 8) {
|
||||
+ s64 count;
|
||||
+ s64 br;
|
||||
+ LCN end_buf, start_lcn;
|
||||
+
|
||||
+ /* start_buf is LCN of first cluster in the current buffer.
|
||||
+ * end_buf is LCN of last cluster + 1 in the current buffer.
|
||||
+ */
|
||||
+ end_buf = start_buf + FSTRIM_BUFSIZ*8;
|
||||
+ if (end_buf > vol->nr_clusters)
|
||||
+ end_buf = vol->nr_clusters;
|
||||
+ count = (end_buf - start_buf) / 8;
|
||||
+
|
||||
+ br = ntfs_attr_pread(vol->lcnbmp_na, start_buf/8, count, buf);
|
||||
+ if (br != count) {
|
||||
+ if (br >= 0)
|
||||
+ ret = -EIO;
|
||||
+ else
|
||||
+ ret = -errno;
|
||||
+ goto free_out;
|
||||
+ }
|
||||
+
|
||||
+ /* Trim the clusters in large as possible blocks, but
|
||||
+ * not larger than discard_max_bytes.
|
||||
+ */
|
||||
+ for (start_lcn = start_buf; start_lcn < end_buf; ++start_lcn) {
|
||||
+ if (!ntfs_bit_get(buf, start_lcn-start_buf)) {
|
||||
+ LCN end_lcn;
|
||||
+
|
||||
+ /* Cluster 'start_lcn' is not in use,
|
||||
+ * find end of this run.
|
||||
+ */
|
||||
+ end_lcn = start_lcn+1;
|
||||
+ while (end_lcn < end_buf &&
|
||||
+ (u64) (end_lcn-start_lcn) << vol->cluster_size_bits
|
||||
+ < discard_max_bytes &&
|
||||
+ !ntfs_bit_get(buf, end_lcn-start_buf))
|
||||
+ end_lcn++;
|
||||
+
|
||||
+ ret = fstrim_clusters(vol,
|
||||
+ start_lcn, end_lcn-start_lcn);
|
||||
+ if (ret)
|
||||
+ goto free_out;
|
||||
+
|
||||
+ start_lcn = end_lcn-1;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ret = 0;
|
||||
+free_out:
|
||||
+ free(buf);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+#endif /* FITRIM && BLKDISCARD */
|
||||
+
|
||||
+int ntfs_ioctl(ntfs_inode *ni, int cmd, void *arg __attribute__((unused)),
|
||||
+ unsigned int flags __attribute__((unused)), void *data)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ switch (cmd) {
|
||||
+#if defined(FITRIM) && defined(BLKDISCARD)
|
||||
+ case FITRIM:
|
||||
+ if (!ni || !data)
|
||||
+ ret = -EINVAL;
|
||||
+ else
|
||||
+ ret = fstrim(ni->vol, data);
|
||||
+ break;
|
||||
+#else
|
||||
+#warning FITRIM or BLKDISCARD not defined
|
||||
+#endif
|
||||
+ default :
|
||||
+ ret = -EINVAL;
|
||||
+ break;
|
||||
+ }
|
||||
+ return (ret);
|
||||
+}
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/libntfs-3g/Makefile.am ntfs-3g_ntfsprogs-2014.2.15/libntfs-3g/Makefile.am
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/libntfs-3g/Makefile.am 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/libntfs-3g/Makefile.am 2014-07-31 13:51:24.426065810 +0100
|
||||
@@ -30,6 +30,7 @@
|
||||
efs.c \
|
||||
index.c \
|
||||
inode.c \
|
||||
+ ioctl.c \
|
||||
lcnalloc.c \
|
||||
logfile.c \
|
||||
logging.c \
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/src/lowntfs-3g.c ntfs-3g_ntfsprogs-2014.2.15/src/lowntfs-3g.c
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/src/lowntfs-3g.c 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/src/lowntfs-3g.c 2014-07-31 13:51:24.429065815 +0100
|
||||
@@ -81,7 +81,12 @@
|
||||
#include <sys/dirent.h>
|
||||
#endif /* defined(__APPLE__) || defined(__DARWIN__) */
|
||||
|
||||
+#ifdef HAVE_LINUX_FS_H
|
||||
+#include <linux/fs.h>
|
||||
+#endif
|
||||
+
|
||||
#include "compat.h"
|
||||
+#include "bitmap.h"
|
||||
#include "attrib.h"
|
||||
#include "inode.h"
|
||||
#include "volume.h"
|
||||
@@ -97,6 +102,7 @@
|
||||
#include "logging.h"
|
||||
#include "xattrs.h"
|
||||
#include "misc.h"
|
||||
+#include "ioctl.h"
|
||||
|
||||
#include "ntfs-3g_common.h"
|
||||
|
||||
@@ -564,8 +570,6 @@
|
||||
}
|
||||
#endif /* defined(__APPLE__) || defined(__DARWIN__) */
|
||||
|
||||
-#if defined(FUSE_CAP_DONT_MASK) || defined(FUSE_CAP_BIG_WRITES) \
|
||||
- || (defined(__APPLE__) || defined(__DARWIN__))
|
||||
static void ntfs_init(void *userdata __attribute__((unused)),
|
||||
struct fuse_conn_info *conn)
|
||||
{
|
||||
@@ -582,8 +586,8 @@
|
||||
>= SAFE_CAPACITY_FOR_BIG_WRITES))
|
||||
conn->want |= FUSE_CAP_BIG_WRITES;
|
||||
#endif
|
||||
+ conn->want |= FUSE_CAP_IOCTL_DIR;
|
||||
}
|
||||
-#endif /* defined(FUSE_CAP_DONT_MASK) || (defined(__APPLE__) || defined(__DARWIN__)) */
|
||||
|
||||
static int ntfs_fuse_getstat(struct SECURITY_CONTEXT *scx,
|
||||
ntfs_inode *ni, struct stat *stbuf)
|
||||
@@ -2573,6 +2577,48 @@
|
||||
fuse_reply_err(req, 0);
|
||||
}
|
||||
|
||||
+static void ntfs_fuse_ioctl(fuse_req_t req __attribute__((unused)),
|
||||
+ fuse_ino_t ino __attribute__((unused)),
|
||||
+ int cmd, void *arg,
|
||||
+ struct fuse_file_info *fi __attribute__((unused)),
|
||||
+ unsigned flags, const void *data,
|
||||
+ size_t in_bufsz, size_t out_bufsz)
|
||||
+{
|
||||
+ ntfs_inode *ni;
|
||||
+ char *buf = (char*)NULL;
|
||||
+ int bufsz;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ if (flags & FUSE_IOCTL_COMPAT) {
|
||||
+ ret = -ENOSYS;
|
||||
+ } else {
|
||||
+ ni = ntfs_inode_open(ctx->vol, INODE(ino));
|
||||
+ if (!ni) {
|
||||
+ ret = -errno;
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ bufsz = (in_bufsz > out_bufsz ? in_bufsz : out_bufsz);
|
||||
+ if (bufsz) {
|
||||
+ buf = ntfs_malloc(bufsz);
|
||||
+ if (!buf) {
|
||||
+ ret = ENOMEM;
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ memcpy(buf, data, in_bufsz);
|
||||
+ }
|
||||
+ ret = ntfs_ioctl(ni, cmd, arg, flags, buf);
|
||||
+ if (ntfs_inode_close (ni))
|
||||
+ set_fuse_error(&ret);
|
||||
+ }
|
||||
+ if (ret)
|
||||
+fail :
|
||||
+ fuse_reply_err(req, -ret);
|
||||
+ else
|
||||
+ fuse_reply_ioctl(req, 0, buf, out_bufsz);
|
||||
+ if (buf)
|
||||
+ free(buf);
|
||||
+}
|
||||
+
|
||||
static void ntfs_fuse_bmap(fuse_req_t req, fuse_ino_t ino, size_t blocksize,
|
||||
uint64_t vidx)
|
||||
{
|
||||
@@ -3496,6 +3542,7 @@
|
||||
.fsyncdir = ntfs_fuse_fsync,
|
||||
.bmap = ntfs_fuse_bmap,
|
||||
.destroy = ntfs_fuse_destroy2,
|
||||
+ .ioctl = ntfs_fuse_ioctl,
|
||||
#if !KERNELPERMS | (POSIXACLS & !KERNELACLS)
|
||||
.access = ntfs_fuse_access,
|
||||
#endif
|
||||
@@ -3512,10 +3559,7 @@
|
||||
.setbkuptime = ntfs_macfuse_setbkuptime,
|
||||
.setchgtime = ntfs_macfuse_setchgtime,
|
||||
#endif /* defined(__APPLE__) || defined(__DARWIN__) */
|
||||
-#if defined(FUSE_CAP_DONT_MASK) || defined(FUSE_CAP_BIG_WRITES) \
|
||||
- || (defined(__APPLE__) || defined(__DARWIN__))
|
||||
.init = ntfs_init
|
||||
-#endif
|
||||
};
|
||||
|
||||
static int ntfs_fuse_init(void)
|
||||
diff -urN ntfs-3g_ntfsprogs-2014.2.15.old/src/ntfs-3g.c ntfs-3g_ntfsprogs-2014.2.15/src/ntfs-3g.c
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15.old/src/ntfs-3g.c 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15/src/ntfs-3g.c 2014-07-31 13:51:24.430065816 +0100
|
||||
@@ -96,6 +96,7 @@
|
||||
#include "logging.h"
|
||||
#include "xattrs.h"
|
||||
#include "misc.h"
|
||||
+#include "ioctl.h"
|
||||
|
||||
#include "ntfs-3g_common.h"
|
||||
|
||||
@@ -636,8 +637,6 @@
|
||||
}
|
||||
#endif /* defined(__APPLE__) || defined(__DARWIN__) */
|
||||
|
||||
-#if defined(FUSE_CAP_DONT_MASK) || defined(FUSE_CAP_BIG_WRITES) \
|
||||
- || (defined(__APPLE__) || defined(__DARWIN__))
|
||||
static void *ntfs_init(struct fuse_conn_info *conn)
|
||||
{
|
||||
#if defined(__APPLE__) || defined(__DARWIN__)
|
||||
@@ -653,9 +652,9 @@
|
||||
>= SAFE_CAPACITY_FOR_BIG_WRITES))
|
||||
conn->want |= FUSE_CAP_BIG_WRITES;
|
||||
#endif
|
||||
+ conn->want |= FUSE_CAP_IOCTL_DIR;
|
||||
return NULL;
|
||||
}
|
||||
-#endif /* defined(FUSE_CAP_DONT_MASK) || (defined(__APPLE__) || defined(__DARWIN__)) */
|
||||
|
||||
static int ntfs_fuse_getattr(const char *org_path, struct stat *stbuf)
|
||||
{
|
||||
@@ -2412,6 +2411,28 @@
|
||||
return (ret);
|
||||
}
|
||||
|
||||
+static int ntfs_fuse_ioctl(const char *path,
|
||||
+ int cmd, void *arg,
|
||||
+ struct fuse_file_info *fi __attribute__((unused)),
|
||||
+ unsigned int flags, void *data)
|
||||
+{
|
||||
+ ntfs_inode *ni;
|
||||
+ int ret;
|
||||
+
|
||||
+ if (flags & FUSE_IOCTL_COMPAT)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ ni = ntfs_pathname_to_inode(ctx->vol, NULL, path);
|
||||
+ if (!ni)
|
||||
+ return -errno;
|
||||
+
|
||||
+ ret = ntfs_ioctl(ni, cmd, arg, flags, data);
|
||||
+
|
||||
+ if (ntfs_inode_close (ni))
|
||||
+ set_fuse_error(&ret);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static int ntfs_fuse_bmap(const char *path, size_t blocksize, uint64_t *idx)
|
||||
{
|
||||
ntfs_inode *ni;
|
||||
@@ -3335,6 +3356,7 @@
|
||||
.fsyncdir = ntfs_fuse_fsync,
|
||||
.bmap = ntfs_fuse_bmap,
|
||||
.destroy = ntfs_fuse_destroy2,
|
||||
+ .ioctl = ntfs_fuse_ioctl,
|
||||
#if !KERNELPERMS | (POSIXACLS & !KERNELACLS)
|
||||
.access = ntfs_fuse_access,
|
||||
.opendir = ntfs_fuse_opendir,
|
||||
@@ -3352,10 +3374,7 @@
|
||||
.setbkuptime = ntfs_macfuse_setbkuptime,
|
||||
.setchgtime = ntfs_macfuse_setchgtime,
|
||||
#endif /* defined(__APPLE__) || defined(__DARWIN__) */
|
||||
-#if defined(FUSE_CAP_DONT_MASK) || defined(FUSE_CAP_BIG_WRITES) \
|
||||
- || (defined(__APPLE__) || defined(__DARWIN__))
|
||||
.init = ntfs_init
|
||||
-#endif
|
||||
};
|
||||
|
||||
static int ntfs_fuse_init(void)
|
@ -0,0 +1,610 @@
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_common.h ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_common.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_common.h 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_common.h 2014-07-31 13:47:17.401904166 +0100
|
||||
@@ -49,6 +49,22 @@
|
||||
#endif
|
||||
|
||||
#define FUSE_CAP_BIG_WRITES (1 << 5)
|
||||
+#define FUSE_CAP_IOCTL_DIR (1 << 11)
|
||||
+
|
||||
+/**
|
||||
+ * Ioctl flags
|
||||
+ *
|
||||
+ * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
|
||||
+ * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed
|
||||
+ * FUSE_IOCTL_RETRY: retry with new iovecs
|
||||
+ * FUSE_IOCTL_DIR: is a directory
|
||||
+ */
|
||||
+#define FUSE_IOCTL_COMPAT (1 << 0)
|
||||
+#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
|
||||
+#define FUSE_IOCTL_RETRY (1 << 2)
|
||||
+#define FUSE_IOCTL_DIR (1 << 4)
|
||||
+
|
||||
+#define FUSE_IOCTL_MAX_IOV 256
|
||||
|
||||
/**
|
||||
* Information about open files
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse.h ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse.h 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse.h 2014-07-31 13:47:17.401904166 +0100
|
||||
@@ -420,9 +420,27 @@
|
||||
* Introduced in version 2.6
|
||||
*/
|
||||
int (*bmap) (const char *, size_t blocksize, uint64_t *idx);
|
||||
- unsigned int flag_nullpath_ok : 1;
|
||||
|
||||
/**
|
||||
+ * Ioctl
|
||||
+ *
|
||||
+ * flags will have FUSE_IOCTL_COMPAT set for 32bit ioctls in
|
||||
+ * 64bit environment. The size and direction of data is
|
||||
+ * determined by _IOC_*() decoding of cmd. For _IOC_NONE,
|
||||
+ * data will be NULL, for _IOC_WRITE data is out area, for
|
||||
+ * _IOC_READ in area and if both are set in/out area. In all
|
||||
+ * non-NULL cases, the area is of _IOC_SIZE(cmd) bytes.
|
||||
+ *
|
||||
+ * Introduced in version 2.8
|
||||
+ */
|
||||
+ int (*ioctl) (const char *, int cmd, void *arg,
|
||||
+ struct fuse_file_info *, unsigned int flags, void *data);
|
||||
+
|
||||
+ /*
|
||||
+ * The flags below have been discarded, they should not be used
|
||||
+ */
|
||||
+ unsigned int flag_nullpath_ok : 1;
|
||||
+ /**
|
||||
* Reserved flags, don't set
|
||||
*/
|
||||
unsigned int flag_reserved : 30;
|
||||
@@ -450,10 +468,8 @@
|
||||
/** Private filesystem data */
|
||||
void *private_data;
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
/** Umask of the calling process (introduced in version 2.8) */
|
||||
mode_t umask;
|
||||
-#endif
|
||||
};
|
||||
|
||||
/* ----------------------------------------------------------- *
|
||||
@@ -601,6 +617,8 @@
|
||||
const char *name);
|
||||
int fuse_fs_bmap(struct fuse_fs *fs, const char *path, size_t blocksize,
|
||||
uint64_t *idx);
|
||||
+int fuse_fs_ioctl(struct fuse_fs *fs, const char *path, int cmd, void *arg,
|
||||
+ struct fuse_file_info *fi, unsigned int flags, void *data);
|
||||
void fuse_fs_init(struct fuse_fs *fs, struct fuse_conn_info *conn);
|
||||
void fuse_fs_destroy(struct fuse_fs *fs);
|
||||
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_kernel.h ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_kernel.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_kernel.h 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_kernel.h 2014-07-31 13:47:17.401904166 +0100
|
||||
@@ -48,13 +48,19 @@
|
||||
/** Version number of this interface */
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
-/** Minor version number of this interface */
|
||||
-#ifdef POSIXACLS
|
||||
-#define FUSE_KERNEL_MINOR_VERSION 12
|
||||
+/** Minor version number of this interface
|
||||
+ * We introduce ourself as 7.18 (Posix ACLS : 7.12, IOCTL_DIR : 7.18)
|
||||
+ * and we expect features features defined for 7.18, but not implemented
|
||||
+ * here to not be triggered by ntfs-3g.
|
||||
+ */
|
||||
+#define FUSE_KERNEL_MINOR_VERSION 18
|
||||
+
|
||||
+/*
|
||||
+ * For binary compatibility with old kernels we accept falling back to 7.8
|
||||
+ */
|
||||
+
|
||||
+#define FUSE_KERNEL_MAJOR_FALLBACK 7
|
||||
#define FUSE_KERNEL_MINOR_FALLBACK 8
|
||||
-#else
|
||||
-#define FUSE_KERNEL_MINOR_VERSION 8
|
||||
-#endif
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@@ -83,9 +89,7 @@
|
||||
__u32 uid;
|
||||
__u32 gid;
|
||||
__u32 rdev;
|
||||
-#ifdef POSIXACLS
|
||||
__u64 filling; /* JPA needed for minor >= 12, but meaning unknown */
|
||||
-#endif
|
||||
};
|
||||
|
||||
struct fuse_kstatfs {
|
||||
@@ -132,11 +136,13 @@
|
||||
* INIT request/reply flags
|
||||
* FUSE_BIG_WRITES: allow big writes to be issued to the file system
|
||||
* FUSE_DONT_MASK: don't apply umask to file mode on create operations
|
||||
+ * FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
#define FUSE_BIG_WRITES (1 << 5)
|
||||
#define FUSE_DONT_MASK (1 << 6)
|
||||
+#define FUSE_HAS_IOCTL_DIR (1 << 11)
|
||||
|
||||
/**
|
||||
* Release flags
|
||||
@@ -180,6 +186,7 @@
|
||||
FUSE_INTERRUPT = 36,
|
||||
FUSE_BMAP = 37,
|
||||
FUSE_DESTROY = 38,
|
||||
+ FUSE_IOCTL = 39,
|
||||
};
|
||||
|
||||
/* The read buffer is required to be at least 8k, but may be much larger */
|
||||
@@ -215,10 +222,8 @@
|
||||
struct fuse_mknod_in {
|
||||
__u32 mode;
|
||||
__u32 rdev;
|
||||
-#ifdef POSIXACLS
|
||||
__u32 umask;
|
||||
__u32 padding;
|
||||
-#endif
|
||||
};
|
||||
|
||||
struct fuse_mkdir_in {
|
||||
@@ -255,20 +260,14 @@
|
||||
|
||||
struct fuse_open_in {
|
||||
__u32 flags;
|
||||
-#ifdef POSIXACLS
|
||||
- __u32 unused;
|
||||
-#else
|
||||
- __u32 mode;
|
||||
-#endif
|
||||
+ __u32 mode; /* unused for protocol < 7.12 */
|
||||
};
|
||||
|
||||
struct fuse_create_in {
|
||||
__u32 flags;
|
||||
__u32 mode;
|
||||
-#ifdef POSIXACLS
|
||||
__u32 umask;
|
||||
__u32 padding;
|
||||
-#endif
|
||||
};
|
||||
|
||||
struct fuse_open_out {
|
||||
@@ -305,11 +304,9 @@
|
||||
__u64 offset;
|
||||
__u32 size;
|
||||
__u32 write_flags;
|
||||
-#ifdef POSIXACLS
|
||||
__u64 lock_owner; /* JPA */
|
||||
__u32 flags; /* JPA */
|
||||
__u32 padding; /* JPA */
|
||||
-#endif
|
||||
};
|
||||
|
||||
struct fuse_write_out {
|
||||
@@ -389,6 +386,27 @@
|
||||
__u64 block;
|
||||
};
|
||||
|
||||
+struct fuse_ioctl_in {
|
||||
+ __u64 fh;
|
||||
+ __u32 flags;
|
||||
+ __u32 cmd;
|
||||
+ __u64 arg;
|
||||
+ __u32 in_size;
|
||||
+ __u32 out_size;
|
||||
+};
|
||||
+
|
||||
+struct fuse_ioctl_iovec {
|
||||
+ __u64 base;
|
||||
+ __u64 len;
|
||||
+};
|
||||
+
|
||||
+struct fuse_ioctl_out {
|
||||
+ __s32 result;
|
||||
+ __u32 flags;
|
||||
+ __u32 in_iovs;
|
||||
+ __u32 out_iovs;
|
||||
+};
|
||||
+
|
||||
struct fuse_in_header {
|
||||
__u32 len;
|
||||
__u32 opcode;
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_lowlevel.h ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_lowlevel.h
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/include/fuse-lite/fuse_lowlevel.h 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/include/fuse-lite/fuse_lowlevel.h 2014-07-31 13:47:17.402904167 +0100
|
||||
@@ -101,10 +101,8 @@
|
||||
/** Thread ID of the calling process */
|
||||
pid_t pid;
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
/** Umask of the calling process (introduced in version 2.8) */
|
||||
mode_t umask;
|
||||
-#endif
|
||||
};
|
||||
|
||||
/* 'to_set' flags in setattr */
|
||||
@@ -805,6 +803,37 @@
|
||||
*/
|
||||
void (*bmap) (fuse_req_t req, fuse_ino_t ino, size_t blocksize,
|
||||
uint64_t idx);
|
||||
+ /**
|
||||
+ * Ioctl
|
||||
+ *
|
||||
+ * Note: For unrestricted ioctls (not allowed for FUSE
|
||||
+ * servers), data in and out areas can be discovered by giving
|
||||
+ * iovs and setting FUSE_IOCTL_RETRY in @flags. For
|
||||
+ * restricted ioctls, kernel prepares in/out data area
|
||||
+ * according to the information encoded in cmd.
|
||||
+ *
|
||||
+ * Introduced in version 2.8
|
||||
+ *
|
||||
+ * Valid replies:
|
||||
+ * fuse_reply_ioctl_retry
|
||||
+ * fuse_reply_ioctl
|
||||
+ * fuse_reply_ioctl_iov
|
||||
+ * fuse_reply_err
|
||||
+ *
|
||||
+ * @param req request handle
|
||||
+ * @param ino the inode number
|
||||
+ * @param cmd ioctl command
|
||||
+ * @param arg ioctl argument
|
||||
+ * @param fi file information
|
||||
+ * @param flags for FUSE_IOCTL_* flags
|
||||
+ * @param in_buf data fetched from the caller
|
||||
+ * @param in_bufsz number of fetched bytes
|
||||
+ * @param out_bufsz maximum size of output data
|
||||
+ */
|
||||
+ void (*ioctl) (fuse_req_t req, fuse_ino_t ino, int cmd, void *arg,
|
||||
+ struct fuse_file_info *fi, unsigned flags,
|
||||
+ const void *in_buf, size_t in_bufsz, size_t out_bufsz);
|
||||
+
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1022,6 +1051,20 @@
|
||||
const char *name, const struct stat *stbuf,
|
||||
off_t off);
|
||||
|
||||
+/**
|
||||
+ * Reply to finish ioctl
|
||||
+ *
|
||||
+ * Possible requests:
|
||||
+ * ioctl
|
||||
+ *
|
||||
+ * @param req request handle
|
||||
+ * @param result result to be passed to the caller
|
||||
+ * @param buf buffer containing output data
|
||||
+ * @param size length of output data
|
||||
+ */
|
||||
+int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size);
|
||||
+
|
||||
+
|
||||
/* ----------------------------------------------------------- *
|
||||
* Utility functions *
|
||||
* ----------------------------------------------------------- */
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/libfuse-lite/fuse.c ntfs-3g_ntfsprogs-2014.2.15.new/libfuse-lite/fuse.c
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/libfuse-lite/fuse.c 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/libfuse-lite/fuse.c 2014-07-31 13:47:17.403904167 +0100
|
||||
@@ -1040,6 +1040,21 @@
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
+int fuse_fs_ioctl(struct fuse_fs *fs, const char *path, int cmd, void *arg,
|
||||
+ struct fuse_file_info *fi, unsigned int flags, void *data)
|
||||
+{
|
||||
+ fuse_get_context()->private_data = fs->user_data;
|
||||
+ if (fs->op.ioctl) {
|
||||
+/*
|
||||
+ if (fs->debug)
|
||||
+ fprintf(stderr, "ioctl[%llu] 0x%x flags: 0x%x\n",
|
||||
+ (unsigned long long) fi->fh, cmd, flags);
|
||||
+*/
|
||||
+ return fs->op.ioctl(path, cmd, arg, fi, flags, data);
|
||||
+ } else
|
||||
+ return -ENOSYS;
|
||||
+}
|
||||
+
|
||||
static int is_open(struct fuse *f, fuse_ino_t dir, const char *name)
|
||||
{
|
||||
struct node *node;
|
||||
@@ -2716,6 +2731,60 @@
|
||||
reply_err(req, err);
|
||||
}
|
||||
|
||||
+static void fuse_lib_ioctl(fuse_req_t req, fuse_ino_t ino, int cmd, void *arg,
|
||||
+ struct fuse_file_info *llfi, unsigned int flags,
|
||||
+ const void *in_buf, size_t in_bufsz,
|
||||
+ size_t out_bufsz)
|
||||
+{
|
||||
+ struct fuse *f = req_fuse_prepare(req);
|
||||
+ struct fuse_intr_data d;
|
||||
+ struct fuse_file_info fi;
|
||||
+ char *path, *out_buf = NULL;
|
||||
+ int err;
|
||||
+
|
||||
+ err = -EPERM;
|
||||
+ if (flags & FUSE_IOCTL_UNRESTRICTED)
|
||||
+ goto err;
|
||||
+
|
||||
+ if (flags & FUSE_IOCTL_DIR)
|
||||
+ get_dirhandle(llfi, &fi);
|
||||
+ else
|
||||
+ fi = *llfi;
|
||||
+
|
||||
+ if (out_bufsz) {
|
||||
+ err = -ENOMEM;
|
||||
+ out_buf = malloc(out_bufsz);
|
||||
+ if (!out_buf)
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ assert(!in_bufsz || !out_bufsz || in_bufsz == out_bufsz);
|
||||
+ if (out_buf)
|
||||
+ memcpy(out_buf, in_buf, in_bufsz);
|
||||
+
|
||||
+ path = get_path(f, ino); /* Should be get_path_nullok() */
|
||||
+ if (!path) {
|
||||
+ err = ENOENT;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ fuse_prepare_interrupt(f, req, &d);
|
||||
+
|
||||
+ /* Note : const qualifier dropped */
|
||||
+ err = fuse_fs_ioctl(f->fs, path, cmd, arg, &fi, flags,
|
||||
+ out_buf ? (void*)out_buf : (void*)(uintptr_t)in_buf);
|
||||
+
|
||||
+ fuse_finish_interrupt(f, req, &d);
|
||||
+ free(path);
|
||||
+
|
||||
+ fuse_reply_ioctl(req, err, out_buf, out_bufsz);
|
||||
+ goto out;
|
||||
+err:
|
||||
+ reply_err(req, err);
|
||||
+out:
|
||||
+ free(out_buf);
|
||||
+}
|
||||
+
|
||||
static struct fuse_lowlevel_ops fuse_path_ops = {
|
||||
.init = fuse_lib_init,
|
||||
.destroy = fuse_lib_destroy,
|
||||
@@ -2751,6 +2820,7 @@
|
||||
.getlk = fuse_lib_getlk,
|
||||
.setlk = fuse_lib_setlk,
|
||||
.bmap = fuse_lib_bmap,
|
||||
+ .ioctl = fuse_lib_ioctl,
|
||||
};
|
||||
|
||||
struct fuse_session *fuse_get_session(struct fuse *f)
|
||||
diff -ur ntfs-3g_ntfsprogs-2014.2.15/libfuse-lite/fuse_lowlevel.c ntfs-3g_ntfsprogs-2014.2.15.new/libfuse-lite/fuse_lowlevel.c
|
||||
--- ntfs-3g_ntfsprogs-2014.2.15/libfuse-lite/fuse_lowlevel.c 2014-02-15 14:07:52.000000000 +0000
|
||||
+++ ntfs-3g_ntfsprogs-2014.2.15.new/libfuse-lite/fuse_lowlevel.c 2014-07-31 13:47:17.403904167 +0100
|
||||
@@ -333,12 +333,8 @@
|
||||
|
||||
memset(&arg, 0, sizeof(arg));
|
||||
fill_entry(&arg, e);
|
||||
-#ifdef POSIXACLS
|
||||
return send_reply_ok(req, &arg, (req->f->conn.proto_minor >= 12
|
||||
? sizeof(arg) : FUSE_COMPAT_ENTRY_OUT_SIZE));
|
||||
-#else
|
||||
- return send_reply_ok(req, &arg, sizeof(arg));
|
||||
-#endif
|
||||
}
|
||||
|
||||
int fuse_reply_create(fuse_req_t req, const struct fuse_entry_param *e,
|
||||
@@ -351,7 +347,6 @@
|
||||
|
||||
memset(&arg, 0, sizeof(arg));
|
||||
fill_entry(&arg.e, e);
|
||||
-#ifdef POSIXACLS
|
||||
if (req->f->conn.proto_minor < 12) {
|
||||
fill_open((struct fuse_open_out*)
|
||||
((char*)&arg + FUSE_COMPAT_ENTRY_OUT_SIZE), f);
|
||||
@@ -361,10 +356,6 @@
|
||||
fill_open(&arg.o, f);
|
||||
return send_reply_ok(req, &arg, sizeof(arg));
|
||||
}
|
||||
-#else
|
||||
- fill_open(&arg.o, f);
|
||||
- return send_reply_ok(req, &arg, sizeof(arg));
|
||||
-#endif
|
||||
}
|
||||
|
||||
int fuse_reply_attr(fuse_req_t req, const struct stat *attr,
|
||||
@@ -377,12 +368,8 @@
|
||||
arg.attr_valid_nsec = calc_timeout_nsec(attr_timeout);
|
||||
convert_stat(attr, &arg.attr);
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
return send_reply_ok(req, &arg, (req->f->conn.proto_minor >= 12
|
||||
? sizeof(arg) : FUSE_COMPAT_FUSE_ATTR_OUT_SIZE));
|
||||
-#else
|
||||
- return send_reply_ok(req, &arg, sizeof(arg));
|
||||
-#endif
|
||||
}
|
||||
|
||||
int fuse_reply_readlink(fuse_req_t req, const char *linkname)
|
||||
@@ -462,6 +449,28 @@
|
||||
return send_reply_ok(req, &arg, sizeof(arg));
|
||||
}
|
||||
|
||||
+int fuse_reply_ioctl(fuse_req_t req, int result, const void *buf, size_t size)
|
||||
+{
|
||||
+ struct fuse_ioctl_out arg;
|
||||
+ struct iovec iov[3];
|
||||
+ size_t count = 1;
|
||||
+
|
||||
+ memset(&arg, 0, sizeof(arg));
|
||||
+ arg.result = result;
|
||||
+ iov[count].iov_base = &arg;
|
||||
+ iov[count].iov_len = sizeof(arg);
|
||||
+ count++;
|
||||
+
|
||||
+ if (size) {
|
||||
+ /* Note : const qualifier dropped */
|
||||
+ iov[count].iov_base = (char *)(uintptr_t) buf;
|
||||
+ iov[count].iov_len = size;
|
||||
+ count++;
|
||||
+ }
|
||||
+
|
||||
+ return send_reply_iov(req, 0, iov, count);
|
||||
+}
|
||||
+
|
||||
static void do_lookup(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
|
||||
{
|
||||
const char *name = (const char *) inarg;
|
||||
@@ -538,11 +547,9 @@
|
||||
const struct fuse_mknod_in *arg = (const struct fuse_mknod_in *) inarg;
|
||||
const char *name = PARAM(arg);
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
if (req->f->conn.proto_minor >= 12)
|
||||
req->ctx.umask = arg->umask;
|
||||
else
|
||||
-#endif
|
||||
name = (const char *) inarg + FUSE_COMPAT_MKNOD_IN_SIZE;
|
||||
|
||||
if (req->f->op.mknod)
|
||||
@@ -555,10 +562,8 @@
|
||||
{
|
||||
const struct fuse_mkdir_in *arg = (const struct fuse_mkdir_in *) inarg;
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
if (req->f->conn.proto_minor >= 12)
|
||||
req->ctx.umask = arg->umask;
|
||||
-#endif
|
||||
|
||||
if (req->f->op.mkdir)
|
||||
req->f->op.mkdir(req, nodeid, PARAM(arg), arg->mode);
|
||||
@@ -630,11 +635,9 @@
|
||||
memset(&fi, 0, sizeof(fi));
|
||||
fi.flags = arg->flags;
|
||||
|
||||
-#ifdef POSIXACLS
|
||||
if (req->f->conn.proto_minor >= 12)
|
||||
req->ctx.umask = arg->umask;
|
||||
else
|
||||
-#endif
|
||||
name = (const char *) inarg + sizeof(struct fuse_open_in);
|
||||
|
||||
req->f->op.create(req, nodeid, name, arg->mode, &fi);
|
||||
@@ -682,7 +685,6 @@
|
||||
fi.writepage = arg->write_flags & 1;
|
||||
|
||||
if (req->f->op.write) {
|
||||
-#ifdef POSIXACLS
|
||||
const char *buf;
|
||||
|
||||
if (req->f->conn.proto_minor >= 12)
|
||||
@@ -690,9 +692,6 @@
|
||||
else
|
||||
buf = ((const char*)arg) + FUSE_COMPAT_WRITE_IN_SIZE;
|
||||
req->f->op.write(req, nodeid, buf, arg->size, arg->offset, &fi);
|
||||
-#else
|
||||
- req->f->op.write(req, nodeid, PARAM(arg), arg->size, arg->offset, &fi);
|
||||
-#endif
|
||||
} else
|
||||
fuse_reply_err(req, ENOSYS);
|
||||
}
|
||||
@@ -1011,6 +1010,39 @@
|
||||
fuse_reply_err(req, ENOSYS);
|
||||
}
|
||||
|
||||
+static void do_ioctl(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
|
||||
+{
|
||||
+ const struct fuse_ioctl_in *arg = (const struct fuse_ioctl_in *) inarg;
|
||||
+ unsigned int flags = arg->flags;
|
||||
+ const void *in_buf = arg->in_size ? PARAM(arg) : NULL;
|
||||
+ struct fuse_file_info fi;
|
||||
+
|
||||
+ if (flags & FUSE_IOCTL_DIR &&
|
||||
+ !(req->f->conn.want & FUSE_CAP_IOCTL_DIR)) {
|
||||
+ fuse_reply_err(req, ENOTTY);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ memset(&fi, 0, sizeof(fi));
|
||||
+ fi.fh = arg->fh;
|
||||
+
|
||||
+/* TODO JPA (need req->ioctl_64bit in obscure fuse_req_t)
|
||||
+// probably a 64 bit ioctl on a 32-bit cpu
|
||||
+// this is to forward a request from the kernel
|
||||
+ if (sizeof(void *) == 4 && req->f->conn.proto_minor >= 16 &&
|
||||
+ !(flags & FUSE_IOCTL_32BIT)) {
|
||||
+ req->ioctl_64bit = 1;
|
||||
+ }
|
||||
+*/
|
||||
+
|
||||
+ if (req->f->op.ioctl)
|
||||
+ req->f->op.ioctl(req, nodeid, arg->cmd,
|
||||
+ (void *)(uintptr_t)arg->arg, &fi, flags,
|
||||
+ in_buf, arg->in_size, arg->out_size);
|
||||
+ else
|
||||
+ fuse_reply_err(req, ENOSYS);
|
||||
+}
|
||||
+
|
||||
static void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
|
||||
{
|
||||
const struct fuse_init_in *arg = (const struct fuse_init_in *) inarg;
|
||||
@@ -1047,6 +1079,8 @@
|
||||
#endif
|
||||
if (arg->flags & FUSE_BIG_WRITES)
|
||||
f->conn.capable |= FUSE_CAP_BIG_WRITES;
|
||||
+ if (arg->flags & FUSE_HAS_IOCTL_DIR)
|
||||
+ f->conn.capable |= FUSE_CAP_IOCTL_DIR;
|
||||
} else {
|
||||
f->conn.async_read = 0;
|
||||
f->conn.max_readahead = 0;
|
||||
@@ -1069,28 +1103,28 @@
|
||||
memset(&outarg, 0, sizeof(outarg));
|
||||
outarg.major = FUSE_KERNEL_VERSION;
|
||||
/*
|
||||
- * if POSIXACLS is not set, protocol 7.8 provides a good
|
||||
- * compatibility with older kernel modules.
|
||||
- * if POSIXACLS is set, we try to use protocol 7.12 supposed
|
||||
- * to have the ability to process the umask conditionnally,
|
||||
- * but, when using an older kernel module, we fallback to 7.8
|
||||
+ * Suggest using protocol 7.18 when available, and fallback
|
||||
+ * to 7.8 when running on an old kernel.
|
||||
+ * Protocol 7.12 has the ability to process the umask
|
||||
+ * conditionnally (as needed if POSIXACLS is set)
|
||||
+ * Protocol 7.18 has the ability to process the ioctls
|
||||
*/
|
||||
-#ifdef POSIXACLS
|
||||
- if (arg->major > 7 || (arg->major == 7 && arg->minor >= 12))
|
||||
+ if (arg->major > 7 || (arg->major == 7 && arg->minor >= 18)) {
|
||||
outarg.minor = FUSE_KERNEL_MINOR_VERSION;
|
||||
- else
|
||||
- outarg.minor = FUSE_KERNEL_MINOR_FALLBACK;
|
||||
-#else
|
||||
- outarg.minor = FUSE_KERNEL_MINOR_VERSION;
|
||||
+ if (f->conn.want & FUSE_CAP_IOCTL_DIR)
|
||||
+ outarg.flags |= FUSE_HAS_IOCTL_DIR;
|
||||
+#ifdef POSIXACLS
|
||||
+ if (f->conn.want & FUSE_CAP_DONT_MASK)
|
||||
+ outarg.flags |= FUSE_DONT_MASK;
|
||||
#endif
|
||||
+ } else {
|
||||
+ outarg.major = FUSE_KERNEL_MAJOR_FALLBACK;
|
||||
+ outarg.minor = FUSE_KERNEL_MINOR_FALLBACK;
|
||||
+ }
|
||||
if (f->conn.async_read)
|
||||
outarg.flags |= FUSE_ASYNC_READ;
|
||||
if (f->op.getlk && f->op.setlk)
|
||||
outarg.flags |= FUSE_POSIX_LOCKS;
|
||||
-#ifdef POSIXACLS
|
||||
- if (f->conn.want & FUSE_CAP_DONT_MASK)
|
||||
- outarg.flags |= FUSE_DONT_MASK;
|
||||
-#endif
|
||||
if (f->conn.want & FUSE_CAP_BIG_WRITES)
|
||||
outarg.flags |= FUSE_BIG_WRITES;
|
||||
outarg.max_readahead = f->conn.max_readahead;
|
||||
@@ -1191,6 +1225,7 @@
|
||||
[FUSE_CREATE] = { do_create, "CREATE" },
|
||||
[FUSE_INTERRUPT] = { do_interrupt, "INTERRUPT" },
|
||||
[FUSE_BMAP] = { do_bmap, "BMAP" },
|
||||
+ [FUSE_IOCTL] = { do_ioctl, "IOCTL" },
|
||||
[FUSE_DESTROY] = { do_destroy, "DESTROY" },
|
||||
};
|
||||
|
@ -0,0 +1,86 @@
|
||||
# Copyright 1999-2015 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-fs/ntfs3g/ntfs3g-2014.2.15-r1.ebuild,v 1.1 2015/01/29 08:20:05 chutzpah Exp $
|
||||
|
||||
EAPI=5
|
||||
inherit eutils linux-info udev autotools
|
||||
|
||||
MY_PN=${PN/3g/-3g}
|
||||
MY_P=${MY_PN}_ntfsprogs-${PV}
|
||||
|
||||
DESCRIPTION="Open source read-write NTFS driver that runs under FUSE"
|
||||
HOMEPAGE="http://www.tuxera.com/community/ntfs-3g-download/"
|
||||
SRC_URI="http://tuxera.com/opensource/${MY_P}.tgz"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~arm-linux ~x86-linux"
|
||||
IUSE="acl debug +external-fuse ntfsdecrypt +ntfsprogs static-libs suid xattr"
|
||||
|
||||
RDEPEND="!<sys-apps/util-linux-2.20.1-r2
|
||||
!sys-fs/ntfsprogs
|
||||
ntfsdecrypt? (
|
||||
>=dev-libs/libgcrypt-1.2.2:0
|
||||
>=net-libs/gnutls-1.4.4
|
||||
)
|
||||
external-fuse? ( >=sys-fs/fuse-2.8.0 )"
|
||||
DEPEND="${RDEPEND}
|
||||
sys-apps/attr
|
||||
virtual/pkgconfig"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
DOCS="AUTHORS ChangeLog CREDITS README"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${PN}-2014.2.15-no-split-usr.patch
|
||||
"${FILESDIR}"/${PN}-2014.2.15-dont-put-things-in-root.patch
|
||||
"${FILESDIR}"/${P}-update-fuse-lite-to-support-ioctls.patch
|
||||
"${FILESDIR}"/${P}-implement-fstrim.patch
|
||||
"${FILESDIR}"/${P}-fix-fstrim-applied-to-partitons.patch
|
||||
)
|
||||
|
||||
pkg_setup() {
|
||||
if use external-fuse && use kernel_linux; then
|
||||
if kernel_is lt 2 6 9; then
|
||||
die "Your kernel is too old."
|
||||
fi
|
||||
CONFIG_CHECK="~FUSE_FS"
|
||||
FUSE_FS_WARNING="You need to have FUSE module built to use ntfs-3g"
|
||||
linux-info_pkg_setup
|
||||
fi
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
epatch "${PATCHES[@]}"
|
||||
eautoreconf
|
||||
elibtoolize
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
LD="$(tc-getLD).bfd" econf \
|
||||
--prefix="${EPREFIX}"/usr \
|
||||
--exec-prefix="${EPREFIX}"/usr \
|
||||
--docdir="${EPREFIX}"/usr/share/doc/${PF} \
|
||||
$(use_enable debug) \
|
||||
--enable-ldscript \
|
||||
--disable-ldconfig \
|
||||
$(use_enable acl posix-acls) \
|
||||
$(use_enable xattr xattr-mappings) \
|
||||
$(use_enable ntfsdecrypt crypto) \
|
||||
$(use_enable ntfsprogs) \
|
||||
--without-uuid \
|
||||
--enable-extras \
|
||||
$(use_enable static-libs static) \
|
||||
--with-fuse=$(usex external-fuse external internal)
|
||||
}
|
||||
|
||||
src_install() {
|
||||
default
|
||||
|
||||
use suid && fperms u+s /usr/bin/${MY_PN}
|
||||
udev_dorules "${FILESDIR}"/99-ntfs3g.rules
|
||||
prune_libtool_files
|
||||
|
||||
dosym mount.ntfs-3g /usr/sbin/mount.ntfs #374197
|
||||
}
|
Loading…
Reference in new issue