Sync with portage [Thu Jun 20 20:27:43 MSK 2013].

mhiretskiy
root 11 years ago
parent 161a205c6d
commit 016eae5bbb

@ -1,92 +0,0 @@
From f2e0818bc97bfbeba83f6abbb07909a8debcad77 Mon Sep 17 00:00:00 2001
From: Pradeep Kilambi <pkilambi@cisco.com>
Date: Thu, 9 May 2013 09:29:02 -0700
Subject: [PATCH] Allow secure user password update.
This patch allows the ability for user password to be updated via
a command prompt so the password doesnt show up in the bash history.
The prompted password is asked twice to verify the match.
If user cntl-D's the prompt a message appears suggesting user to use
either of the options to update the password.
Fixes: bug#938315
Change-Id: I4271ae569b922f33c34f9b015a7ee6f760414e39
---
keystoneclient/utils.py | 23 ++++++++++++++++++++++-
keystoneclient/v2_0/shell.py | 10 ++++++++--
2 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/keystoneclient/utils.py b/keystoneclient/utils.py
index 3d708ca..f45ec34 100644
--- a/keystoneclient/utils.py
+++ b/keystoneclient/utils.py
@@ -1,5 +1,7 @@
-import uuid
+import getpass
import hashlib
+import sys
+import uuid
import prettytable
@@ -128,3 +130,22 @@ def hash_signed_token(signed_text):
hash_ = hashlib.md5()
hash_.update(signed_text)
return hash_.hexdigest()
+
+
+def prompt_for_password():
+ """
+ Prompt user for password if not provided so the password
+ doesn't show up in the bash history.
+ """
+ if not (hasattr(sys.stdin, 'isatty') and sys.stdin.isatty()):
+ # nothing to do
+ return
+
+ while True:
+ try:
+ new_passwd = getpass.getpass('New Password: ')
+ rep_passwd = getpass.getpass('Repeat New Password: ')
+ if new_passwd == rep_passwd:
+ return new_passwd
+ except EOFError:
+ return
diff --git a/keystoneclient/v2_0/shell.py b/keystoneclient/v2_0/shell.py
index 4c53cf7..0c7c233 100755
--- a/keystoneclient/v2_0/shell.py
+++ b/keystoneclient/v2_0/shell.py
@@ -17,6 +17,7 @@
import argparse
import getpass
+import sys
from keystoneclient.v2_0 import client
from keystoneclient import utils
@@ -103,14 +104,19 @@ def do_user_update(kc, args):
print 'Unable to update user: %s' % e
-@utils.arg('--pass', metavar='<password>', dest='passwd', required=True,
+@utils.arg('--pass', metavar='<password>', dest='passwd', required=False,
help='Desired new password')
@utils.arg('user', metavar='<user>',
help='Name or ID of user to update password')
def do_user_password_update(kc, args):
"""Update user password"""
user = utils.find_resource(kc.users, args.user)
- kc.users.update_password(user, args.passwd)
+ new_passwd = args.passwd or utils.prompt_for_password()
+ if new_passwd is None:
+ msg = ("\nPlease specify password using the --pass option "
+ "or using the prompt")
+ sys.exit(msg)
+ kc.users.update_password(user, new_passwd)
@utils.arg('--current-password', metavar='<current-password>',
--
1.8.1.5

@ -1,49 +0,0 @@
From 1736e2ffb12f70eeebed019448bc14def48aa036 Mon Sep 17 00:00:00 2001
From: Dolph Mathews <dolph.mathews@gmail.com>
Date: Wed, 8 May 2013 10:49:20 -0500
Subject: [PATCH] Securely create signing_dir (bug 1174608)
Also verifies the security of an existing signing_dir.
Change-Id: I0685b4274a94ad3974a2b2a7ab3f45830d3934bb
---
keystoneclient/middleware/auth_token.py | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/keystoneclient/middleware/auth_token.py b/keystoneclient/middleware/auth_token.py
index 0d0e124..e6cf99f 100644
--- a/keystoneclient/middleware/auth_token.py
+++ b/keystoneclient/middleware/auth_token.py
@@ -296,15 +296,20 @@ class AuthProtocol(object):
self.signing_dirname = self._conf_get('signing_dir')
self.LOG.info('Using %s as cache directory for signing certificate' %
self.signing_dirname)
- if (os.path.exists(self.signing_dirname) and
- not os.access(self.signing_dirname, os.W_OK)):
- raise ConfigurationError("unable to access signing dir %s" %
- self.signing_dirname)
-
- if not os.path.exists(self.signing_dirname):
- os.makedirs(self.signing_dirname)
- #will throw IOError if it cannot change permissions
- os.chmod(self.signing_dirname, stat.S_IRWXU)
+ if os.path.exists(self.signing_dirname):
+ if not os.access(self.signing_dirname, os.W_OK):
+ raise ConfigurationError(
+ 'unable to access signing_dir %s' % self.signing_dirname)
+ if os.stat(self.signing_dirname).st_uid != os.getuid():
+ self.LOG.warning(
+ 'signing_dir is not owned by %s' % os.getlogin())
+ current_mode = stat.S_IMODE(os.stat(self.signing_dirname).st_mode)
+ if current_mode != stat.S_IRWXU:
+ self.LOG.warning(
+ 'signing_dir mode is %s instead of %s' %
+ (oct(current_mode), oct(stat.S_IRWXU)))
+ else:
+ os.makedirs(self.signing_dirname, stat.S_IRWXU)
val = '%s/signing_cert.pem' % self.signing_dirname
self.signing_cert_file_name = val
--
1.8.1.5

@ -1,47 +0,0 @@
From 03012e641d6c2a98fbfe3780102e28a65d11a887 Mon Sep 17 00:00:00 2001
From: Dolph Mathews <dolph.mathews@gmail.com>
Date: Fri, 17 May 2013 10:38:25 -0500
Subject: [PATCH] Default signing_dir to secure temp dir (bug 1181157)
Change-Id: I1a29f50b07a60de3d0519bf40074dbea92fa8656
---
keystoneclient/middleware/auth_token.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/keystoneclient/middleware/auth_token.py b/keystoneclient/middleware/auth_token.py
index e6cf99f..befa79e 100644
--- a/keystoneclient/middleware/auth_token.py
+++ b/keystoneclient/middleware/auth_token.py
@@ -150,6 +150,7 @@ import json
import logging
import os
import stat
+import tempfile
import time
import urllib
import webob.exc
@@ -211,8 +212,7 @@ opts = [
cfg.StrOpt('cache', default=None), # env key for the swift cache
cfg.StrOpt('certfile'),
cfg.StrOpt('keyfile'),
- cfg.StrOpt('signing_dir',
- default=os.path.expanduser('~/keystone-signing')),
+ cfg.StrOpt('signing_dir'),
cfg.ListOpt('memcache_servers'),
cfg.IntOpt('token_cache_time', default=300),
cfg.IntOpt('revocation_cache_time', default=1),
@@ -292,8 +292,10 @@ class AuthProtocol(object):
self.cert_file = self._conf_get('certfile')
self.key_file = self._conf_get('keyfile')
- #signing
+ # signing
self.signing_dirname = self._conf_get('signing_dir')
+ if self.signing_dirname is None:
+ self.signing_dirname = tempfile.mkdtemp(prefix='keystone-signing-')
self.LOG.info('Using %s as cache directory for signing certificate' %
self.signing_dirname)
if os.path.exists(self.signing_dirname):
--
1.8.1.5

@ -0,0 +1,745 @@
From eeefb784f24c37d5f56a421e1ccc911cace9385e Mon Sep 17 00:00:00 2001
From: "Bryan D. Payne" <bdpayne@acm.org>
Date: Fri, 7 Jun 2013 09:34:25 -0700
Subject: [PATCH] Fix memcache encryption middleware
This fixes lp1175367 and lp1175368 by redesigning the memcache crypt
middleware to not do dangerous things. It is forward compatible, but
will invalidate any existing ephemeral encrypted or signed memcache
entries.
Change-Id: Ice8724949a48bfad3b8b7c41b5f50a18a9ad9f42
Signed-off-by: Bryan D. Payne <bdpayne@acm.org>
---
doc/source/middlewarearchitecture.rst | 37 +++---
keystoneclient/middleware/auth_token.py | 131 +++++++++---------
keystoneclient/middleware/memcache_crypt.py | 197 +++++++++++++++++-----------
tests/test_auth_token_middleware.py | 89 +++----------
tests/test_memcache_crypt.py | 96 ++++++++------
5 files changed, 277 insertions(+), 273 deletions(-)
diff --git a/doc/source/middlewarearchitecture.rst b/doc/source/middlewarearchitecture.rst
index 803fbd9..894d40d 100644
--- a/doc/source/middlewarearchitecture.rst
+++ b/doc/source/middlewarearchitecture.rst
@@ -1,5 +1,5 @@
..
- Copyright 2011-2012 OpenStack, LLC
+ Copyright 2011-2013 OpenStack, LLC
All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may
@@ -188,7 +188,8 @@ Configuration Options
the timeout when validating token by http).
* ``auth_port``: (optional, default `35357`) the port used to validate tokens
* ``auth_protocol``: (optional, default `https`)
-* ``auth_uri``: (optional, defaults to `auth_protocol`://`auth_host`:`auth_port`)
+* ``auth_uri``: (optional, defaults to
+ `auth_protocol`://`auth_host`:`auth_port`)
* ``certfile``: (required, if Keystone server requires client cert)
* ``keyfile``: (required, if Keystone server requires client cert) This can be
the same as the certfile if the certfile includes the private key.
@@ -232,22 +233,24 @@ Memcache Protection
===================
When using memcached, we are storing user tokens and token validation
-information into the cache as raw data. Which means anyone who have access
-to the memcache servers can read and modify data stored there. To mitigate
-this risk, ``auth_token`` middleware provides an option to either encrypt
-or authenticate the token data stored in the cache.
-
-* ``memcache_security_strategy``: (optional) if defined, indicate whether token
- data should be encrypted or authenticated. Acceptable values are ``ENCRYPT``
- or ``MAC``. If ``ENCRYPT``, token data is encrypted in the cache. If
- ``MAC``, token data is authenticated (with HMAC) in the cache. If its value
- is neither ``MAC`` nor ``ENCRYPT``, ``auth_token`` will raise an exception
- on initialization.
+information into the cache as raw data. Which means that anyone who
+has access to the memcache servers can read and modify data stored
+there. To mitigate this risk, ``auth_token`` middleware provides an
+option to authenticate and optionally encrypt the token data stored in
+the cache.
+
+* ``memcache_security_strategy``: (optional) if defined, indicate
+ whether token data should be authenticated or authenticated and
+ encrypted. Acceptable values are ``MAC`` or ``ENCRYPT``. If ``MAC``,
+ token data is authenticated (with HMAC) in the cache. If
+ ``ENCRYPT``, token data is encrypted and authenticated in the
+ cache. If the value is not one of these options or empty,
+ ``auth_token`` will raise an exception on initialization.
* ``memcache_secret_key``: (optional, mandatory if
- ``memcache_security_strategy`` is defined) if defined,
- a random string to be used for key derivation. If
- ``memcache_security_strategy`` is defined and ``memcache_secret_key`` is
- absent, ``auth_token`` will raise an exception on initialization.
+ ``memcache_security_strategy`` is defined) this string is used for
+ key derivation. If ``memcache_security_strategy`` is defined and
+ ``memcache_secret_key`` is absent, ``auth_token`` will raise an
+ exception on initialization.
Exchanging User Information
===========================
diff --git a/keystoneclient/middleware/auth_token.py b/keystoneclient/middleware/auth_token.py
index 7e3012c..e50f723 100644
--- a/keystoneclient/middleware/auth_token.py
+++ b/keystoneclient/middleware/auth_token.py
@@ -222,6 +222,7 @@ opts = [
CONF.register_opts(opts, group='keystone_authtoken')
LIST_OF_VERSIONS_TO_ATTEMPT = ['v2.0', 'v3.0']
+CACHE_KEY_TEMPLATE = 'tokens/%s'
def will_expire_soon(expiry):
@@ -847,91 +848,81 @@ class AuthProtocol(object):
env_key = self._header_to_env_var(key)
return env.get(env_key, default)
- def _protect_cache_value(self, token, data):
- """ Encrypt or sign data if necessary. """
- try:
- if self._memcache_security_strategy == 'ENCRYPT':
- return memcache_crypt.encrypt_data(token,
- self._memcache_secret_key,
- data)
- elif self._memcache_security_strategy == 'MAC':
- return memcache_crypt.sign_data(token, data)
- else:
- return data
- except:
- msg = 'Failed to encrypt/sign cache data.'
- self.LOG.exception(msg)
- return data
-
- def _unprotect_cache_value(self, token, data):
- """ Decrypt or verify signed data if necessary. """
- if data is None:
- return data
-
- try:
- if self._memcache_security_strategy == 'ENCRYPT':
- return memcache_crypt.decrypt_data(token,
- self._memcache_secret_key,
- data)
- elif self._memcache_security_strategy == 'MAC':
- return memcache_crypt.verify_signed_data(token, data)
- else:
- return data
- except:
- msg = 'Failed to decrypt/verify cache data.'
- self.LOG.exception(msg)
- # this should have the same effect as data not found in cache
- return None
-
- def _get_cache_key(self, token):
- """ Return the cache key.
-
- Do not use clear token as key if memcache protection is on.
-
- """
- htoken = token
- if self._memcache_security_strategy in ('ENCRYPT', 'MAC'):
- derv_token = token + self._memcache_secret_key
- htoken = memcache_crypt.hash_data(derv_token)
- return 'tokens/%s' % htoken
-
- def _cache_get(self, token):
+ def _cache_get(self, token, ignore_expires=False):
"""Return token information from cache.
If token is invalid raise InvalidUserToken
return token only if fresh (not expired).
"""
+
if self._cache and token:
- key = self._get_cache_key(token)
- cached = self._cache.get(key)
- cached = self._unprotect_cache_value(token, cached)
+ if self._memcache_security_strategy is None:
+ key = CACHE_KEY_TEMPLATE % token
+ serialized = self._cache.get(key)
+ else:
+ keys = memcache_crypt.derive_keys(
+ token,
+ self._memcache_secret_key,
+ self._memcache_security_strategy)
+ cache_key = CACHE_KEY_TEMPLATE % (
+ memcache_crypt.get_cache_key(keys))
+ raw_cached = self._cache.get(cache_key)
+ try:
+ # unprotect_data will return None if raw_cached is None
+ serialized = memcache_crypt.unprotect_data(keys,
+ raw_cached)
+ except Exception:
+ msg = 'Failed to decrypt/verify cache data'
+ self.LOG.exception(msg)
+ # this should have the same effect as data not
+ # found in cache
+ serialized = None
+
+ if serialized is None:
+ return None
+
+ # Note that 'invalid' and (data, expires) are the only
+ # valid types of serialized cache entries, so there is not
+ # a collision with json.loads(serialized) == None.
+ cached = json.loads(serialized)
if cached == 'invalid':
self.LOG.debug('Cached Token %s is marked unauthorized', token)
raise InvalidUserToken('Token authorization failed')
- if cached:
- data, expires = cached
- if time.time() < float(expires):
- self.LOG.debug('Returning cached token %s', token)
- return data
- else:
- self.LOG.debug('Cached Token %s seems expired', token)
-
- def _cache_store(self, token, data, expires=None):
- """ Store value into memcache. """
- key = self._get_cache_key(token)
- data = self._protect_cache_value(token, data)
- data_to_store = data
- if expires:
- data_to_store = (data, expires)
+
+ data, expires = cached
+ if ignore_expires or time.time() < float(expires):
+ self.LOG.debug('Returning cached token %s', token)
+ return data
+ else:
+ self.LOG.debug('Cached Token %s seems expired', token)
+
+ def _cache_store(self, token, data):
+ """ Store value into memcache.
+
+ data may be the string 'invalid' or a tuple like (data, expires)
+
+ """
+ serialized_data = json.dumps(data)
+ if self._memcache_security_strategy is None:
+ cache_key = CACHE_KEY_TEMPLATE % token
+ data_to_store = serialized_data
+ else:
+ keys = memcache_crypt.derive_keys(
+ token,
+ self._memcache_secret_key,
+ self._memcache_security_strategy)
+ cache_key = CACHE_KEY_TEMPLATE % memcache_crypt.get_cache_key(keys)
+ data_to_store = memcache_crypt.protect_data(keys, serialized_data)
+
# we need to special-case set() because of the incompatibility between
# Swift MemcacheRing and python-memcached. See
# https://bugs.launchpad.net/swift/+bug/1095730
if self._use_keystone_cache:
- self._cache.set(key,
+ self._cache.set(cache_key,
data_to_store,
time=self.token_cache_time)
else:
- self._cache.set(key,
+ self._cache.set(cache_key,
data_to_store,
timeout=self.token_cache_time)
@@ -959,7 +950,7 @@ class AuthProtocol(object):
"""
if self._cache:
self.LOG.debug('Storing %s token in memcache', token)
- self._cache_store(token, data, expires)
+ self._cache_store(token, (data, expires))
def _cache_store_invalid(self, token):
"""Store invalid token in cache."""
diff --git a/keystoneclient/middleware/memcache_crypt.py b/keystoneclient/middleware/memcache_crypt.py
index 91e261d..6cadf3a 100755
--- a/keystoneclient/middleware/memcache_crypt.py
+++ b/keystoneclient/middleware/memcache_crypt.py
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2010-2012 OpenStack LLC
+# Copyright 2010-2013 OpenStack LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,33 +18,34 @@
"""
Utilities for memcache encryption and integrity check.
-Data is serialized before been encrypted or MACed. Encryption have a
-dependency on the pycrypto. If pycrypto is not available,
-CryptoUnabailableError will be raised.
+Data should be serialized before entering these functions. Encryption
+has a dependency on the pycrypto. If pycrypto is not available,
+CryptoUnavailableError will be raised.
-Encrypted data stored in memcache are prefixed with '{ENCRYPT:AES256}'.
-
-MACed data stored in memcache are prefixed with '{MAC:SHA1}'.
+This module will not be called unless signing or encryption is enabled
+in the config. It will always validate signatures, and will decrypt
+data if encryption is enabled. It is not valid to mix protection
+modes.
"""
import base64
import functools
import hashlib
-import json
+import hmac
+import math
import os
-# make sure pycrypt is available
+# make sure pycrypto is available
try:
from Crypto.Cipher import AES
except ImportError:
AES = None
-
-# prefix marker indicating data is HMACed (signed by a secret key)
-MAC_MARKER = '{MAC:SHA1}'
-# prefix marker indicating data is encrypted
-ENCRYPT_MARKER = '{ENCRYPT:AES256}'
+HASH_FUNCTION = hashlib.sha384
+DIGEST_LENGTH = HASH_FUNCTION().digest_size
+DIGEST_SPLIT = DIGEST_LENGTH // 3
+DIGEST_LENGTH_B64 = 4 * int(math.ceil(DIGEST_LENGTH / 3.0))
class InvalidMacError(Exception):
@@ -81,77 +82,121 @@ def assert_crypto_availability(f):
return wrapper
-def generate_aes_key(token, secret):
- """ Generates and returns a 256 bit AES key, based on sha256 hash. """
- return hashlib.sha256(token + secret).digest()
-
-
-def compute_mac(token, serialized_data):
- """ Computes and returns the base64 encoded MAC. """
- return hash_data(serialized_data + token)
+def constant_time_compare(first, second):
+ """ Returns True if both string inputs are equal, otherwise False
+ This function should take a constant amount of time regardless of
+ how many characters in the strings match.
-def hash_data(data):
- """ Return the base64 encoded SHA1 hash of the data. """
- return base64.b64encode(hashlib.sha1(data).digest())
-
-
-def sign_data(token, data):
- """ MAC the data using SHA1. """
- mac_data = {}
- mac_data['serialized_data'] = json.dumps(data)
- mac = compute_mac(token, mac_data['serialized_data'])
- mac_data['mac'] = mac
- md = MAC_MARKER + base64.b64encode(json.dumps(mac_data))
- return md
+ """
+ if len(first) != len(second):
+ return False
+ result = 0
+ for x, y in zip(first, second):
+ result |= ord(x) ^ ord(y)
+ return result == 0
+
+
+def derive_keys(token, secret, strategy):
+ """ Derives keys for MAC and ENCRYPTION from the user-provided
+ secret. The resulting keys should be passed to the protect and
+ unprotect functions.
+
+ As suggested by NIST Special Publication 800-108, this uses the
+ first 128 bits from the sha384 KDF for the obscured cache key
+ value, the second 128 bits for the message authentication key and
+ the remaining 128 bits for the encryption key.
+
+ This approach is faster than computing a separate hmac as the KDF
+ for each desired key.
+ """
+ digest = hmac.new(secret, token + strategy, HASH_FUNCTION).digest()
+ return {'CACHE_KEY': digest[:DIGEST_SPLIT],
+ 'MAC': digest[DIGEST_SPLIT: 2 * DIGEST_SPLIT],
+ 'ENCRYPTION': digest[2 * DIGEST_SPLIT:],
+ 'strategy': strategy}
-def verify_signed_data(token, data):
- """ Verify data integrity by ensuring MAC is valid. """
- if data.startswith(MAC_MARKER):
- try:
- data = data[len(MAC_MARKER):]
- mac_data = json.loads(base64.b64decode(data))
- mac = compute_mac(token, mac_data['serialized_data'])
- if mac != mac_data['mac']:
- raise InvalidMacError('invalid MAC; expect=%s, actual=%s' %
- (mac_data['mac'], mac))
- return json.loads(mac_data['serialized_data'])
- except:
- raise InvalidMacError('invalid MAC; data appeared to be corrupted')
- else:
- # doesn't appear to be MACed data
- return data
+def sign_data(key, data):
+ """ Sign the data using the defined function and the derived key"""
+ mac = hmac.new(key, data, HASH_FUNCTION).digest()
+ return base64.b64encode(mac)
@assert_crypto_availability
-def encrypt_data(token, secret, data):
- """ Encryptes the data with the given secret key. """
+def encrypt_data(key, data):
+ """ Encrypt the data with the given secret key.
+
+ Padding is n bytes of the value n, where 1 <= n <= blocksize.
+ """
iv = os.urandom(16)
- aes_key = generate_aes_key(token, secret)
- cipher = AES.new(aes_key, AES.MODE_CFB, iv)
- data = json.dumps(data)
- encoded_data = base64.b64encode(iv + cipher.encrypt(data))
- encoded_data = ENCRYPT_MARKER + encoded_data
- return encoded_data
+ cipher = AES.new(key, AES.MODE_CBC, iv)
+ padding = 16 - len(data) % 16
+ return iv + cipher.encrypt(data + chr(padding) * padding)
@assert_crypto_availability
-def decrypt_data(token, secret, data):
+def decrypt_data(key, data):
""" Decrypt the data with the given secret key. """
- if data.startswith(ENCRYPT_MARKER):
- try:
- # encrypted data
- encoded_data = data[len(ENCRYPT_MARKER):]
- aes_key = generate_aes_key(token, secret)
- decoded_data = base64.b64decode(encoded_data)
- iv = decoded_data[:16]
- encrypted_data = decoded_data[16:]
- cipher = AES.new(aes_key, AES.MODE_CFB, iv)
- decrypted_data = cipher.decrypt(encrypted_data)
- return json.loads(decrypted_data)
- except:
- raise DecryptError('data appeared to be corrupted')
- else:
- # doesn't appear to be encrypted data
- return data
+ iv = data[:16]
+ cipher = AES.new(key, AES.MODE_CBC, iv)
+ try:
+ result = cipher.decrypt(data[16:])
+ except Exception:
+ raise DecryptError('Encrypted data appears to be corrupted.')
+
+ # Strip the last n padding bytes where n is the last value in
+ # the plaintext
+ padding = ord(result[-1])
+ return result[:-1 * padding]
+
+
+def protect_data(keys, data):
+ """ Given keys and serialized data, returns an appropriately
+ protected string suitable for storage in the cache.
+
+ """
+ if keys['strategy'] == 'ENCRYPT':
+ data = encrypt_data(keys['ENCRYPTION'], data)
+
+ encoded_data = base64.b64encode(data)
+
+ signature = sign_data(keys['MAC'], encoded_data)
+ return signature + encoded_data
+
+
+def unprotect_data(keys, signed_data):
+ """ Given keys and cached string data, verifies the signature,
+ decrypts if necessary, and returns the original serialized data.
+
+ """
+ # cache backends return None when no data is found. We don't mind
+ # that this particular special value is unsigned.
+ if signed_data is None:
+ return None
+
+ # First we calculate the signature
+ provided_mac = signed_data[:DIGEST_LENGTH_B64]
+ calculated_mac = sign_data(
+ keys['MAC'],
+ signed_data[DIGEST_LENGTH_B64:])
+
+ # Then verify that it matches the provided value
+ if not constant_time_compare(provided_mac, calculated_mac):
+ raise InvalidMacError('Invalid MAC; data appears to be corrupted.')
+
+ data = base64.b64decode(signed_data[DIGEST_LENGTH_B64:])
+
+ # then if necessary decrypt the data
+ if keys['strategy'] == 'ENCRYPT':
+ data = decrypt_data(keys['ENCRYPTION'], data)
+
+ return data
+
+
+def get_cache_key(keys):
+ """ Given keys generated by derive_keys(), returns a base64
+ encoded value suitable for use as a cache key in memcached.
+
+ """
+ return base64.b64encode(keys['CACHE_KEY'])
diff --git a/tests/test_auth_token_middleware.py b/tests/test_auth_token_middleware.py
index 06054d0..a428504 100644
--- a/tests/test_auth_token_middleware.py
+++ b/tests/test_auth_token_middleware.py
@@ -28,7 +28,6 @@ import webob
from keystoneclient.common import cms
from keystoneclient import utils
from keystoneclient.middleware import auth_token
-from keystoneclient.middleware import memcache_crypt
from keystoneclient.openstack.common import memorycache
from keystoneclient.openstack.common import jsonutils
from keystoneclient.openstack.common import timeutils
@@ -1013,9 +1012,7 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
def _get_cached_token(self, token):
token_id = cms.cms_hash_token(token)
# NOTE(vish): example tokens are expired so skip the expiration check.
- key = self.middleware._get_cache_key(token_id)
- cached = self.middleware._cache.get(key)
- return self.middleware._unprotect_cache_value(token, cached)
+ return self.middleware._cache_get(token_id, ignore_expires=True)
def test_memcache(self):
req = webob.Request.blank('/')
@@ -1036,7 +1033,8 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
token = 'invalid-token'
req.headers['X-Auth-Token'] = token
self.middleware(req.environ, self.start_fake_response)
- self.assertEqual(self._get_cached_token(token), "invalid")
+ self.assertRaises(auth_token.InvalidUserToken,
+ self._get_cached_token, token)
def test_memcache_set_expired(self):
token_cache_time = 10
@@ -1096,18 +1094,11 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
'memcache_secret_key': 'mysecret'
}
self.set_middleware(conf=conf)
- encrypted_data = self.middleware._protect_cache_value(
- 'token', TOKEN_RESPONSES[self.token_dict['uuid_token_default']])
- self.assertEqual('{ENCRYPT:AES256}', encrypted_data[:16])
- self.assertEqual(
- TOKEN_RESPONSES[self.token_dict['uuid_token_default']],
- self.middleware._unprotect_cache_value('token', encrypted_data))
- # should return None if unable to decrypt
- self.assertIsNone(
- self.middleware._unprotect_cache_value(
- 'token', '{ENCRYPT:AES256}corrupted'))
- self.assertIsNone(
- self.middleware._unprotect_cache_value('mykey', encrypted_data))
+ token = 'my_token'
+ data = ('this_data', 10e100)
+ self.middleware._init_cache({})
+ self.middleware._cache_store(token, data)
+ self.assertEqual(self.middleware._cache_get(token), data[0])
def test_sign_cache_data(self):
conf = {
@@ -1119,19 +1110,11 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
'memcache_secret_key': 'mysecret'
}
self.set_middleware(conf=conf)
- signed_data = self.middleware._protect_cache_value(
- 'mykey', TOKEN_RESPONSES[self.token_dict['uuid_token_default']])
- expected = '{MAC:SHA1}'
- self.assertEqual(
- signed_data[:10],
- expected)
- self.assertEqual(
- TOKEN_RESPONSES[self.token_dict['uuid_token_default']],
- self.middleware._unprotect_cache_value('mykey', signed_data))
- # should return None on corrupted data
- self.assertIsNone(
- self.middleware._unprotect_cache_value('mykey',
- '{MAC:SHA1}corrupted'))
+ token = 'my_token'
+ data = ('this_data', 10e100)
+ self.middleware._init_cache({})
+ self.middleware._cache_store(token, data)
+ self.assertEqual(self.middleware._cache_get(token), data[0])
def test_no_memcache_protection(self):
conf = {
@@ -1142,47 +1125,11 @@ class AuthTokenMiddlewareTest(BaseAuthTokenMiddlewareTest):
'memcache_secret_key': 'mysecret'
}
self.set_middleware(conf=conf)
- data = self.middleware._protect_cache_value('mykey',
- 'This is a test!')
- self.assertEqual(data, 'This is a test!')
- self.assertEqual(
- 'This is a test!',
- self.middleware._unprotect_cache_value('mykey', data))
-
- def test_get_cache_key(self):
- conf = {
- 'auth_host': 'keystone.example.com',
- 'auth_port': 1234,
- 'auth_admin_prefix': '/testadmin',
- 'memcache_servers': ['localhost:11211'],
- 'memcache_secret_key': 'mysecret'
- }
- self.set_middleware(conf=conf)
- self.assertEqual(
- 'tokens/mytoken',
- self.middleware._get_cache_key('mytoken'))
- conf = {
- 'auth_host': 'keystone.example.com',
- 'auth_port': 1234,
- 'auth_admin_prefix': '/testadmin',
- 'memcache_servers': ['localhost:11211'],
- 'memcache_security_strategy': 'mac',
- 'memcache_secret_key': 'mysecret'
- }
- self.set_middleware(conf=conf)
- expected = 'tokens/' + memcache_crypt.hash_data('mytoken' + 'mysecret')
- self.assertEqual(self.middleware._get_cache_key('mytoken'), expected)
- conf = {
- 'auth_host': 'keystone.example.com',
- 'auth_port': 1234,
- 'auth_admin_prefix': '/testadmin',
- 'memcache_servers': ['localhost:11211'],
- 'memcache_security_strategy': 'Encrypt',
- 'memcache_secret_key': 'abc!'
- }
- self.set_middleware(conf=conf)
- expected = 'tokens/' + memcache_crypt.hash_data('mytoken' + 'abc!')
- self.assertEqual(self.middleware._get_cache_key('mytoken'), expected)
+ token = 'my_token'
+ data = ('this_data', 10e100)
+ self.middleware._init_cache({})
+ self.middleware._cache_store(token, data)
+ self.assertEqual(self.middleware._cache_get(token), data[0])
def test_assert_valid_memcache_protection_config(self):
# test missing memcache_secret_key
diff --git a/tests/test_memcache_crypt.py b/tests/test_memcache_crypt.py
index b2281d9..524cd21 100644
--- a/tests/test_memcache_crypt.py
+++ b/tests/test_memcache_crypt.py
@@ -4,48 +4,66 @@ from keystoneclient.middleware import memcache_crypt
class MemcacheCryptPositiveTests(testtools.TestCase):
- def test_generate_aes_key(self):
- self.assertEqual(
- len(memcache_crypt.generate_aes_key('Gimme Da Key', 'hush')), 32)
+ def _setup_keys(self, strategy):
+ return memcache_crypt.derive_keys('token', 'secret', strategy)
- def test_compute_mac(self):
- self.assertEqual(
- memcache_crypt.compute_mac('mykey', 'This is a test!'),
- 'tREu41yR5tEgeBWIuv9ag4AeKA8=')
+ def test_constant_time_compare(self):
+ # make sure it works as a compare, the "constant time" aspect
+ # isn't appropriate to test in unittests
+ ctc = memcache_crypt.constant_time_compare
+ self.assertTrue(ctc('abcd', 'abcd'))
+ self.assertTrue(ctc('', ''))
+ self.assertFalse(ctc('abcd', 'efgh'))
+ self.assertFalse(ctc('abc', 'abcd'))
+ self.assertFalse(ctc('abc', 'abc\x00'))
+ self.assertFalse(ctc('', 'abc'))
+
+ def test_derive_keys(self):
+ keys = memcache_crypt.derive_keys('token', 'secret', 'strategy')
+ self.assertEqual(len(keys['ENCRYPTION']),
+ len(keys['CACHE_KEY']))
+ self.assertEqual(len(keys['CACHE_KEY']),
+ len(keys['MAC']))
+ self.assertNotEqual(keys['ENCRYPTION'],
+ keys['MAC'])
+ self.assertIn('strategy', keys.keys())
+
+ def test_key_strategy_diff(self):
+ k1 = self._setup_keys('MAC')
+ k2 = self._setup_keys('ENCRYPT')
+ self.assertNotEqual(k1, k2)
def test_sign_data(self):
- expected = '{MAC:SHA1}eyJtYWMiOiAiM0FrQmdPZHRybGo1RFFESHA1eUxqcDVq' +\
- 'Si9BPSIsICJzZXJpYWxpemVkX2RhdGEiOiAiXCJUaGlzIGlzIGEgdG' +\
- 'VzdCFcIiJ9'
- self.assertEqual(
- memcache_crypt.sign_data('mykey', 'This is a test!'),
- expected)
-
- def test_verify_signed_data(self):
- signed = memcache_crypt.sign_data('mykey', 'Testz')
- self.assertEqual(
- memcache_crypt.verify_signed_data('mykey', signed),
- 'Testz')
- self.assertEqual(
- memcache_crypt.verify_signed_data('aasSFWE13WER', 'not MACed'),
- 'not MACed')
-
- def test_encrypt_data(self):
- expected = '{ENCRYPT:AES256}'
- self.assertEqual(
- memcache_crypt.encrypt_data('mykey', 'mysecret',
- 'This is a test!')[:16],
- expected)
-
- def test_decrypt_data(self):
- encrypted = memcache_crypt.encrypt_data('mykey', 'mysecret', 'Testz')
- self.assertEqual(
- memcache_crypt.decrypt_data('mykey', 'mysecret', encrypted),
- 'Testz')
- self.assertEqual(
- memcache_crypt.decrypt_data('mykey', 'mysecret',
- 'Not Encrypted!'),
- 'Not Encrypted!')
+ keys = self._setup_keys('MAC')
+ sig = memcache_crypt.sign_data(keys['MAC'], 'data')
+ self.assertEqual(len(sig), memcache_crypt.DIGEST_LENGTH_B64)
+
+ def test_encryption(self):
+ keys = self._setup_keys('ENCRYPT')
+ # what you put in is what you get out
+ for data in ['data', '1234567890123456', '\x00\xFF' * 13
+ ] + [chr(x % 256) * x for x in range(768)]:
+ crypt = memcache_crypt.encrypt_data(keys['ENCRYPTION'], data)
+ decrypt = memcache_crypt.decrypt_data(keys['ENCRYPTION'], crypt)
+ self.assertEqual(data, decrypt)
+ self.assertRaises(memcache_crypt.DecryptError,
+ memcache_crypt.decrypt_data,
+ keys['ENCRYPTION'], crypt[:-1])
+
+ def test_protect_wrappers(self):
+ data = 'My Pretty Little Data'
+ for strategy in ['MAC', 'ENCRYPT']:
+ keys = self._setup_keys(strategy)
+ protected = memcache_crypt.protect_data(keys, data)
+ self.assertNotEqual(protected, data)
+ if strategy == 'ENCRYPT':
+ self.assertNotIn(data, protected)
+ unprotected = memcache_crypt.unprotect_data(keys, protected)
+ self.assertEqual(data, unprotected)
+ self.assertRaises(memcache_crypt.InvalidMacError,
+ memcache_crypt.unprotect_data,
+ keys, protected[:-1])
+ self.assertIsNone(memcache_crypt.unprotect_data(keys, None))
def test_no_pycrypt(self):
aes = memcache_crypt.AES
--
1.8.1.5

@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-python/python-keystoneclient/python-keystoneclient-0.2.4-r1.ebuild,v 1.1 2013/05/31 15:08:21 prometheanfire Exp $
# $Header: /var/cvsroot/gentoo-x86/dev-python/python-keystoneclient/python-keystoneclient-0.2.4-r2.ebuild,v 1.1 2013/06/20 14:39:43 prometheanfire Exp $
EAPI=5
#restricted due to packages missing and bad depends in the test ==webob-1.0.8
@ -48,6 +48,7 @@ RDEPEND=">=dev-python/d2to1-0.2.10[${PYTHON_USEDEP}]
virtual/python-argparse[${PYTHON_USEDEP}]"
PATCHES=(
"${FILESDIR}/0.2.4-CVE-2013-2166-7.patch"
)
# "${FILESDIR}/0.2.3-CVE-2013-2104.patch"

@ -1,2 +1,3 @@
DIST mingw-w64-v2.0.1.tar.gz 7006630 SHA256 3ccc86990e1ce4680dda61db3b88567f21bf91edc5fe0c26aa9e3cc7b64786c7 SHA512 adcf76b64308ac6f22d52155ce2cf4aa27acc5466bfd54b2615cb680b11648a9f7b90c0a12b8cf5cfa958daf28f1d73d892798aacee98d00f05dfd6500cea996 WHIRLPOOL 04863a5b5848dd40e94c94cbfcca772a792ee9c5d97c60cad9825ae14aca37165ccb366516325b7c12bdcdadccddbaafea711280c01d6cf9e6c8c4f31bedbfed
DIST mingw-w64-v2.0.7.tar.gz 7036448 SHA256 6e38356e0224b5c262beb792f28c23e8c7192b069083f5b0260963e39fbb13b0 SHA512 54a62feacd532129522a0d71e05944eb888c4fcfdfdea5d2bdb740292957e83aafb4ad45b0a1a57902e718be1ce3bc56a0c676e5ceadf1cef33f2e83e85605f5 WHIRLPOOL cc3c4c9daf8abd3dfafeed285c41ab60376e3c628515c1b32001117ff00247f03ae5bc343bfb8454a8e1410064de27b681465964fe9f8225d77ec7be7837294e
DIST mingw-w64-v2.0.8.tar.gz 7017057 SHA256 1a5a2c57f90c7f1b5eb8402a52f93de645925a8af62c2cfe748f39ce66008cf4 SHA512 c526bad968c74d86e740862f5e492329b32a1782c69b3a22f7203ac7e38697ba2017f95ed7bf519b737328a92d7c1b4e519f9103d634550f30bdb4a21921303e WHIRLPOOL 913bc444941c4c9c630404847cfb9bb54083fcd366a240e47992d3ee65cfc4c86f340099970243d3d251d5a1e5a00005c09e9d1aecb884256e125155bbcfbd0e

@ -0,0 +1,74 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-util/mingw64-runtime/mingw64-runtime-2.0.8.ebuild,v 1.1 2013/06/20 14:39:13 lu_zero Exp $
export CBUILD=${CBUILD:-${CHOST}}
export CTARGET=${CTARGET:-${CHOST}}
if [[ ${CTARGET} == ${CHOST} ]] ; then
if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
export CTARGET=${CATEGORY/cross-}
fi
fi
inherit flag-o-matic eutils
DESCRIPTION="Free Win64 runtime and import library definitions"
HOMEPAGE="http://mingw-w64.sourceforge.net/"
SRC_URI="mirror://sourceforge/mingw-w64/mingw-w64-v${PV}.tar.gz"
LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="crosscompile_opts_headers-only"
RESTRICT="strip"
S=${WORKDIR}/mingw-w64-v${PV}/mingw-w64-crt
is_crosscompile() {
[[ ${CHOST} != ${CTARGET} ]]
}
just_headers() {
use crosscompile_opts_headers-only && [[ ${CHOST} != ${CTARGET} ]]
}
pkg_setup() {
if [[ ${CBUILD} == ${CHOST} ]] && [[ ${CHOST} == ${CTARGET} ]] ; then
die "Invalid configuration"
fi
}
src_unpack() {
unpack ${A}
find "${WORKDIR}" -type f -exec touch -r . {} +
}
src_compile() {
# install the local headers as the crt step wants latest
pushd ../mingw-w64-headers >/dev/null
CHOST=${CTARGET} econf --enable-sdk || die
emake install DESTDIR="${WORKDIR}/sysroot" || die
popd >/dev/null
just_headers && return 0
CHOST=${CTARGET} strip-unsupported-flags
append-cppflags -isystem "${WORKDIR}/sysroot/usr/${CTARGET}/include"
CHOST=${CTARGET} econf || die
emake || die
}
src_install() {
insinto /usr/${CTARGET}/usr/include
doins -r "${WORKDIR}"/sysroot/usr/${CTARGET}/include/* || die
if is_crosscompile ; then
# gcc is configured to look at specific hard-coded paths for mingw #419601
dosym usr /usr/${CTARGET}/mingw
dosym usr /usr/${CTARGET}/${CTARGET}
dosym usr/include /usr/${CTARGET}/sys-include
fi
just_headers && return 0
emake install DESTDIR="${D}" || die
env -uRESTRICT CHOST=${CTARGET} prepallstrip
rm -rf "${D}"/usr/doc
}

@ -1,13 +1,14 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/mail-client/trojita/trojita-9999.ebuild,v 1.17 2013/05/07 08:14:42 ago Exp $
# $Header: /var/cvsroot/gentoo-x86/mail-client/trojita/trojita-9999.ebuild,v 1.18 2013/06/20 13:13:20 ago Exp $
EAPI=4
EAPI=5
QT_REQUIRED="4.6.0"
EGIT_REPO_URI="git://anongit.kde.org/${PN}.git"
[[ ${PV} == "9999" ]] && GIT_ECLASS="git-2"
inherit qt4-r2 virtualx ${GIT_ECLASS}
inherit qt4-r2 virtualx cmake-utils ${GIT_ECLASS}
DESCRIPTION="A Qt IMAP e-mail client"
HOMEPAGE="http://trojita.flaska.net/"
@ -40,11 +41,12 @@ DEPEND="${RDEPEND}
)
"
DOCS="README LICENSE"
src_configure() {
local myopts=""
use debug && myopts="$myopts CONFIG+=debug"
use test || myopts="$myopts CONFIG+=disable_tests"
use zlib || myopts="$myopts CONFIG+=disable_zlib"
local mycmakeargs=""
use test || mycmakeargs="$mycmakeargs -DWITHOUT_TESTS=1"
use zlib || mycmakeargs="$mycmakeargs -DWITHOUT_ZLIB=1"
if [[ ${MY_LANGS} ]]; then
rm po/trojita_common_x-test.po
for x in po/*.po; do
@ -54,9 +56,13 @@ src_configure() {
done
fi
eqmake4 PREFIX=/usr $myopts
# the build system is taking a look at `git describe ... --dirty` and
# gentoo's modifications to CMakeLists.txt break these
sed -i "s/--dirty//" "${S}/cmake/GitVersion.cmake"
cmake-utils_src_configure
}
src_test() {
Xemake test
VIRTUALX_COMMAND=cmake-utils_src_test virtualmake
}

@ -1 +1 @@
Thu, 20 Jun 2013 13:06:56 +0000
Thu, 20 Jun 2013 15:36:54 +0000

@ -1 +1 @@
Thu, 20 Jun 2013 13:06:56 +0000
Thu, 20 Jun 2013 15:36:54 +0000

@ -12,4 +12,4 @@ RESTRICT=test
SLOT=0
SRC_URI=mirror://pypi/p/python-keystoneclient/python-keystoneclient-0.2.4.tar.gz
_eclasses_=distutils-r1 6950481ecc2ad548f2d9d116a0936fb8 eutils f31a0ec0d081047cbf9c0bbb4822d831 multibuild 4f797e941786b6313d84053ae3e0ec96 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 python-r1 094dc7421f9aea7525b85b899f67e62a python-utils-r1 9aa9cecaaf78644be7c0b8b8dc814dce toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
_md5_=cacdb36c8a9d072220fd58d625b78783
_md5_=3d0fadd46dd5b8550f766ada715764b3

@ -0,0 +1,11 @@
DEFINED_PHASES=compile install setup unpack
DESCRIPTION=Free Win64 runtime and import library definitions
HOMEPAGE=http://mingw-w64.sourceforge.net/
IUSE=crosscompile_opts_headers-only
KEYWORDS=~amd64 ~x86
LICENSE=BSD
RESTRICT=strip
SLOT=0
SRC_URI=mirror://sourceforge/mingw-w64/mingw-w64-v2.0.8.tar.gz
_eclasses_=eutils f31a0ec0d081047cbf9c0bbb4822d831 flag-o-matic d900015de4e092f26d8c0a18b6bd60de multilib 892e597faee02a5b94eb02ab512e7622 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
_md5_=f04049e018db3879b8abd2eee47e9a08

@ -1,11 +1,11 @@
DEFINED_PHASES=compile configure install prepare test unpack
DEPEND=>=dev-qt/qtgui-4.6.0:4 >=dev-qt/qtsql-4.6.0:4[sqlite] >=dev-qt/qtwebkit-4.6.0:4 test? ( >=dev-qt/qttest-4.6.0:4 ) zlib? ( virtual/pkgconfig sys-libs/zlib ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) dev-vcs/git
DEPEND=>=dev-qt/qtgui-4.6.0:4 >=dev-qt/qtsql-4.6.0:4[sqlite] >=dev-qt/qtwebkit-4.6.0:4 test? ( >=dev-qt/qttest-4.6.0:4 ) zlib? ( virtual/pkgconfig sys-libs/zlib ) test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) sys-devel/make >=dev-util/cmake-2.8.9 userland_GNU? ( >=sys-apps/findutils-4.4.0 ) dev-vcs/git
DESCRIPTION=A Qt IMAP e-mail client
EAPI=4
EAPI=5
HOMEPAGE=http://trojita.flaska.net/
IUSE=debug test +zlib test
LICENSE=|| ( GPL-2 GPL-3 )
RDEPEND=>=dev-qt/qtgui-4.6.0:4 >=dev-qt/qtsql-4.6.0:4[sqlite] >=dev-qt/qtwebkit-4.6.0:4
SLOT=0
_eclasses_=base ec46b36a6f6fd1d0b505a33e0b74e413 eutils f31a0ec0d081047cbf9c0bbb4822d831 git-2 e92e09651292b1bef5656592364550f7 multilib 892e597faee02a5b94eb02ab512e7622 qt4-r2 ce0c9abfee272185e03ab73f09f5fd69 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 virtualx 73cfc129b4b9ba23aed1abb10c825d86
_md5_=63af168c95c8125dce14d0515f10d5f9
_eclasses_=base ec46b36a6f6fd1d0b505a33e0b74e413 cmake-utils 66012c9c0ee3c91534d0eb257ff9b95c eutils f31a0ec0d081047cbf9c0bbb4822d831 flag-o-matic d900015de4e092f26d8c0a18b6bd60de git-2 e92e09651292b1bef5656592364550f7 multilib 892e597faee02a5b94eb02ab512e7622 qt4-r2 ce0c9abfee272185e03ab73f09f5fd69 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 virtualx 73cfc129b4b9ba23aed1abb10c825d86
_md5_=1425a1f2e98e04592a78a9458f484bf3

@ -0,0 +1,14 @@
DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test unpack
DEPEND=>=dev-libs/glib-2.16 >=dev-libs/libxml2-2.6.18 ncurses? ( sys-libs/ncurses[unicode] dbus? ( python_single_target_python2_7? ( dev-lang/python:2.7 ) dev-python/python-exec[python_targets_python2_7(-)?,python_single_target_python2_7(+)?] ) python? ( python_single_target_python2_7? ( dev-lang/python:2.7 ) dev-python/python-exec[python_targets_python2_7(-)?,python_single_target_python2_7(+)?] ) ) gtk? ( >=x11-libs/gtk+-2.10:2[aqua=] x11-libs/libSM xscreensaver? ( x11-libs/libXScrnSaver ) spell? ( >=app-text/gtkspell-2.0.2:2 ) eds? ( >=gnome-extra/evolution-data-server-3.6 ) prediction? ( >=dev-db/sqlite-3.3:3 ) ) gstreamer? ( =media-libs/gstreamer-0.10* =media-libs/gst-plugins-good-0.10* || ( net-libs/farstream:0.1 net-libs/farsight2 ) media-plugins/gst-plugins-meta:0.10 media-plugins/gst-plugins-gconf:0.10 ) zeroconf? ( net-dns/avahi[dbus] ) dbus? ( >=dev-libs/dbus-glib-0.71 >=sys-apps/dbus-0.90 dev-python/dbus-python ) perl? ( >=dev-lang/perl-5.8.2-r1[-build] ) gadu? ( || ( >=net-libs/libgadu-1.11.0[ssl,gnutls] >=net-libs/libgadu-1.11.0[-ssl] ) ) gnutls? ( net-libs/gnutls ) !gnutls? ( >=dev-libs/nss-3.11 ) meanwhile? ( net-libs/meanwhile ) silc? ( >=net-im/silc-toolkit-1.0.1 ) tcl? ( dev-lang/tcl ) tk? ( dev-lang/tk ) sasl? ( dev-libs/cyrus-sasl:2 ) networkmanager? ( net-misc/networkmanager ) idn? ( net-dns/libidn ) !<x11-plugins/pidgin-facebookchat-1.69-r1 dev-lang/perl dev-perl/XML-Parser virtual/pkgconfig gtk? ( x11-proto/scrnsaverproto >=dev-util/intltool-0.41.1 sys-devel/gettext ) dbus? ( python_single_target_python2_7? ( dev-lang/python:2.7 ) dev-python/python-exec[python_targets_python2_7(-)?,python_single_target_python2_7(+)?] ) doc? ( app-doc/doxygen ) !gtk? ( nls? ( >=dev-util/intltool-0.41.1 sys-devel/gettext ) ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool app-arch/xz-utils >=sys-apps/sed-4
DESCRIPTION=GTK Instant Messenger client
EAPI=5
HOMEPAGE=http://pidgin.im/
IUSE=dbus debug doc eds gadu gnutls +gstreamer +gtk idn meanwhile mxit networkmanager nls perl silc tcl tk spell sasl ncurses groupwise prediction python +xscreensaver zephyr zeroconf aqua debug python_targets_python2_7 python_single_target_python2_7
KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos
LICENSE=GPL-2
RDEPEND=>=dev-libs/glib-2.16 >=dev-libs/libxml2-2.6.18 ncurses? ( sys-libs/ncurses[unicode] dbus? ( python_single_target_python2_7? ( dev-lang/python:2.7 ) dev-python/python-exec[python_targets_python2_7(-)?,python_single_target_python2_7(+)?] ) python? ( python_single_target_python2_7? ( dev-lang/python:2.7 ) dev-python/python-exec[python_targets_python2_7(-)?,python_single_target_python2_7(+)?] ) ) gtk? ( >=x11-libs/gtk+-2.10:2[aqua=] x11-libs/libSM xscreensaver? ( x11-libs/libXScrnSaver ) spell? ( >=app-text/gtkspell-2.0.2:2 ) eds? ( >=gnome-extra/evolution-data-server-3.6 ) prediction? ( >=dev-db/sqlite-3.3:3 ) ) gstreamer? ( =media-libs/gstreamer-0.10* =media-libs/gst-plugins-good-0.10* || ( net-libs/farstream:0.1 net-libs/farsight2 ) media-plugins/gst-plugins-meta:0.10 media-plugins/gst-plugins-gconf:0.10 ) zeroconf? ( net-dns/avahi[dbus] ) dbus? ( >=dev-libs/dbus-glib-0.71 >=sys-apps/dbus-0.90 dev-python/dbus-python ) perl? ( >=dev-lang/perl-5.8.2-r1[-build] ) gadu? ( || ( >=net-libs/libgadu-1.11.0[ssl,gnutls] >=net-libs/libgadu-1.11.0[-ssl] ) ) gnutls? ( net-libs/gnutls ) !gnutls? ( >=dev-libs/nss-3.11 ) meanwhile? ( net-libs/meanwhile ) silc? ( >=net-im/silc-toolkit-1.0.1 ) tcl? ( dev-lang/tcl ) tk? ( dev-lang/tk ) sasl? ( dev-libs/cyrus-sasl:2 ) networkmanager? ( net-misc/networkmanager ) idn? ( net-dns/libidn ) !<x11-plugins/pidgin-facebookchat-1.69-r1
REQUIRED_USE=python? ( python_single_target_python2_7? ( python_targets_python2_7 ) ^^ ( python_single_target_python2_7 ) ) dbus? ( python_single_target_python2_7? ( python_targets_python2_7 ) ^^ ( python_single_target_python2_7 ) )
SLOT=0
SRC_URI=mirror://sourceforge/pidgin/pidgin-2.10.7.tar.bz2
_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 base ec46b36a6f6fd1d0b505a33e0b74e413 eutils f31a0ec0d081047cbf9c0bbb4822d831 fdo-mime 0acfe1a88fd8751a1d5dc671168219fa flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnome.org 8fef8f967214f56e08fa92d61163d891 gnome2 7976d3f4d0c0816c67033d3dcd4d9472 gnome2-utils 794d2847b4af390a1e020924876c8297 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 perl-app 20b0a51a72b6d2c8ac53ccab1605737f perl-module ba21eba2562fc2643deeea95fd28665d python-single-r1 7e219c03c7f3c029a5d1030f38aeafef python-utils-r1 9aa9cecaaf78644be7c0b8b8dc814dce toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4
_md5_=ec800bc2fc205be7c3263c0e3c80d6ee

@ -1,10 +0,0 @@
DEFINED_PHASES=install
DEPEND=dev-libs/libgpg-error >=dev-libs/libgcrypt-1.2.0
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=amd64 ~hppa ~ia64 ppc ppc64 sparc x86
LICENSE=GPL-2
RDEPEND=dev-libs/libgpg-error >=dev-libs/libgcrypt-1.2.0
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/libotr-3.1.0.tar.gz
_md5_=d4a6f24a8c9da2d60644f0fc43ad0882

@ -1,10 +0,0 @@
DEFINED_PHASES=install
DEPEND=dev-libs/libgpg-error >=dev-libs/libgcrypt-1.2
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=~alpha amd64 ~arm hppa ~ia64 ppc ppc64 sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x86-macos
LICENSE=GPL-2
RDEPEND=dev-libs/libgpg-error >=dev-libs/libgcrypt-1.2
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/libotr-3.2.0.tar.gz
_md5_=97a251bea5db3ee9d648c313d7b461ee

@ -1,11 +1,11 @@
DEFINED_PHASES=-
DEPEND=>=dev-libs/libgcrypt-1.2 dev-libs/libgpg-error
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
EAPI=4
EAPI=5
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x86-macos
LICENSE=GPL-2
RDEPEND=>=dev-libs/libgcrypt-1.2 dev-libs/libgpg-error
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/libotr-4.0.0.tar.gz
_md5_=2b9445af9892aa072c291e4159ca333d
_md5_=0cc7f708ea0b20d4a5c368d4d2a08837

@ -0,0 +1,14 @@
DEFINED_PHASES=install postinst prepare prerm setup unpack
DEPEND=daemon? ( dev-lang/php[mysql?,postgres?,pcntl,curl] ) !daemon? ( dev-lang/php[mysql?,postgres?,curl] ) || ( virtual/httpd-cgi virtual/httpd-fastcgi ) virtual/httpd-php >=app-admin/webapp-config-1.50.15
DESCRIPTION=Tiny Tiny RSS - A web-based news feed (RSS/Atom) aggregator using AJAX
EAPI=5
HOMEPAGE=http://tt-rss.org/
IUSE=daemon +mysql postgres vhosts
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=daemon? ( dev-lang/php[mysql?,postgres?,pcntl,curl] ) !daemon? ( dev-lang/php[mysql?,postgres?,curl] ) virtual/httpd-php >=app-admin/webapp-config-1.50.15
REQUIRED_USE=|| ( mysql postgres )
SLOT=1.8
SRC_URI=https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.8.tar.gz -> tt-rss-1.8.tar.gz
_eclasses_=depend.apache 1a38534d3f755d1ab1d92ce120bd7dbd depend.php df169a364e191b840b695604097e3c21 eutils f31a0ec0d081047cbf9c0bbb4822d831 multilib 892e597faee02a5b94eb02ab512e7622 phpconfutils e108303831029e5b8a9d24b991b1d62a toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 vcs-snapshot 3facff03591093044e38f21285a02129 webapp 25b9b1696f5e698711f47d45c3d45e3e
_md5_=b6826e8cebf78a6d54583ba9feef420a

@ -1,5 +1,5 @@
DEFINED_PHASES=configure install postinst prepare test
DEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/libXt x11-libs/libXext >=x11-libs/libXrandr-1.3 x11-libs/libXcursor x11-libs/libXfixes x11-libs/libXcomposite x11-libs/libXdamage >=x11-libs/cairo-1.6:=[X,svg] x11-libs/gdk-pixbuf:2[X,introspection?] ) aqua? ( >=x11-libs/cairo-1.6:=[aqua,svg] x11-libs/gdk-pixbuf:2[introspection?] ) xinerama? ( x11-libs/libXinerama ) >=dev-libs/glib-2.30:2 >=x11-libs/pango-1.20[introspection?] >=dev-libs/atk-1.29.2[introspection?] media-libs/fontconfig x11-misc/shared-mime-info cups? ( net-print/cups:= ) introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) !<gnome-base/gail-1000 virtual/pkgconfig !aqua? ( x11-proto/xextproto x11-proto/xproto x11-proto/inputproto x11-proto/damageproto ) xinerama? ( x11-proto/xineramaproto ) dev-libs/gobject-introspection-common >=dev-util/gtk-doc-am-1.11 test? ( x11-themes/hicolor-icon-theme media-fonts/font-misc-misc media-fonts/font-cursor-misc ) >=sys-apps/sed-4 app-arch/xz-utils test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
DEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/libXt x11-libs/libXext >=x11-libs/libXrandr-1.3 x11-libs/libXcursor x11-libs/libXfixes x11-libs/libXcomposite x11-libs/libXdamage >=x11-libs/cairo-1.6:=[X,svg] x11-libs/gdk-pixbuf:2[X,introspection?] ) aqua? ( >=x11-libs/cairo-1.6:=[aqua,svg] x11-libs/gdk-pixbuf:2[introspection?] ) xinerama? ( x11-libs/libXinerama ) >=dev-libs/glib-2.30:2 >=x11-libs/pango-1.20[introspection?] >=dev-libs/atk-1.29.2[introspection?] media-libs/fontconfig x11-misc/shared-mime-info cups? ( net-print/cups:= ) introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) !<gnome-base/gail-1000 virtual/pkgconfig !aqua? ( x11-proto/xextproto x11-proto/xproto x11-proto/inputproto x11-proto/damageproto ) xinerama? ( x11-proto/xineramaproto ) >=dev-util/gtk-doc-am-1.11 test? ( x11-themes/hicolor-icon-theme media-fonts/font-misc-misc media-fonts/font-cursor-misc ) >=sys-apps/sed-4 app-arch/xz-utils test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
DESCRIPTION=Gimp ToolKit +
EAPI=5
HOMEPAGE=http://www.gtk.org/
@ -11,4 +11,4 @@ RDEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/lib
SLOT=2
SRC_URI=mirror://gnome/sources/gtk+/2.24/gtk+-2.24.18.tar.xz
_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils f31a0ec0d081047cbf9c0bbb4822d831 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnome.org 8fef8f967214f56e08fa92d61163d891 gnome2-utils 794d2847b4af390a1e020924876c8297 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 readme.gentoo 2466b2f6a77a9600954c6b99ebca6e02 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
_md5_=d75f9c4f0951876fbc2db10641a70e36
_md5_=549c5746bd6745fe9c658cdc9beb448f

@ -1,5 +1,5 @@
DEFINED_PHASES=configure install postinst prepare test
DEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/libXt x11-libs/libXext >=x11-libs/libXrandr-1.3 x11-libs/libXcursor x11-libs/libXfixes x11-libs/libXcomposite x11-libs/libXdamage >=x11-libs/cairo-1.6:=[X,svg] x11-libs/gdk-pixbuf:2[X,introspection?] ) aqua? ( >=x11-libs/cairo-1.6:=[aqua,svg] x11-libs/gdk-pixbuf:2[introspection?] ) xinerama? ( x11-libs/libXinerama ) >=dev-libs/glib-2.30:2 >=x11-libs/pango-1.20[introspection?] >=dev-libs/atk-1.29.2[introspection?] media-libs/fontconfig x11-misc/shared-mime-info cups? ( net-print/cups:= ) introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) !<gnome-base/gail-1000 virtual/pkgconfig !aqua? ( x11-proto/xextproto x11-proto/xproto x11-proto/inputproto x11-proto/damageproto ) xinerama? ( x11-proto/xineramaproto ) dev-libs/gobject-introspection-common >=dev-util/gtk-doc-am-1.11 test? ( x11-themes/hicolor-icon-theme media-fonts/font-misc-misc media-fonts/font-cursor-misc ) >=sys-apps/sed-4 app-arch/xz-utils test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
DEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/libXt x11-libs/libXext >=x11-libs/libXrandr-1.3 x11-libs/libXcursor x11-libs/libXfixes x11-libs/libXcomposite x11-libs/libXdamage >=x11-libs/cairo-1.6:=[X,svg] x11-libs/gdk-pixbuf:2[X,introspection?] ) aqua? ( >=x11-libs/cairo-1.6:=[aqua,svg] x11-libs/gdk-pixbuf:2[introspection?] ) xinerama? ( x11-libs/libXinerama ) >=dev-libs/glib-2.30:2 >=x11-libs/pango-1.20[introspection?] >=dev-libs/atk-1.29.2[introspection?] media-libs/fontconfig x11-misc/shared-mime-info cups? ( net-print/cups:= ) introspection? ( >=dev-libs/gobject-introspection-0.9.3 ) !<gnome-base/gail-1000 virtual/pkgconfig !aqua? ( x11-proto/xextproto x11-proto/xproto x11-proto/inputproto x11-proto/damageproto ) xinerama? ( x11-proto/xineramaproto ) >=dev-util/gtk-doc-am-1.11 test? ( x11-themes/hicolor-icon-theme media-fonts/font-misc-misc media-fonts/font-cursor-misc ) >=sys-apps/sed-4 app-arch/xz-utils test? ( !prefix? ( x11-base/xorg-server[xvfb] ) x11-apps/xhost ) || ( >=sys-devel/automake-1.12:1.12 >=sys-devel/automake-1.13:1.13 ) >=sys-devel/autoconf-2.68 sys-devel/libtool
DESCRIPTION=Gimp ToolKit +
EAPI=5
HOMEPAGE=http://www.gtk.org/
@ -11,4 +11,4 @@ RDEPEND=!aqua? ( x11-libs/libXrender x11-libs/libX11 x11-libs/libXi x11-libs/lib
SLOT=2
SRC_URI=mirror://gnome/sources/gtk+/2.24/gtk+-2.24.19.tar.xz
_eclasses_=autotools 16761a2f972abd686713e5967ff3c754 eutils f31a0ec0d081047cbf9c0bbb4822d831 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnome.org 8fef8f967214f56e08fa92d61163d891 gnome2-utils 794d2847b4af390a1e020924876c8297 libtool b1c8688e60f9580bcb9bb46e08737eb1 multilib 892e597faee02a5b94eb02ab512e7622 multiprocessing a2130e6fc4aa4c6a24b265ca0cbcc2b6 readme.gentoo 2466b2f6a77a9600954c6b99ebca6e02 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28 versionator 6601b4c5b3f019a993db59a50e1854e4 virtualx 73cfc129b4b9ba23aed1abb10c825d86
_md5_=ffa5edfd9c88f4c58f2a6a3db8ea5f06
_md5_=f589082f6114fa5bad9b9edc6f4642fb

@ -0,0 +1,13 @@
DEFINED_PHASES=compile configure install postinst postrm preinst prepare test unpack
DEPEND=dev-libs/crypto++ x11-libs/libICE x11-libs/libSM x11-libs/libX11 x11-libs/libXext x11-libs/libXi x11-libs/libXinerama x11-libs/libXrandr x11-libs/libXtst qt4? ( dev-qt/qtcore:4 dev-qt/qtgui:4 ) x11-proto/kbproto x11-proto/randrproto x11-proto/xextproto x11-proto/xineramaproto x11-proto/xproto >=sys-apps/sed-4 sys-devel/make >=dev-util/cmake-2.8.9 userland_GNU? ( >=sys-apps/findutils-4.4.0 )
DESCRIPTION=Lets you easily share a single mouse and keyboard between multiple computers.
EAPI=5
HOMEPAGE=http://synergy-foss.org/
IUSE=qt4
KEYWORDS=~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x86-solaris
LICENSE=GPL-2
RDEPEND=dev-libs/crypto++ x11-libs/libICE x11-libs/libSM x11-libs/libX11 x11-libs/libXext x11-libs/libXi x11-libs/libXinerama x11-libs/libXrandr x11-libs/libXtst qt4? ( dev-qt/qtcore:4 dev-qt/qtgui:4 ) qt4? ( !x11-misc/qsynergy )
SLOT=0
SRC_URI=http://synergy.googlecode.com/files/synergy-1.4.12-Source.tar.gz http://dev.gentoo.org/~hasufell/distfiles/synergy.png
_eclasses_=base ec46b36a6f6fd1d0b505a33e0b74e413 cmake-utils 66012c9c0ee3c91534d0eb257ff9b95c eutils f31a0ec0d081047cbf9c0bbb4822d831 flag-o-matic d900015de4e092f26d8c0a18b6bd60de gnome2-utils 794d2847b4af390a1e020924876c8297 multilib 892e597faee02a5b94eb02ab512e7622 qt4-r2 ce0c9abfee272185e03ab73f09f5fd69 toolchain-funcs 7ffd28a8c7eea27218865352bfd3ab2f user d0a4d0735a6c0183d707ca919bd72f28
_md5_=40236abc0fe1166c37e394f7abc67e79

@ -1,11 +0,0 @@
DEFINED_PHASES=install
DEPEND=>=net-libs/libotr-3.2.0 x11-libs/gtk+:2 net-im/pidgin[gtk] virtual/pkgconfig
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
EAPI=2
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=amd64 ppc x86
LICENSE=GPL-2
RDEPEND=>=net-libs/libotr-3.2.0 x11-libs/gtk+:2 net-im/pidgin[gtk]
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/pidgin-otr-3.2.0.tar.gz
_md5_=eb0186e039986653fa1b759064dd441d

@ -1,11 +1,11 @@
DEFINED_PHASES=install
DEPEND=>=net-libs/libotr-3.2.0 x11-libs/gtk+:2 net-im/pidgin[gtk] virtual/pkgconfig
DEFINED_PHASES=-
DEPEND=<net-libs/libotr-4.0.0 x11-libs/gtk+:2 net-im/pidgin[gtk] virtual/pkgconfig
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
EAPI=2
EAPI=5
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=amd64 ppc x86
LICENSE=GPL-2
RDEPEND=>=net-libs/libotr-3.2.0 x11-libs/gtk+:2 net-im/pidgin[gtk]
RDEPEND=<net-libs/libotr-4.0.0 x11-libs/gtk+:2 net-im/pidgin[gtk]
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/pidgin-otr-3.2.1.tar.gz
_md5_=1eda15ae7dc03c513ebcac095ed40c90
_md5_=1f1968c20577c18080ac2f42d32692a1

@ -1,11 +1,11 @@
DEFINED_PHASES=-
DEPEND=dev-libs/libgcrypt net-im/pidgin[gtk] >=net-libs/libotr-4.0.0 x11-libs/gtk+:2 dev-util/intltool virtual/pkgconfig
DESCRIPTION=(OTR) Messaging allows you to have private conversations over instant messaging
EAPI=4
EAPI=5
HOMEPAGE=http://www.cypherpunks.ca/otr/
KEYWORDS=~amd64 ~ppc ~x86
LICENSE=GPL-2
RDEPEND=dev-libs/libgcrypt net-im/pidgin[gtk] >=net-libs/libotr-4.0.0 x11-libs/gtk+:2
SLOT=0
SRC_URI=http://www.cypherpunks.ca/otr/pidgin-otr-4.0.0.tar.gz
_md5_=3ccf26c727ea57efb14c1b952be7933b
_md5_=d507c183278c42af13d80303da246fc2

@ -1 +1 @@
Thu, 20 Jun 2013 13:06:58 +0000
Thu, 20 Jun 2013 15:36:57 +0000

@ -1 +1 @@
Thu Jun 20 13:06:55 UTC 2013
Thu Jun 20 15:36:54 UTC 2013

@ -1 +1 @@
Thu, 20 Jun 2013 13:30:01 +0000
Thu, 20 Jun 2013 16:00:01 +0000

@ -1 +1 @@
1371733501 Thu Jun 20 13:05:01 2013 UTC
1371742501 Thu Jun 20 15:35:01 2013 UTC

@ -15,6 +15,7 @@
<flag name="gstreamer">Enables voice and video sessions</flag>
<flag name="gtk">Builds Pidgin, the GTK+ interface</flag>
<flag name="meanwhile">Enable meanwhile support for Sametime protocol</flag>
<flag name="mxit">Enable mxit protocol support</flag>
<flag name="ncurses">Build finch, console interface</flag>
<flag name="prediction">Enable Contact Availability Prediction plugin</flag>
<flag name="python">Build libgnt (GLib Ncurses Toolkit used by finch) with python scripting support</flag>

@ -0,0 +1,239 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/pidgin-2.10.7-r2.ebuild,v 1.2 2013/06/20 14:07:40 polynomial-c Exp $
EAPI=5
GENTOO_DEPEND_ON_PERL=no
PYTHON_COMPAT=( python2_7 )
inherit autotools flag-o-matic eutils toolchain-funcs multilib perl-app gnome2 python-single-r1
DESCRIPTION="GTK Instant Messenger client"
HOMEPAGE="http://pidgin.im/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos"
IUSE="dbus debug doc eds gadu gnutls +gstreamer +gtk idn meanwhile mxit"
IUSE+=" networkmanager nls perl silc tcl tk spell sasl ncurses"
IUSE+=" groupwise prediction python +xscreensaver zephyr zeroconf" # mono"
IUSE+=" aqua"
# dbus requires python to generate C code for dbus bindings (thus DEPEND only).
# finch uses libgnt that links with libpython - {R,}DEPEND. But still there is
# no way to build dbus and avoid libgnt linkage with python. If you want this
# send patch upstream.
# purple-url-handler and purple-remote require dbus-python thus in reality we
# rdepend on python if dbus enabled. But it is possible to separate this dep.
RDEPEND="
>=dev-libs/glib-2.16
>=dev-libs/libxml2-2.6.18
ncurses? ( sys-libs/ncurses[unicode]
dbus? ( ${PYTHON_DEPS} )
python? ( ${PYTHON_DEPS} ) )
gtk? (
>=x11-libs/gtk+-2.10:2[aqua=]
x11-libs/libSM
xscreensaver? ( x11-libs/libXScrnSaver )
spell? ( >=app-text/gtkspell-2.0.2:2 )
eds? ( >=gnome-extra/evolution-data-server-3.6 )
prediction? ( >=dev-db/sqlite-3.3:3 ) )
gstreamer? ( =media-libs/gstreamer-0.10*
=media-libs/gst-plugins-good-0.10*
|| ( net-libs/farstream:0.1 net-libs/farsight2 )
media-plugins/gst-plugins-meta:0.10
media-plugins/gst-plugins-gconf:0.10 )
zeroconf? ( net-dns/avahi[dbus] )
dbus? ( >=dev-libs/dbus-glib-0.71
>=sys-apps/dbus-0.90
dev-python/dbus-python )
perl? ( >=dev-lang/perl-5.8.2-r1[-build] )
gadu? ( || ( >=net-libs/libgadu-1.11.0[ssl,gnutls]
>=net-libs/libgadu-1.11.0[-ssl] ) )
gnutls? ( net-libs/gnutls )
!gnutls? ( >=dev-libs/nss-3.11 )
meanwhile? ( net-libs/meanwhile )
silc? ( >=net-im/silc-toolkit-1.0.1 )
tcl? ( dev-lang/tcl )
tk? ( dev-lang/tk )
sasl? ( dev-libs/cyrus-sasl:2 )
networkmanager? ( net-misc/networkmanager )
idn? ( net-dns/libidn )
!<x11-plugins/pidgin-facebookchat-1.69-r1"
# Mono support crashes pidgin
#mono? ( dev-lang/mono )"
# We want nls in case gtk is enabled, bug #
NLS_DEPEND=">=dev-util/intltool-0.41.1 sys-devel/gettext"
DEPEND="$RDEPEND
dev-lang/perl
dev-perl/XML-Parser
virtual/pkgconfig
gtk? ( x11-proto/scrnsaverproto
${NLS_DEPEND} )
dbus? ( ${PYTHON_DEPS} )
doc? ( app-doc/doxygen )
!gtk? ( nls? ( ${NLS_DEPEND} ) )"
DOCS="AUTHORS HACKING NEWS README ChangeLog"
REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
dbus? ( ${PYTHON_REQUIRED_USE} )"
# Enable Default protocols
DYNAMIC_PRPLS="irc,jabber,oscar,yahoo,simple,msn,myspace"
# List of plugins
# app-accessibility/pidgin-festival
# net-im/librvp
# x11-plugins/guifications
# x11-plugins/msn-pecan
# x11-plugins/pidgin-encryption
# x11-plugins/pidgin-extprefs
# x11-plugins/pidgin-hotkeys
# x11-plugins/pidgin-latex
# x11-plugins/pidgintex
# x11-plugins/pidgin-libnotify
# x11-plugins/pidgin-mbpurple
# x11-plugins/pidgin-bot-sentry
# x11-plugins/pidgin-otr
# x11-plugins/pidgin-rhythmbox
# x11-plugins/purple-plugin_pack
# x11-themes/pidgin-smileys
# x11-plugins/pidgin-knotify
# Plugins in Sunrise:
# x11-plugins/pidgin-audacious-remote
# x11-plugins/pidgin-autoanswer
# x11-plugins/pidgin-birthday-reminder
# x11-plugins/pidgin-blinklight
# x11-plugins/pidgin-convreverse
# x11-plugins/pidgin-embeddedvideo
# x11-plugins/pidgin-extended-blist-sort
# x11-plugins/pidgin-gfire
# x11-plugins/pidgin-lastfm
# x11-plugins/pidgin-sendscreenshot
# x11-plugins/pidgimpd
pkg_setup() {
if ! use gtk && ! use ncurses ; then
elog "You did not pick the ncurses or gtk use flags, only libpurple"
elog "will be built."
fi
if use dbus || { use ncurses && use python; }; then
python-single-r1_pkg_setup
fi
# dbus is enabled, no way to disable linkage with python => python is enabled
#REQUIRED_USE="gtk? ( nls ) dbus? ( python )"
if use gtk && ! use nls; then
ewarn "gtk build => nls is enabled!"
fi
if use dbus && ! use python; then
elog "dbus is enabled, no way to disable linkage with python => python is enabled"
fi
}
src_prepare() {
epatch "${FILESDIR}/${PN}-2.10.0-gold.patch" \
"${FILESDIR}/${P}-fix-cap.patch" \
"${FILESDIR}/${P}-link_sasl_in_irc_plugin.patch" \
"${FILESDIR}/${PN}-eds-3.6.patch.bz2"
epatch_user
eautoreconf
}
src_configure() {
# Stabilize things, for your own good
strip-flags
replace-flags -O? -O2
local myconf
if use gadu; then
DYNAMIC_PRPLS="${DYNAMIC_PRPLS},gg"
myconf="${myconf} --with-gadu-includes=."
myconf="${myconf} --with-gadu-libs=."
fi
use groupwise && DYNAMIC_PRPLS+=",novell"
use silc && DYNAMIC_PRPLS+=",silc"
use meanwhile && DYNAMIC_PRPLS+=",sametime"
use mxit && DYNAMIC_PRPLS+=",mxit"
use zephyr && DYNAMIC_PRPLS+=",zephyr"
use zeroconf && DYNAMIC_PRPLS+=",bonjour"
if use gnutls; then
einfo "Disabling NSS, using GnuTLS"
myconf+=" --enable-nss=no --enable-gnutls=yes"
myconf+=" --with-gnutls-includes=${EPREFIX}/usr/include/gnutls"
myconf+=" --with-gnutls-libs=${EPREFIX}/usr/$(get_libdir)"
else
einfo "Disabling GnuTLS, using NSS"
myconf+=" --enable-gnutls=no --enable-nss=yes"
fi
if use dbus || { use ncurses && use python; }; then
myconf+=" --with-python=${PYTHON}"
else
myconf+=" --without-python"
fi
econf \
$(use_enable ncurses consoleui) \
$(use_enable gtk gtkui) \
$(use_enable gtk sm) \
$(use gtk || use_enable nls) \
$(use gtk && echo "--enable-nls") \
$(use gtk && use_enable xscreensaver screensaver) \
$(use gtk && use_enable prediction cap) \
$(use gtk && use_enable eds gevolution) \
$(use gtk && use_enable spell gtkspell) \
$(use_enable perl) \
$(use_enable tk) \
$(use_enable tcl) \
$(use_enable debug) \
$(use_enable dbus) \
$(use_enable meanwhile) \
$(use_enable gstreamer) \
$(use_enable gstreamer farstream) \
$(use_enable gstreamer vv) \
$(use_enable sasl cyrus-sasl ) \
$(use_enable doc doxygen) \
$(use_enable networkmanager nm) \
$(use_enable zeroconf avahi) \
$(use_enable idn) \
--with-system-ssl-certs="${EPREFIX}/etc/ssl/certs/" \
--with-dynamic-prpls="${DYNAMIC_PRPLS}" \
--disable-mono \
--x-includes="${EPREFIX}"/usr/include/X11 \
${myconf}
#$(use_enable mono) \
}
src_install() {
gnome2_src_install
if use gtk; then
# Fix tray pathes for kde-3.5, e16 (x11-wm/enlightenment) and other
# implementations that are not complient with new hicolor theme yet, #323355
local pixmapdir
for d in 16 22 32 48; do
pixmapdir=${ED}/usr/share/pixmaps/pidgin/tray/hicolor/${d}x${d}/actions
mkdir "${pixmapdir}" || die
pushd "${pixmapdir}" >/dev/null || die
for f in ../status/*; do
ln -s ${f} || die
done
popd >/dev/null
done
fi
use perl && fixlocalpod
dodoc finch/plugins/pietray.py
docompress -x /usr/share/doc/${PF}/pietray.py
prune_libtool_files --all
}

@ -1,4 +1,2 @@
DIST libotr-3.1.0.tar.gz 428444 SHA256 721560bba21ec7e54c75925de26fe7b59ecdaf9c9b81613a052a3d86b72d7ef4
DIST libotr-3.2.0.tar.gz 430299 SHA256 d83b9d20e36e2a4a55e5336f15d1d218d627bc0af7af94e3835bdc8b6d8b6693 SHA512 1f2b3b986128e51f771b80b40593e1b88abd6268b65f94b489548a8355632b860bbce53609aacdcc5b354ba7deaf98ac02f47d9827af82cfbf62d1c6b689d61f WHIRLPOOL 9e1c5868305f545b90112400790cb730835f8cc4ea2087c5bb8cc6b3d4a41b3071eb872b0cea69b26421b9332d207570d1681cb80204daf97a84712f16fae289
DIST libotr-3.2.1.tar.gz 414684 SHA256 d428eaa584984baa09450cca07742e0ac8fc62401f3a1c556e3025023369cdf4 SHA512 7dfac85cb7dd1a95481330ecf3bfe54477a9de7e20370919386e8aa9553e374a2d3587d7b4bb654d1a30bd1c47e41c577f7b78f4007c5cb97f2f6a2c63078899 WHIRLPOOL 96593df2cc3f5e5e606e14170c3706b1dc17f2142821d827d2e5ae1473b923eacc95909f489f18a700539e07de2042e39df36157f724ba79916591c8ccca594b
DIST libotr-4.0.0.tar.gz 441441 SHA256 3f911994409898e74527730745ef35ed75c352c695a1822a677a34b2cf0293b4 SHA512 3f0a549bb615d6ff486db0efcc82fc6ad17c5860740c760315d5c81d298b00648d11f9da69c65b9859111d2150e4d10062aeb8611810f11e1da1ce62f07f02b6 WHIRLPOOL 29614fd709358d5363b2204c38e5fc6984acb56c880ae05706b464bddb7832f0a6e9af03a689135423909e26cdaecb2ca1a13f9c02c21a4477149432dfcd6aef

@ -1,20 +0,0 @@
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/libotr/libotr-3.1.0.ebuild,v 1.9 2009/08/22 15:52:50 halcy0n Exp $
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"
SRC_URI="http://www.cypherpunks.ca/otr/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ~hppa ~ia64 ppc ppc64 sparc x86"
IUSE=""
DEPEND="dev-libs/libgpg-error
>=dev-libs/libgcrypt-1.2.0"
src_install() {
make install DESTDIR="${D}" || die "Install failed"
dodoc ChangeLog README
}

@ -1,21 +0,0 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/libotr/libotr-3.2.0.ebuild,v 1.13 2010/01/19 02:26:34 jer Exp $
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"
SRC_URI="http://www.cypherpunks.ca/otr/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm hppa ~ia64 ppc ppc64 sparc x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~ia64-linux ~x86-linux ~ppc-macos ~x86-macos"
IUSE=""
RDEPEND="dev-libs/libgpg-error
>=dev-libs/libgcrypt-1.2"
DEPEND="${RDEPEND}"
src_install() {
emake DESTDIR="${D}" install || die
dodoc ChangeLog README
}

@ -1,8 +1,8 @@
# Copyright 1999-2012 Gentoo Foundation
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/libotr/libotr-4.0.0.ebuild,v 1.1 2012/10/18 16:14:14 kensington Exp $
# $Header: /var/cvsroot/gentoo-x86/net-libs/libotr/libotr-4.0.0.ebuild,v 1.2 2013/06/20 14:50:40 polynomial-c Exp $
EAPI=4
EAPI=5
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"

@ -4277,6 +4277,7 @@ net-im/pidgin:groupwise - Enable Novell Groupwise protocol support
net-im/pidgin:gstreamer - Enables voice and video sessions
net-im/pidgin:gtk - Builds Pidgin, the GTK+ interface
net-im/pidgin:meanwhile - Enable meanwhile support for Sametime protocol
net-im/pidgin:mxit - Enable mxit protocol support
net-im/pidgin:ncurses - Build finch, console interface
net-im/pidgin:prediction - Enable Contact Availability Prediction plugin
net-im/pidgin:python - Build libgnt (GLib Ncurses Toolkit used by finch) with python scripting support

@ -1,3 +1,4 @@
DIST tt-rss-1.7.8.tar.gz 2391937 SHA256 5e5a6d82a112eb48259b733207c18a718c338038c33ec8ffc87895d57e05f3cb SHA512 d18579128c337f7ecd2265b90e876de3eaa541291b7bdaf1244ada28438029cefeb1bfd8045d3de2b8d100e09185f89af04e1d9dbafd1f5e1e89a641ce783662 WHIRLPOOL f66423e12cb968b07b3c9bf15f2da8e06e054c1a3798260e2d0aee4d3f042996a86b52f65717a4ceaebeffc2b14109fafd9c05a08ffb7440a2f785d9a446465c
DIST tt-rss-1.7.9.tar.gz 2321780 SHA256 972f0f8a1033f076093ad6ff6480a0c32166bddeec217c5176da19afd021e3ff SHA512 383e1542aa3c8e5387223ee321a0957c4597e9e9d9814017014b8647efecf350f483530165ecdb5268d35747a8f78a2f006108b3fe298a3de6f9cf423633927f WHIRLPOOL 37c1cec972cbe20f1ef376bbb8df1befa8f620f2e02214d5c75cdb28cd2bbf90ae148aaeca1e1802e25d53157feaa8cebbf9773bc752f39b16e4dbdfb9862b15
DIST tt-rss-1.8.tar.gz 2339850 SHA256 5b12380938f1d465218d2c30e3996eccfae71e9e920d63c960a1e0e66b42738a SHA512 75fb5e78c78894e64990bc29c573ee4bdf8c8d0d2a9d35c5ee199148e21f6b6a15d907b9a78ddb55d9173a5bdd8e00ff0868ca4aa357535a5a5795c70c0bb205 WHIRLPOOL 7a2ec9461f6e603a45205629167773bb0e860a6d81ab40e11d418700d82c2ac0fdbe9681596b87a1cb3255cb19f0051bc92e2122981f79c8a45ea473c59aae10
DIST ttrss-1.7.9-patches.tar.xz 22528 SHA256 ead35720dc4de6978a8f2d1c8572e00941d2bf969446e76b33ac10ee8f63341e SHA512 9c09012a7a9d1fba7c1465ca308d3ddc753f0b9192b05c1fa0afb9f5a0c68558f7f4d8a768b6386fa5a0e3855b388559255176c297a3b808eca66ced04658c10 WHIRLPOOL 2b45c901aed4b5c745ac5b5766f862ed4bc8f3e135a9e287dec1f5fcb5df629d86cd14744d065b6970da2b5514955238169bca87645945cbe653827b430ce09c

@ -0,0 +1,79 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/www-apps/tt-rss/tt-rss-1.8.ebuild,v 1.1 2013/06/20 13:02:05 scarabeus Exp $
EAPI=5
inherit user eutils webapp depend.php depend.apache vcs-snapshot
DESCRIPTION="Tiny Tiny RSS - A web-based news feed (RSS/Atom) aggregator using AJAX"
HOMEPAGE="http://tt-rss.org/"
SRC_URI="https://github.com/gothfox/Tiny-Tiny-RSS/archive/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-2"
KEYWORDS="~amd64 ~x86"
IUSE="daemon +mysql postgres"
DEPEND="
daemon? ( dev-lang/php[mysql?,postgres?,pcntl,curl] )
!daemon? ( dev-lang/php[mysql?,postgres?,curl] )
"
RDEPEND="${DEPEND}"
REQUIRED_USE="|| ( mysql postgres )"
need_httpd_cgi
need_php_httpd
pkg_setup() {
webapp_pkg_setup
if use daemon; then
enewgroup ttrssd
enewuser ttrssd -1 /bin/sh /dev/null ttrssd
fi
}
src_prepare() {
# Customize config.php so that the right 'DB_TYPE' is already set (according to the USE flag)
einfo "Customizing config.php..."
mv config.php{-dist,} || die "Could not rename config.php-dist to config.php."
if use mysql && ! use postgres; then
sed -i \
-e "/define('DB_TYPE',/{s:pgsql:mysql:}" \
config.php || die
fi
sed -i \
-e "/define('DB_TYPE',/{s:// \(or mysql\):// pgsql \1:}" \
config.php || die
# per 462578
epatch_user
}
src_install() {
webapp_src_preinst
insinto "/${MY_HTDOCSDIR}"
doins -r *
keepdir "/${MY_HTDOCSDIR}"/feed-icons
for DIR in cache lock feed-icons; do
webapp_serverowned -R "${MY_HTDOCSDIR}/${DIR}"
done
webapp_configfile "${MY_HTDOCSDIR}"/config.php
if use daemon; then
webapp_postinst_txt en "${FILESDIR}"/postinstall-en-with-daemon.txt
newinitd "${FILESDIR}"/ttrssd.initd-r1 ttrssd
newconfd "${FILESDIR}"/ttrssd.confd-r1 ttrssd
insinto /etc/logrotate.d/
newins "${FILESDIR}"/ttrssd.logrotated ttrssd
else
webapp_postinst_txt en "${FILESDIR}"/postinstall-en.txt
fi
webapp_src_install
}

@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.24.18.ebuild,v 1.1 2013/05/13 19:07:37 pacho Exp $
# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.24.18.ebuild,v 1.2 2013/06/20 13:49:19 tetromino Exp $
EAPI="5"
inherit eutils flag-o-matic gnome2-utils gnome.org virtualx autotools readme.gentoo
@ -52,14 +52,13 @@ DEPEND="${COMMON_DEPEND}
x11-proto/damageproto
)
xinerama? ( x11-proto/xineramaproto )
dev-libs/gobject-introspection-common
>=dev-util/gtk-doc-am-1.11
test? (
x11-themes/hicolor-icon-theme
media-fonts/font-misc-misc
media-fonts/font-cursor-misc )
"
# dev-libs/gobject-introspection-common needed for introspection.m4
# introspection.m4 is in the tarball, so gobject-introspection-common is not needed
# gtk+-2.24.8 breaks Alt key handling in <=x11-libs/vte-0.28.2:0
# Remove blocker after >=vte-0.28.2-r201:0 is stable

@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.24.19.ebuild,v 1.1 2013/06/18 19:55:00 pacho Exp $
# $Header: /var/cvsroot/gentoo-x86/x11-libs/gtk+/gtk+-2.24.19.ebuild,v 1.2 2013/06/20 13:49:19 tetromino Exp $
EAPI="5"
inherit eutils flag-o-matic gnome2-utils gnome.org virtualx autotools readme.gentoo
@ -52,14 +52,13 @@ DEPEND="${COMMON_DEPEND}
x11-proto/damageproto
)
xinerama? ( x11-proto/xineramaproto )
dev-libs/gobject-introspection-common
>=dev-util/gtk-doc-am-1.11
test? (
x11-themes/hicolor-icon-theme
media-fonts/font-misc-misc
media-fonts/font-cursor-misc )
"
# dev-libs/gobject-introspection-common needed for introspection.m4
# introspection.m4 is in the tarball, so gobject-introspection-common is not needed
# gtk+-2.24.8 breaks Alt key handling in <=x11-libs/vte-0.28.2:0
# Add blocker against old gtk-builder-convert to be sure with maintain both

@ -1,4 +1,5 @@
DIST synergy-1.4.10-Source.tar.gz 3598533 SHA256 06d5a2ceb4cf8808cdab22441897c7b54ec8b4bc8351ac116f9accf54c720fbe SHA512 d8ebff1d53d16f6abb9cc64c7cd2ac5d6923b61ff3773f32d464cb58a0440bdbaa74836662d4c83e541516b4abda97f35855239cd12b6b095535fd38e36f238c WHIRLPOOL 86a8595403b5fb4efe88f4ea2cc528f541ea2cdb195254637ef077971ccc4cea3261d93fa2b8696fd39740a1421530c55099048399dbabe0e183f26da7a3c610
DIST synergy-1.4.12-Source.tar.gz 3954996 SHA256 35b60c8d73368a0cb90daa629e64f66171b934a799a82427431979cca7260849 SHA512 5305e03d871e5408640ece55364067418f9b8b160dda31f994ebafe807b31291bdaa688a901f2e81710acb0857952c37f0c1823a50c927573feaec0c8659be9d WHIRLPOOL 1ba49a12ad5dc7853167c1ddcda032e876a94e9fa76e2250da96dea56353cdcd7bf00917346042aa7f737b3fd386da2d0b440e95d81f51f16d8fc3d3079c6b27
DIST synergy-1.4.5-Source.tar.gz 3002836 SHA256 69e9ea11bdd05252886fe6a47fc43735bdc8a5af9dc2b843f4c34de1f0515ad1
DIST synergy-1.4.7-Source.tar.gz 2998229 SHA256 e224d2ab822dc7b6e90a87587ed7d9e32f27d05efebc8430ecf61b3610baea3b
DIST synergy.png 26910 SHA256 c7e6cbaea549a189daed46c7170477772d932144ca20c9ea0db6859bd896f08c SHA512 0b5a1813c71fd2923adca4cf7b0f840fc37c73a2f18ad68f8bb2fd2ea312d9a884e2e2bcd78f6dd0f13d1f31ea3991379e141ec62d970a18c3a9c46b26720c5d WHIRLPOOL 7b3e7f9b05462fb536de0ca8d2257ea8abc0b2f17f0335d7eee73322f79a9ecccf729b992e58cd0965a9c9842f48020b6588cd4af47ea0f6d2b2cd7793c64e3a

@ -0,0 +1,74 @@
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -13,24 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-set(cpp_dir cryptopp562)
-
-file(GLOB cpp_src ${cpp_dir}/*.cpp)
-
-if (WIN32)
- file(GLOB cpp_hdr ${cpp_dir}/*.h)
- list(APPEND cpp_src ${cpp_hdr})
-endif()
-
-file(GLOB cpp_ignore
- ${cpp_dir}/simple.cpp
- ${cpp_dir}/strciphr.cpp
- ${cpp_dir}/polynomi.cpp
- ${cpp_dir}/eprecomp.cpp
- ${cpp_dir}/eccrypto.cpp
- ${cpp_dir}/algebra.cpp)
-list(REMOVE_ITEM cpp_src ${cpp_ignore})
-
# if 64-bit windows, compile asm file.
if (CMAKE_CL_64)
list(APPEND cpp_src ${cpp_dir}/x64dll.asm ${cpp_dir}/x64masm.asm)
@@ -60,5 +42,3 @@
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
endif()
-
-add_library(cryptopp STATIC ${cpp_src})
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -128,6 +128,10 @@
endif()
+ set(CMAKE_REQUIRED_LIBRARIES crypto++)
+ set(CMAKE_REQUIRED_LIBRARIES)
+ set(CMAKE_INCLUDE_DIRECTORIES)
+
check_type_size(char SIZEOF_CHAR)
check_type_size(int SIZEOF_INT)
check_type_size(long SIZEOF_LONG)
--- a/src/lib/synergy/CCryptoMode.h
+++ b/src/lib/synergy/CCryptoMode.h
@@ -17,9 +17,9 @@
#pragma once
-#include <cryptopp562/gcm.h>
-#include <cryptopp562/modes.h>
-#include <cryptopp562/aes.h>
+#include <crypto++/gcm.h>
+#include <crypto++/modes.h>
+#include <crypto++/aes.h>
#include "ECryptoMode.h"
#include "CString.h"
--- a/src/lib/synergy/CCryptoStream.h
+++ b/src/lib/synergy/CCryptoStream.h
@@ -20,8 +20,8 @@
#include "BasicTypes.h"
#include "CStreamFilter.h"
#include "CCryptoMode.h"
-#include <cryptopp562/osrng.h>
-#include <cryptopp562/sha.h>
+#include <crypto++/osrng.h>
+#include <crypto++/sha.h>
class CCryptoOptions;

@ -0,0 +1,93 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-misc/synergy/synergy-1.4.12.ebuild,v 1.1 2013/06/20 14:30:09 jer Exp $
EAPI=5
inherit eutils flag-o-matic gnome2-utils cmake-utils qt4-r2
DESCRIPTION="Lets you easily share a single mouse and keyboard between multiple computers."
HOMEPAGE="http://synergy-foss.org/"
SRC_URI="http://${PN}.googlecode.com/files/${P}-Source.tar.gz
http://dev.gentoo.org/~hasufell/distfiles/${PN}.png"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~x86-macos ~sparc-solaris ~x86-solaris"
IUSE="qt4"
COMMON_DEPEND="
dev-libs/crypto++
x11-libs/libICE
x11-libs/libSM
x11-libs/libX11
x11-libs/libXext
x11-libs/libXi
x11-libs/libXinerama
x11-libs/libXrandr
x11-libs/libXtst
qt4? ( dev-qt/qtcore:4 dev-qt/qtgui:4 )
"
DEPEND="${COMMON_DEPEND}
x11-proto/kbproto
x11-proto/randrproto
x11-proto/xextproto
x11-proto/xineramaproto
x11-proto/xproto
"
RDEPEND="${COMMON_DEPEND}
qt4? ( !x11-misc/qsynergy )
"
PATCHES=( "${FILESDIR}/${P}-cryptopp.patch" )
S=${WORKDIR}/${P}-Source
src_configure() {
cmake-utils_src_configure
if use qt4 ; then
cd src/gui
qt4-r2_src_configure
fi
}
src_compile() {
cmake-utils_src_compile
if use qt4 ; then
cd src/gui
qt4-r2_src_compile
fi
}
src_install () {
dobin bin/${PN}{c,s}
if use qt4 ; then
newbin bin/${PN} qsynergy
newicon -s 256 "${DISTDIR}"/${PN}.png q${PN}.png
make_desktop_entry q${PN} ${PN/s/S} q${PN} Utility;
fi
insinto /etc
newins doc/synergy.conf.example synergy.conf
mv doc/${PN}c.man doc/${PN}c.1 || die
mv doc/${PN}s.man doc/${PN}s.1 || die
doman doc/${PN}{c,s}.1
dodoc README doc/synergy.conf.example* ChangeLog
}
pkg_preinst() {
use qt4 && gnome2_icon_savelist
}
pkg_postinst() {
use qt4 && gnome2_icon_cache_update
}
pkg_postrm() {
use qt4 && gnome2_icon_cache_update
}

@ -1,3 +1,2 @@
DIST pidgin-otr-3.2.0.tar.gz 435146 SHA256 0870858b06d90cb522b93a354435f7645a9e28cff2d4bae929a6455d4cd1e6b2
DIST pidgin-otr-3.2.1.tar.gz 409238 SHA256 ce17e9769e3853076d80645adafaa866e7d7188f988d28a9793afc32c85cb979
DIST pidgin-otr-3.2.1.tar.gz 409238 SHA256 ce17e9769e3853076d80645adafaa866e7d7188f988d28a9793afc32c85cb979 SHA512 97ae7362c153fecaf838b5aade2ed57cceb7b6204049e851c07b7d9460c8dcf3a3955efc33821deaf3435103f874a285e9868204bbed64e793f0edaecabe37fa WHIRLPOOL 063f5768c6fd35b50656a7540be110f064ae7c01c1838b74a9481700aade78131497ffe10606f01ba803f07d5c1a73de3b53e943091bec44a09f69b8f3789017
DIST pidgin-otr-4.0.0.tar.gz 459591 SHA256 d56b3f092dbe9ee6597641c7d2dd294884dc04ba47aaf4ec571cd54977df4691 SHA512 5f74da77d0c72576bb4a510b41bc70f041ab2555554b4d37376073f2edee8e1021c153cf5cc3d32bd276bdee643e9e7d881026628240a8757e5f8974c200f3d7 WHIRLPOOL 80c58c166669b39655471f23a3c186cb29bbb8d0d08f1f6b458132712bc9818fc8da9c07d4580e51398591fe0375df625b8a1e985836994f6fba5122cb1e8426

@ -1,25 +0,0 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-plugins/pidgin-otr/pidgin-otr-3.2.0.ebuild,v 1.10 2012/06/09 19:10:23 armin76 Exp $
EAPI=2
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"
SRC_URI="http://www.cypherpunks.ca/otr/${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="amd64 ppc x86"
IUSE=""
RDEPEND=">=net-libs/libotr-3.2.0
x11-libs/gtk+:2
net-im/pidgin[gtk]"
DEPEND="${RDEPEND}
virtual/pkgconfig"
src_install() {
emake DESTDIR="${D}" install || die
dodoc ChangeLog README
}

@ -1,8 +1,8 @@
# Copyright 1999-2012 Gentoo Foundation
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-plugins/pidgin-otr/pidgin-otr-3.2.1.ebuild,v 1.5 2012/06/09 19:10:23 armin76 Exp $
# $Header: /var/cvsroot/gentoo-x86/x11-plugins/pidgin-otr/pidgin-otr-3.2.1.ebuild,v 1.6 2013/06/20 14:25:13 polynomial-c Exp $
EAPI=2
EAPI=5
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"
@ -13,13 +13,10 @@ SLOT="0"
KEYWORDS="amd64 ppc x86"
IUSE=""
RDEPEND=">=net-libs/libotr-3.2.0
RDEPEND="<net-libs/libotr-4.0.0
x11-libs/gtk+:2
net-im/pidgin[gtk]"
DEPEND="${RDEPEND}
virtual/pkgconfig"
src_install() {
emake DESTDIR="${D}" install || die
dodoc ChangeLog README
}
DOCS=( ChangeLog README )

@ -1,8 +1,8 @@
# Copyright 1999-2012 Gentoo Foundation
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/x11-plugins/pidgin-otr/pidgin-otr-4.0.0.ebuild,v 1.1 2012/10/18 16:16:42 kensington Exp $
# $Header: /var/cvsroot/gentoo-x86/x11-plugins/pidgin-otr/pidgin-otr-4.0.0.ebuild,v 1.2 2013/06/20 14:25:13 polynomial-c Exp $
EAPI=4
EAPI=5
DESCRIPTION="(OTR) Messaging allows you to have private conversations over instant messaging"
HOMEPAGE="http://www.cypherpunks.ca/otr/"

Loading…
Cancel
Save