summaryrefslogtreecommitdiff
path: root/community-staging
diff options
context:
space:
mode:
Diffstat (limited to 'community-staging')
-rw-r--r--community-staging/python2-cjson/PKGBUILD19
-rw-r--r--community-staging/python2-galago/PKGBUILD22
-rw-r--r--community-staging/python2-gnutls/PKGBUILD23
-rw-r--r--community-staging/python2-gnutls/gnutls3.patch271
-rw-r--r--community-staging/python2-lcms/PKGBUILD37
-rw-r--r--community-staging/python2-m2crypto/PKGBUILD27
-rw-r--r--community-staging/python2-m2crypto/openssl1.patch531
-rw-r--r--community-staging/python2-pybluez/PKGBUILD23
-rw-r--r--community-staging/python2-pyxmpp/PKGBUILD20
-rw-r--r--community-staging/python2-simplejson/PKGBUILD27
-rw-r--r--community-staging/python2-simplejson/python2-simplejson.changelog20
-rw-r--r--community-staging/python2-vorbissimple/PKGBUILD21
-rw-r--r--community-staging/virtkey/PKGBUILD46
13 files changed, 1087 insertions, 0 deletions
diff --git a/community-staging/python2-cjson/PKGBUILD b/community-staging/python2-cjson/PKGBUILD
new file mode 100644
index 000000000..2d95793a4
--- /dev/null
+++ b/community-staging/python2-cjson/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 66126 2012-02-23 01:35:30Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Lincoln de Sousa <lincoln@archlinux-br.org>
+
+pkgname=python2-cjson
+pkgver=1.0.5
+pkgrel=5
+arch=('i686' 'x86_64')
+license=('LGPL')
+pkgdesc="Fast JSON encoder/decoder for Python"
+url="http://pypi.python.org/pypi/python-cjson/"
+depends=('python2')
+source=("http://pypi.python.org/packages/source/p/python-cjson/python-cjson-$pkgver.tar.gz")
+md5sums=('4d55b66ecdf0300313af9d030d9644a3')
+
+build() {
+ cd $srcdir/python-cjson-$pkgver
+ python2 setup.py install --root=$pkgdir
+}
diff --git a/community-staging/python2-galago/PKGBUILD b/community-staging/python2-galago/PKGBUILD
new file mode 100644
index 000000000..6076c3a9e
--- /dev/null
+++ b/community-staging/python2-galago/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 66128 2012-02-23 01:37:06Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=python2-galago
+pkgver=0.5.0
+pkgrel=6
+pkgdesc="A library of simple functions that are optimized for various CPUs"
+arch=('i686' 'x86_64')
+url="http://galago-project.org"
+options=('!libtool')
+license=('LGPL')
+depends=('libgalago' 'pygtk')
+source=(http://galago-project.org/files/releases/source/galago-python/galago-python-$pkgver.tar.bz2)
+md5sums=('27be31fcf2886aa21823caec15dc34aa')
+
+build() {
+ cd $srcdir/galago-python-$pkgver
+ ./configure --prefix=/usr
+ make
+ make DESTDIR=$pkgdir install
+}
diff --git a/community-staging/python2-gnutls/PKGBUILD b/community-staging/python2-gnutls/PKGBUILD
new file mode 100644
index 000000000..3a7c86a04
--- /dev/null
+++ b/community-staging/python2-gnutls/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 74655 2012-08-01 13:54:20Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: N3RD3X <n3rd3x@linuxmail.org>
+
+pkgname=python2-gnutls
+pkgver=1.2.4
+pkgrel=2
+pkgdesc="Python wrapper for the GNUTLS library"
+arch=('i686' 'x86_64')
+url="http://cheeseshop.python.org/pypi/python-gnutls"
+depends=('python2' 'gnutls')
+license=('LGPL')
+source=(http://pypi.python.org/packages/source/p/python-gnutls/python-gnutls-${pkgver}.tar.gz
+ gnutls3.patch)
+md5sums=('e3536c421291a791869d875a41dcb26a'
+ '24bc95d9f5e71e9f5e180706cbb09248')
+
+build() {
+ cd ${srcdir}/python-gnutls-${pkgver}
+ patch -Np0 <$srcdir/gnutls3.patch
+ python2 setup.py install --root=${pkgdir}
+}
diff --git a/community-staging/python2-gnutls/gnutls3.patch b/community-staging/python2-gnutls/gnutls3.patch
new file mode 100644
index 000000000..5110de2f2
--- /dev/null
+++ b/community-staging/python2-gnutls/gnutls3.patch
@@ -0,0 +1,271 @@
+diff -ru gnutls/library/functions.py gnutls.fixed/library/functions.py
+--- gnutls/library/functions.py 2011-08-19 04:48:14.000000000 +0100
++++ gnutls.fixed/library/functions.py 2012-08-01 11:56:43.450975419 +0100
+@@ -4,7 +4,7 @@
+ import sys
+ from ctypes import *
+
+-from gnutls.library import libgnutls, libgnutls_extra
++from gnutls.library import libgnutls
+ from gnutls.library.types import *
+
+
+@@ -121,14 +121,6 @@
+ gnutls_certificate_get_peers.argtypes = [gnutls_session_t, POINTER(c_uint)]
+ gnutls_certificate_get_peers.restype = POINTER(gnutls_datum_t)
+
+-gnutls_certificate_get_x509_cas = libgnutls.gnutls_certificate_get_x509_cas
+-gnutls_certificate_get_x509_cas.argtypes = [gnutls_certificate_credentials_t, POINTER(POINTER(gnutls_x509_crt_t)), POINTER(c_uint)]
+-gnutls_certificate_get_x509_cas.restype = None
+-
+-gnutls_certificate_get_x509_crls = libgnutls.gnutls_certificate_get_x509_crls
+-gnutls_certificate_get_x509_crls.argtypes = [gnutls_certificate_credentials_t, POINTER(POINTER(gnutls_x509_crl_t)), POINTER(c_uint)]
+-gnutls_certificate_get_x509_crls.restype = None
+-
+ gnutls_certificate_send_x509_rdn_sequence = libgnutls.gnutls_certificate_send_x509_rdn_sequence
+ gnutls_certificate_send_x509_rdn_sequence.argtypes = [gnutls_session_t, c_int]
+ gnutls_certificate_send_x509_rdn_sequence.restype = None
+@@ -221,10 +213,6 @@
+ gnutls_certificate_type_set_priority.argtypes = [gnutls_session_t, POINTER(c_int)]
+ gnutls_certificate_type_set_priority.restype = c_int
+
+-gnutls_certificate_verify_peers = libgnutls.gnutls_certificate_verify_peers
+-gnutls_certificate_verify_peers.argtypes = [gnutls_session_t]
+-gnutls_certificate_verify_peers.restype = c_int
+-
+ gnutls_certificate_verify_peers2 = libgnutls.gnutls_certificate_verify_peers2
+ gnutls_certificate_verify_peers2.argtypes = [gnutls_session_t, POINTER(c_uint)]
+ gnutls_certificate_verify_peers2.restype = c_int
+@@ -393,10 +381,6 @@
+ gnutls_error_to_alert.argtypes = [c_int, POINTER(c_int)]
+ gnutls_error_to_alert.restype = c_int
+
+-gnutls_extra_check_version = libgnutls_extra.gnutls_extra_check_version
+-gnutls_extra_check_version.argtypes = [c_char_p]
+-gnutls_extra_check_version.restype = c_char_p
+-
+ gnutls_fingerprint = libgnutls.gnutls_fingerprint
+ gnutls_fingerprint.argtypes = [gnutls_digest_algorithm_t, POINTER(gnutls_datum_t), c_void_p, POINTER(size_t)]
+ gnutls_fingerprint.restype = c_int
+@@ -409,10 +393,6 @@
+ gnutls_global_init.argtypes = []
+ gnutls_global_init.restype = c_int
+
+-gnutls_global_init_extra = libgnutls_extra.gnutls_global_init_extra
+-gnutls_global_init_extra.argtypes = []
+-gnutls_global_init_extra.restype = c_int
+-
+ gnutls_global_set_log_function = libgnutls.gnutls_global_set_log_function
+ gnutls_global_set_log_function.argtypes = [gnutls_log_func]
+ gnutls_global_set_log_function.restype = None
+@@ -461,86 +441,6 @@
+ gnutls_hex_encode.argtypes = [POINTER(gnutls_datum_t), c_char_p, POINTER(size_t)]
+ gnutls_hex_encode.restype = c_int
+
+-gnutls_ia_allocate_client_credentials = libgnutls_extra.gnutls_ia_allocate_client_credentials
+-gnutls_ia_allocate_client_credentials.argtypes = [POINTER(gnutls_ia_client_credentials_t)]
+-gnutls_ia_allocate_client_credentials.restype = c_int
+-
+-gnutls_ia_allocate_server_credentials = libgnutls_extra.gnutls_ia_allocate_server_credentials
+-gnutls_ia_allocate_server_credentials.argtypes = [POINTER(gnutls_ia_server_credentials_t)]
+-gnutls_ia_allocate_server_credentials.restype = c_int
+-
+-gnutls_ia_enable = libgnutls_extra.gnutls_ia_enable
+-gnutls_ia_enable.argtypes = [gnutls_session_t, c_int]
+-gnutls_ia_enable.restype = None
+-
+-gnutls_ia_endphase_send = libgnutls_extra.gnutls_ia_endphase_send
+-gnutls_ia_endphase_send.argtypes = [gnutls_session_t, c_int]
+-gnutls_ia_endphase_send.restype = c_int
+-
+-gnutls_ia_extract_inner_secret = libgnutls_extra.gnutls_ia_extract_inner_secret
+-gnutls_ia_extract_inner_secret.argtypes = [gnutls_session_t, c_char_p]
+-gnutls_ia_extract_inner_secret.restype = None
+-
+-gnutls_ia_free_client_credentials = libgnutls_extra.gnutls_ia_free_client_credentials
+-gnutls_ia_free_client_credentials.argtypes = [gnutls_ia_client_credentials_t]
+-gnutls_ia_free_client_credentials.restype = None
+-
+-gnutls_ia_free_server_credentials = libgnutls_extra.gnutls_ia_free_server_credentials
+-gnutls_ia_free_server_credentials.argtypes = [gnutls_ia_server_credentials_t]
+-gnutls_ia_free_server_credentials.restype = None
+-
+-gnutls_ia_generate_challenge = libgnutls_extra.gnutls_ia_generate_challenge
+-gnutls_ia_generate_challenge.argtypes = [gnutls_session_t, size_t, c_char_p]
+-gnutls_ia_generate_challenge.restype = c_int
+-
+-gnutls_ia_get_client_avp_ptr = libgnutls_extra.gnutls_ia_get_client_avp_ptr
+-gnutls_ia_get_client_avp_ptr.argtypes = [gnutls_ia_client_credentials_t]
+-gnutls_ia_get_client_avp_ptr.restype = c_void_p
+-
+-gnutls_ia_get_server_avp_ptr = libgnutls_extra.gnutls_ia_get_server_avp_ptr
+-gnutls_ia_get_server_avp_ptr.argtypes = [gnutls_ia_server_credentials_t]
+-gnutls_ia_get_server_avp_ptr.restype = c_void_p
+-
+-gnutls_ia_handshake = libgnutls_extra.gnutls_ia_handshake
+-gnutls_ia_handshake.argtypes = [gnutls_session_t]
+-gnutls_ia_handshake.restype = c_int
+-
+-gnutls_ia_handshake_p = libgnutls_extra.gnutls_ia_handshake_p
+-gnutls_ia_handshake_p.argtypes = [gnutls_session_t]
+-gnutls_ia_handshake_p.restype = c_int
+-
+-gnutls_ia_permute_inner_secret = libgnutls_extra.gnutls_ia_permute_inner_secret
+-gnutls_ia_permute_inner_secret.argtypes = [gnutls_session_t, size_t, c_char_p]
+-gnutls_ia_permute_inner_secret.restype = c_int
+-
+-gnutls_ia_recv = libgnutls_extra.gnutls_ia_recv
+-gnutls_ia_recv.argtypes = [gnutls_session_t, c_char_p, size_t]
+-gnutls_ia_recv.restype = ssize_t
+-
+-gnutls_ia_send = libgnutls_extra.gnutls_ia_send
+-gnutls_ia_send.argtypes = [gnutls_session_t, c_char_p, size_t]
+-gnutls_ia_send.restype = ssize_t
+-
+-gnutls_ia_set_client_avp_function = libgnutls_extra.gnutls_ia_set_client_avp_function
+-gnutls_ia_set_client_avp_function.argtypes = [gnutls_ia_client_credentials_t, gnutls_ia_avp_func]
+-gnutls_ia_set_client_avp_function.restype = None
+-
+-gnutls_ia_set_client_avp_ptr = libgnutls_extra.gnutls_ia_set_client_avp_ptr
+-gnutls_ia_set_client_avp_ptr.argtypes = [gnutls_ia_client_credentials_t, c_void_p]
+-gnutls_ia_set_client_avp_ptr.restype = None
+-
+-gnutls_ia_set_server_avp_function = libgnutls_extra.gnutls_ia_set_server_avp_function
+-gnutls_ia_set_server_avp_function.argtypes = [gnutls_ia_server_credentials_t, gnutls_ia_avp_func]
+-gnutls_ia_set_server_avp_function.restype = None
+-
+-gnutls_ia_set_server_avp_ptr = libgnutls_extra.gnutls_ia_set_server_avp_ptr
+-gnutls_ia_set_server_avp_ptr.argtypes = [gnutls_ia_server_credentials_t, c_void_p]
+-gnutls_ia_set_server_avp_ptr.restype = None
+-
+-gnutls_ia_verify_endphase = libgnutls_extra.gnutls_ia_verify_endphase
+-gnutls_ia_verify_endphase.argtypes = [gnutls_session_t, c_char_p]
+-gnutls_ia_verify_endphase.restype = c_int
+-
+ gnutls_init = libgnutls.gnutls_init
+ gnutls_init.argtypes = [POINTER(gnutls_session_t), gnutls_connection_end_t]
+ gnutls_init.restype = c_int
+@@ -733,10 +633,6 @@
+ gnutls_psk_free_server_credentials.argtypes = [gnutls_psk_server_credentials_t]
+ gnutls_psk_free_server_credentials.restype = None
+
+-gnutls_psk_netconf_derive_key = libgnutls.gnutls_psk_netconf_derive_key
+-gnutls_psk_netconf_derive_key.argtypes = [c_char_p, c_char_p, c_char_p, POINTER(gnutls_datum_t)]
+-gnutls_psk_netconf_derive_key.restype = c_int
+-
+ gnutls_psk_server_get_username = libgnutls.gnutls_psk_server_get_username
+ gnutls_psk_server_get_username.argtypes = [gnutls_session_t]
+ gnutls_psk_server_get_username.restype = c_char_p
+@@ -857,10 +753,6 @@
+ gnutls_session_enable_compatibility_mode.argtypes = [gnutls_session_t]
+ gnutls_session_enable_compatibility_mode.restype = None
+
+-gnutls_session_get_client_random = libgnutls.gnutls_session_get_client_random
+-gnutls_session_get_client_random.argtypes = [gnutls_session_t]
+-gnutls_session_get_client_random.restype = c_void_p
+-
+ gnutls_session_get_data = libgnutls.gnutls_session_get_data
+ gnutls_session_get_data.argtypes = [gnutls_session_t, c_void_p, POINTER(size_t)]
+ gnutls_session_get_data.restype = c_int
+@@ -873,18 +765,10 @@
+ gnutls_session_get_id.argtypes = [gnutls_session_t, c_void_p, POINTER(size_t)]
+ gnutls_session_get_id.restype = c_int
+
+-gnutls_session_get_master_secret = libgnutls.gnutls_session_get_master_secret
+-gnutls_session_get_master_secret.argtypes = [gnutls_session_t]
+-gnutls_session_get_master_secret.restype = c_void_p
+-
+ gnutls_session_get_ptr = libgnutls.gnutls_session_get_ptr
+ gnutls_session_get_ptr.argtypes = [gnutls_session_t]
+ gnutls_session_get_ptr.restype = c_void_p
+
+-gnutls_session_get_server_random = libgnutls.gnutls_session_get_server_random
+-gnutls_session_get_server_random.argtypes = [gnutls_session_t]
+-gnutls_session_get_server_random.restype = c_void_p
+-
+ gnutls_session_is_resumed = libgnutls.gnutls_session_is_resumed
+ gnutls_session_is_resumed.argtypes = [gnutls_session_t]
+ gnutls_session_is_resumed.restype = c_int
+@@ -905,10 +789,6 @@
+ gnutls_set_default_priority.argtypes = [gnutls_session_t]
+ gnutls_set_default_priority.restype = c_int
+
+-gnutls_sign_algorithm_get_name = libgnutls.gnutls_sign_algorithm_get_name
+-gnutls_sign_algorithm_get_name.argtypes = [gnutls_sign_algorithm_t]
+-gnutls_sign_algorithm_get_name.restype = c_char_p
+-
+ gnutls_sign_callback_get = libgnutls.gnutls_sign_callback_get
+ gnutls_sign_callback_get.argtypes = [gnutls_session_t, POINTER(c_void_p)]
+ gnutls_sign_callback_get.restype = gnutls_sign_func
+@@ -937,14 +817,6 @@
+ gnutls_transport_set_errno.argtypes = [gnutls_session_t, c_int]
+ gnutls_transport_set_errno.restype = None
+
+-gnutls_transport_set_global_errno = libgnutls.gnutls_transport_set_global_errno
+-gnutls_transport_set_global_errno.argtypes = [c_int]
+-gnutls_transport_set_global_errno.restype = None
+-
+-gnutls_transport_set_lowat = libgnutls.gnutls_transport_set_lowat
+-gnutls_transport_set_lowat.argtypes = [gnutls_session_t, c_int]
+-gnutls_transport_set_lowat.restype = None
+-
+ gnutls_transport_set_ptr = libgnutls.gnutls_transport_set_ptr
+ gnutls_transport_set_ptr.argtypes = [gnutls_session_t, gnutls_transport_ptr_t]
+ gnutls_transport_set_ptr.restype = None
+@@ -1501,10 +1373,6 @@
+ gnutls_x509_privkey_sign_hash.argtypes = [gnutls_x509_privkey_t, POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
+ gnutls_x509_privkey_sign_hash.restype = c_int
+
+-gnutls_x509_privkey_verify_data = libgnutls.gnutls_x509_privkey_verify_data
+-gnutls_x509_privkey_verify_data.argtypes = [gnutls_x509_privkey_t, c_uint, POINTER(gnutls_datum_t), POINTER(gnutls_datum_t)]
+-gnutls_x509_privkey_verify_data.restype = c_int
+-
+ gnutls_x509_rdn_get = libgnutls.gnutls_x509_rdn_get
+ gnutls_x509_rdn_get.argtypes = [POINTER(gnutls_datum_t), c_char_p, POINTER(size_t)]
+ gnutls_x509_rdn_get.restype = c_int
+diff -ru gnutls/library/__init__.py gnutls.fixed/library/__init__.py
+--- gnutls/library/__init__.py 2011-11-11 17:23:49.000000000 +0000
++++ gnutls.fixed/library/__init__.py 2012-08-01 11:57:42.284290997 +0100
+@@ -53,6 +53,9 @@
+ else:
+ raise RuntimeError('cannot find lib%s on this system' % name)
+
++def do_nothing(*args, **kwargs):
++ pass
++
+
+ def initialize_gcrypt():
+ from ctypes import c_void_p
+@@ -104,7 +107,7 @@
+ libgcrypt = load_library(name='gcrypt', version=11)
+ gcry_control = libgcrypt.gcry_control
+ else:
+- gcry_control = libgnutls.gcry_control
++ gcry_control = do_nothing
+
+ gcry_control(GCRYCTL_SET_THREAD_CBS, c_void_p(gcrypt_thread_callbacks_ptr))
+ if system == 'cygwin':
+@@ -117,12 +120,10 @@
+
+
+
+-libgnutls = load_library(name='gnutls', version=26)
+-libgnutls_extra = load_library(name='gnutls-extra', version=26)
++libgnutls = load_library(name='gnutls', version=28)
+
+ initialize_gcrypt()
+ libgnutls.gnutls_global_init()
+-libgnutls_extra.gnutls_global_init_extra()
+
+
+ from gnutls.library import constants
+@@ -136,9 +137,6 @@
+ if functions.gnutls_check_version(__need_version__) is None:
+ version = functions.gnutls_check_version(None)
+ raise RuntimeError("Found GNUTLS library version %s, but at least version %s is required" % (version, __need_version__))
+-if functions.gnutls_extra_check_version(__need_version__) is None:
+- version = functions.gnutls_extra_check_version(None)
+- raise RuntimeError("Found GNUTLS extra library version %s, but at least version %s is required" % (version, __need_version__))
+
+
+ del get_system_name, library_locations, load_library, initialize_gcrypt
diff --git a/community-staging/python2-lcms/PKGBUILD b/community-staging/python2-lcms/PKGBUILD
new file mode 100644
index 000000000..3b75364ab
--- /dev/null
+++ b/community-staging/python2-lcms/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 66130 2012-02-23 01:39:55Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Connor Behan <connor.behan@gmail.com>
+
+pkgname=python2-lcms
+pkgver=1.19
+_mver=1.19
+pkgrel=4
+pkgdesc="LittleCMS Python bindings"
+arch=(i686 x86_64)
+license=('CUSTOM')
+depends=('libtiff' 'python2' 'lcms')
+url="http://www.littlecms.com"
+options=('!libtool')
+source=(http://downloads.sourceforge.net/project/lcms/lcms/${_mver}/lcms-$pkgver.tar.gz)
+md5sums=('8af94611baf20d9646c7c2c285859818')
+
+build() {
+ cd $srcdir/lcms-${_mver}
+ ./configure --prefix=/usr --with-python
+ make
+}
+
+package() {
+ cd $srcdir/lcms-${_mver}
+ make DESTDIR=$pkgdir install
+ install -D -m0644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+ rm -rf $pkgdir/usr/bin \
+ $pkgdir/usr/include \
+ $pkgdir/usr/lib/pkgconfig \
+ $pkgdir/usr/lib/liblcms.* \
+ $pkgdir/usr/share/man/man1/icc2ps.1 \
+ $pkgdir/usr/share/man/man1/icclink.1 \
+ $pkgdir/usr/share/man/man1/jpegicc.1 \
+ $pkgdir/usr/share/man/man1/tifficc.1 \
+ $pkgdir/usr/share/man/man1/wtpt.1
+}
diff --git a/community-staging/python2-m2crypto/PKGBUILD b/community-staging/python2-m2crypto/PKGBUILD
new file mode 100644
index 000000000..a68c5a35d
--- /dev/null
+++ b/community-staging/python2-m2crypto/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 140196 2011-10-09 08:27:16Z angvp $
+# Maintainer: Angel Velasquez <angvp@archlinux.org>
+# Contributor: Sergej Pupykin <sergej@aur.archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=python2-m2crypto
+pkgver=0.21.1
+pkgrel=2
+pkgdesc="A crypto and SSL toolkit for Python"
+arch=('i686' 'x86_64')
+url="http://wiki.osafoundation.org/bin/view/Projects/MeTooCrypto"
+license=('BSD')
+depends=('python2' 'openssl')
+makedepends=('swig')
+source=("http://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-${pkgver}.tar.gz")
+md5sums=('f93d8462ff7646397a9f77a2fe602d17')
+
+build() {
+ cd "${srcdir}/M2Crypto-${pkgver}"
+ python2 setup.py build
+}
+
+package() {
+ cd "${srcdir}/M2Crypto-${pkgver}"
+ python2 setup.py install --root="${pkgdir}/" --optimize=1
+ install -D -m644 LICENCE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/community-staging/python2-m2crypto/openssl1.patch b/community-staging/python2-m2crypto/openssl1.patch
new file mode 100644
index 000000000..59dba554d
--- /dev/null
+++ b/community-staging/python2-m2crypto/openssl1.patch
@@ -0,0 +1,531 @@
+Index: tests/test_ssl.py
+===================================================================
+--- tests/test_ssl.py (revision 698)
++++ tests/test_ssl.py (working copy)
+@@ -405,8 +405,11 @@
+ try:
+ ctx = SSL.Context('sslv23', weak_crypto=1)
+ s = SSL.Connection(ctx)
+- s.connect(self.srv_addr)
+- self.failUnlessEqual(s.get_version(), 'SSLv2')
++ if m2.OPENSSL_VERSION_NUMBER < 0x10000000: # SSLv2 ciphers disabled by default in newer OpenSSL
++ s.connect(self.srv_addr)
++ self.failUnlessEqual(s.get_version(), 'SSLv2')
++ else:
++ self.assertRaises(SSL.SSLError, s.connect, self.srv_addr)
+ s.close()
+ finally:
+ self.stop_server(pid)
+Index: tests/test_x509.py
+===================================================================
+--- tests/test_x509.py (revision 698)
++++ tests/test_x509.py (working copy)
+@@ -142,7 +142,7 @@
+ cn.set_data("Hello There!")
+ assert cn.get_data().as_text() == "Hello There!", cn.get_data().as_text()
+
+- assert n.as_hash() == 1697185131
++ self.assertEquals(n.as_hash(), 1697185131)
+
+ self.assertRaises(IndexError, lambda: n[100])
+ self.assert_(n[10])
+Index: tests/test_smime.py
+===================================================================
+--- tests/test_smime.py (revision 698)
++++ tests/test_smime.py (working copy)
+@@ -6,7 +6,7 @@
+ """
+
+ import unittest
+-from M2Crypto import SMIME, BIO, Rand, X509, EVP
++from M2Crypto import SMIME, BIO, Rand, X509, EVP, Err
+
+ class SMIMETestCase(unittest.TestCase):
+ cleartext = 'some text to manipulate'
+@@ -213,7 +213,7 @@
+
+ self.filenameSmime = 'tests/sig.p7s'
+ f = BIO.openfile(self.filenameSmime, 'wb')
+- assert s.write(f, p7, BIO.MemoryBuffer('some text')) == 1
++ assert s.write(f, p7, BIO.MemoryBuffer('some text')) == 1, Err.get_error()
+ f.close()
+
+ def test_write_pkcs7_der(self):
+Index: SWIG/_evp.i
+===================================================================
+--- SWIG/_evp.i (revision 695)
++++ SWIG/_evp.i (working copy)
+@@ -180,7 +180,7 @@
+
+ PKCS5_PBKDF2_HMAC_SHA1(passbuf, passlen, saltbuf, saltlen, iter,
+ keylen, key);
+- ret = PyString_FromStringAndSize(key, keylen);
++ ret = PyString_FromStringAndSize((char*)key, keylen);
+ OPENSSL_cleanse(key, keylen);
+ return ret;
+ }
+@@ -339,7 +339,7 @@
+ klen = EVP_BytesToKey(cipher, md, (unsigned char *)sbuf,
+ (unsigned char *)dbuf, dlen, iter,
+ key, NULL); /* Since we are not returning IV no need to derive it */
+- ret = PyString_FromStringAndSize(key, klen);
++ ret = PyString_FromStringAndSize((char*)key, klen);
+ return ret;
+ }
+
+@@ -435,7 +435,7 @@
+ PyErr_SetString(_evp_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+ }
+- ret = PyString_FromStringAndSize(sigbuf, siglen);
++ ret = PyString_FromStringAndSize((char*)sigbuf, siglen);
+ OPENSSL_cleanse(sigbuf, siglen);
+ OPENSSL_free(sigbuf);
+ return ret;
+@@ -513,7 +513,7 @@
+ PyErr_SetString(PyExc_ValueError, "EVP_PKEY as DER failed");
+ return NULL;
+ }
+- der = PyString_FromStringAndSize(pp, len);
++ der = PyString_FromStringAndSize((char*)pp, len);
+ OPENSSL_free(pp);
+ return der;
+ }
+Index: SWIG/_ssl.i
+===================================================================
+--- SWIG/_ssl.i (revision 695)
++++ SWIG/_ssl.i (working copy)
+@@ -17,13 +17,17 @@
+ %apply Pointer NONNULL { SSL_CTX * };
+ %apply Pointer NONNULL { SSL * };
+ %apply Pointer NONNULL { SSL_CIPHER * };
+-%apply Pointer NONNULL { STACK * };
++%apply Pointer NONNULL { STACK_OF(SSL_CIPHER) * };
++%apply Pointer NONNULL { STACK_OF(X509) * };
+ %apply Pointer NONNULL { BIO * };
+ %apply Pointer NONNULL { DH * };
+ %apply Pointer NONNULL { RSA * };
+ %apply Pointer NONNULL { EVP_PKEY *};
+ %apply Pointer NONNULL { PyObject *pyfunc };
+
++%rename(ssl_get_ciphers) SSL_get_ciphers;
++extern STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *ssl);
++
+ %rename(ssl_get_version) SSL_get_version;
+ extern const char *SSL_get_version(CONST SSL *);
+ %rename(ssl_get_error) SSL_get_error;
+@@ -668,29 +672,25 @@
+ return SSL_CIPHER_get_bits(c, NULL);
+ }
+
+-STACK *ssl_get_ciphers(SSL *ssl) {
+- return (STACK *)SSL_get_ciphers(ssl);
++int sk_ssl_cipher_num(STACK_OF(SSL_CIPHER) *stack) {
++ return sk_SSL_CIPHER_num(stack);
+ }
+
+-int sk_ssl_cipher_num(STACK *stack) {
+- return sk_num(stack);
++SSL_CIPHER *sk_ssl_cipher_value(STACK_OF(SSL_CIPHER) *stack, int idx) {
++ return sk_SSL_CIPHER_value(stack, idx);
+ }
+
+-SSL_CIPHER *sk_ssl_cipher_value(STACK *stack, int idx) {
+- return (SSL_CIPHER *)sk_value(stack, idx);
++STACK_OF(X509) *ssl_get_peer_cert_chain(SSL *ssl) {
++ return SSL_get_peer_cert_chain(ssl);
+ }
+
+-STACK *ssl_get_peer_cert_chain(SSL *ssl) {
+- return (STACK *)SSL_get_peer_cert_chain(ssl);
++int sk_x509_num(STACK_OF(X509) *stack) {
++ return sk_X509_num(stack);
+ }
+
+-int sk_x509_num(STACK *stack) {
+- return sk_num(stack);
++X509 *sk_x509_value(STACK_OF(X509) *stack, int idx) {
++ return sk_X509_value(stack, idx);
+ }
+-
+-X509 *sk_x509_value(STACK *stack, int idx) {
+- return (X509 *)sk_value(stack, idx);
+-}
+ %}
+
+ %threadallow i2d_ssl_session;
+Index: SWIG/_x509.i
+===================================================================
+--- SWIG/_x509.i (revision 695)
++++ SWIG/_x509.i (working copy)
+@@ -148,8 +148,15 @@
+ extern int X509_NAME_print_ex(BIO *, X509_NAME *, int, unsigned long);
+ %rename(x509_name_print_ex_fp) X509_NAME_print_ex_fp;
+ extern int X509_NAME_print_ex_fp(FILE *, X509_NAME *, int, unsigned long);
++
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++%rename(x509_name_hash) X509_NAME_hash_old;
++extern unsigned long X509_NAME_hash_old(X509_NAME *);
++#else
+ %rename(x509_name_hash) X509_NAME_hash;
+ extern unsigned long X509_NAME_hash(X509_NAME *);
++#endif
++
+ %rename(x509_name_get_index_by_nid) X509_NAME_get_index_by_NID;
+ extern int X509_NAME_get_index_by_NID(X509_NAME *, int, int);
+
+@@ -171,7 +178,7 @@
+ if (PyString_Check($input)) {
+ Py_ssize_t len;
+
+- $1 = PyString_AsString($input);
++ $1 = (unsigned char *)PyString_AsString($input);
+ len = PyString_Size($input);
+ if (len > INT_MAX) {
+ PyErr_SetString(PyExc_ValueError, "object too large");
+@@ -184,7 +191,7 @@
+ }
+ }
+ %rename(x509_name_entry_set_data) X509_NAME_ENTRY_set_data;
+-extern int X509_NAME_ENTRY_set_data( X509_NAME_ENTRY *, int, CONST unsigned char *, int);
++extern int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *, int, CONST unsigned char *, int);
+ %typemap(in) (CONST unsigned char *, int);
+
+ %rename(x509_req_new) X509_REQ_new;
+@@ -230,7 +237,7 @@
+ %rename(x509_store_ctx_free) X509_STORE_CTX_free;
+ extern void X509_STORE_CTX_free(X509_STORE_CTX *);
+ %rename(x509_store_ctx_get1_chain) X509_STORE_CTX_get1_chain;
+-extern STACK *X509_STORE_CTX_get1_chain(X509_STORE_CTX *);
++extern STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *);
+
+ %rename(x509_extension_get_critical) X509_EXTENSION_get_critical;
+ extern int X509_EXTENSION_get_critical(X509_EXTENSION *);
+@@ -348,7 +355,7 @@
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ }
+ else {
+- ret = PyString_FromStringAndSize(buf, len);
++ ret = PyString_FromStringAndSize((char*)buf, len);
+ OPENSSL_free(buf);
+ }
+ return ret;
+@@ -435,12 +442,12 @@
+ }
+
+ int x509_name_set_by_nid(X509_NAME *name, int nid, PyObject *obj) {
+- return X509_NAME_add_entry_by_NID(name, nid, MBSTRING_ASC, PyString_AsString(obj), -1, -1, 0);
++ return X509_NAME_add_entry_by_NID(name, nid, MBSTRING_ASC, (unsigned char *)PyString_AsString(obj), -1, -1, 0);
+ }
+
+ /* x509_name_add_entry_by_txt */
+ int x509_name_add_entry_by_txt(X509_NAME *name, char *field, int type, char *bytes, int len, int loc, int set) {
+- return X509_NAME_add_entry_by_txt(name, field, type, bytes, len, loc, set);
++ return X509_NAME_add_entry_by_txt(name, field, type, (unsigned char *)bytes, len, loc, set);
+ }
+
+ PyObject *x509_name_get_der(X509_NAME *name)
+@@ -450,23 +457,23 @@
+ }
+
+ /* sk_X509_new_null() is a macro returning "STACK_OF(X509) *". */
+-STACK *sk_x509_new_null(void) {
+- return (STACK *)sk_X509_new_null();
++STACK_OF(X509) *sk_x509_new_null(void) {
++ return sk_X509_new_null();
+ }
+
+ /* sk_X509_free() is a macro. */
+-void sk_x509_free(STACK *stack) {
+- sk_X509_free((STACK_OF(X509) *)stack);
++void sk_x509_free(STACK_OF(X509) *stack) {
++ sk_X509_free(stack);
+ }
+
+ /* sk_X509_push() is a macro. */
+-int sk_x509_push(STACK *stack, X509 *x509) {
+- return sk_X509_push((STACK_OF(X509) *)stack, x509);
++int sk_x509_push(STACK_OF(X509) *stack, X509 *x509) {
++ return sk_X509_push(stack, x509);
+ }
+
+ /* sk_X509_pop() is a macro. */
+-X509 *sk_x509_pop(STACK *stack) {
+- return sk_X509_pop((STACK_OF(X509) *)stack);
++X509 *sk_x509_pop(STACK_OF(X509) *stack) {
++ return sk_X509_pop(stack);
+ }
+
+ int x509_store_load_locations(X509_STORE *store, const char *file) {
+@@ -493,21 +500,29 @@
+ return X509_REQ_set_version(x, version);
+ }
+
+-int x509_req_add_extensions(X509_REQ *req, STACK *exts) {
+- return X509_REQ_add_extensions(req, (STACK_OF(X509_EXTENSION) *)exts);
++int x509_req_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts) {
++ return X509_REQ_add_extensions(req, exts);
+ }
+
+-X509_NAME_ENTRY *x509_name_entry_create_by_txt( X509_NAME_ENTRY **ne, char *field, int type, char *bytes, int len) {
+- return X509_NAME_ENTRY_create_by_txt( ne, field, type, bytes, len);
++X509_NAME_ENTRY *x509_name_entry_create_by_txt(X509_NAME_ENTRY **ne, char *field, int type, char *bytes, int len) {
++ return X509_NAME_ENTRY_create_by_txt( ne, field, type, (unsigned char *)bytes, len);
+ }
+
+-LHASH *
+-x509v3_lhash(){
+- return lh_new(NULL,NULL);
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++LHASH_OF(CONF_VALUE)
++#else
++LHASH
++#endif
++*x509v3_lhash() {
++ return lh_new(NULL, NULL); /* Should probably be lh_CONF_VALUE_new but won't compile. */
+ }
+
+ X509V3_CTX *
+-x509v3_set_conf_lhash(LHASH * lhash){
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++x509v3_set_conf_lhash(LHASH_OF(CONF_VALUE) * lhash) {
++#else
++x509v3_set_conf_lhash(LHASH * lhash) {
++#endif
+ X509V3_CTX * ctx;
+ if (!(ctx=(X509V3_CTX *)PyMem_Malloc(sizeof(X509V3_CTX)))) {
+ PyErr_SetString(PyExc_MemoryError, "x509v3_set_conf_lhash");
+@@ -517,11 +532,20 @@
+ return ctx;
+ }
+
+-X509_EXTENSION *x509v3_ext_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value) {
++X509_EXTENSION *
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++x509v3_ext_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx, char *name, char *value) {
++#else
++x509v3_ext_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value) {
++#endif
+ X509_EXTENSION * ext = NULL;
+ ext = X509V3_EXT_conf(conf, ctx, name, value);
+ PyMem_Free(ctx);
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++ lh_CONF_VALUE_free(conf);
++#else
+ lh_free(conf);
++#endif
+ return ext;
+ }
+
+@@ -543,33 +567,33 @@
+ }
+
+ /* sk_X509_EXTENSION_new_null is a macro. */
+-STACK *sk_x509_extension_new_null(void) {
+- return (STACK *)sk_X509_EXTENSION_new_null();
++STACK_OF(X509_EXTENSION) *sk_x509_extension_new_null(void) {
++ return sk_X509_EXTENSION_new_null();
+ }
+
+ /* sk_X509_EXTENSION_free() is a macro. */
+-void sk_x509_extension_free(STACK *stack) {
+- sk_X509_EXTENSION_free((STACK_OF(X509_EXTENSION) *)stack);
++void sk_x509_extension_free(STACK_OF(X509_EXTENSION) *stack) {
++ sk_X509_EXTENSION_free(stack);
+ }
+
+ /* sk_X509_EXTENSION_push() is a macro. */
+-int sk_x509_extension_push(STACK *stack, X509_EXTENSION *x509_ext) {
+- return sk_X509_EXTENSION_push((STACK_OF(X509_EXTENSION) *)stack, x509_ext);
++int sk_x509_extension_push(STACK_OF(X509_EXTENSION) *stack, X509_EXTENSION *x509_ext) {
++ return sk_X509_EXTENSION_push(stack, x509_ext);
+ }
+
+ /* sk_X509_EXTENSION_pop() is a macro. */
+-X509_EXTENSION *sk_x509_extension_pop(STACK *stack) {
+- return sk_X509_EXTENSION_pop((STACK_OF(X509_EXTENSION) *)stack);
++X509_EXTENSION *sk_x509_extension_pop(STACK_OF(X509_EXTENSION) *stack) {
++ return sk_X509_EXTENSION_pop(stack);
+ }
+
+ /* sk_X509_EXTENSION_num() is a macro. */
+-int sk_x509_extension_num(STACK *stack) {
+- return sk_X509_EXTENSION_num((STACK_OF(X509_EXTENSION) *)stack);
++int sk_x509_extension_num(STACK_OF(X509_EXTENSION) *stack) {
++ return sk_X509_EXTENSION_num(stack);
+ }
+
+ /* sk_X509_EXTENSION_value() is a macro. */
+-X509_EXTENSION *sk_x509_extension_value(STACK *stack, int i) {
+- return sk_X509_EXTENSION_value((STACK_OF(X509_EXTENSION) *)stack, i);
++X509_EXTENSION *sk_x509_extension_value(STACK_OF(X509_EXTENSION) *stack, int i) {
++ return sk_X509_EXTENSION_value(stack, i);
+ }
+
+ /* X509_STORE_CTX_get_app_data is a macro. */
+@@ -590,7 +614,7 @@
+ #define I2DTYPE int (*)()
+ #endif
+
+-STACK *
++STACK_OF(X509) *
+ make_stack_from_der_sequence(PyObject * pyEncodedString){
+ STACK_OF(X509) *certs;
+ Py_ssize_t encoded_string_len;
+@@ -606,7 +630,7 @@
+ return NULL;
+ }
+
+- certs = ASN1_seq_unpack((unsigned char *)encoded_string, encoded_string_len, (D2ITYPE)d2i_X509, (void(*)())X509_free );
++ certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+ if (!certs) {
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+@@ -616,13 +640,13 @@
+ }
+
+ PyObject *
+-get_der_encoding_stack(STACK * stack){
++get_der_encoding_stack(STACK_OF(X509) *stack){
+ PyObject * encodedString;
+
+ unsigned char * encoding;
+ int len;
+
+- encoding = ASN1_seq_pack((STACK_OF(X509)*) stack, (I2DTYPE)i2d_X509, NULL, &len);
++ encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+ if (!encoding) {
+ PyErr_SetString(_x509_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+Index: SWIG/_aes.i
+===================================================================
+--- SWIG/_aes.i (revision 695)
++++ SWIG/_aes.i (working copy)
+@@ -76,7 +76,7 @@
+ AES_encrypt((const unsigned char *)in, out, key);
+ else
+ AES_decrypt((const unsigned char *)in, out, key);
+- return PyString_FromStringAndSize(out, outlen);
++ return PyString_FromStringAndSize((char*)out, outlen);
+ }
+
+ int AES_type_check(AES_KEY *key) {
+Index: SWIG/_util.i
+===================================================================
+--- SWIG/_util.i (revision 695)
++++ SWIG/_util.i (working copy)
+@@ -48,7 +48,7 @@
+ PyErr_SetString(_util_err, ERR_reason_error_string(ERR_get_error()));
+ return NULL;
+ }
+- obj = PyString_FromStringAndSize(ret, len);
++ obj = PyString_FromStringAndSize((char*)ret, len);
+ OPENSSL_free(ret);
+ return obj;
+ }
+Index: SWIG/_m2crypto.i
+===================================================================
+--- SWIG/_m2crypto.i (revision 695)
++++ SWIG/_m2crypto.i (working copy)
+@@ -38,6 +38,19 @@
+ #define CONST098
+ #endif
+
++/* Bring in STACK_OF macro definition */
++%include <openssl/safestack.h>
++
++/* Bring in LHASH_OF macro definition */
++/* XXX Can't include lhash.h where LHASH_OF is defined, because it includes
++ XXX stdio.h etc. which we fail to include. So we have to (re)define
++ XXX LHASH_OF here instead.
++%include <openssl/lhash.h>
++*/
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++#define LHASH_OF(type) struct lhash_st_##type
++#endif
++
+ %include constraints.i
+ %include _threads.i
+ %include _lib.i
+Index: SWIG/_rand.i
+===================================================================
+--- SWIG/_rand.i (revision 695)
++++ SWIG/_rand.i (working copy)
+@@ -87,7 +87,7 @@
+ Py_INCREF(Py_None);
+ return Py_None;
+ } else {
+- PyTuple_SET_ITEM(tuple, 0, PyString_FromStringAndSize(blob, n));
++ PyTuple_SET_ITEM(tuple, 0, PyString_FromStringAndSize((char*)blob, n));
+ PyMem_Free(blob);
+ PyTuple_SET_ITEM(tuple, 1, PyInt_FromLong((long)ret));
+ return tuple;
+Index: SWIG/_pkcs7.i
+===================================================================
+--- SWIG/_pkcs7.i (revision 695)
++++ SWIG/_pkcs7.i (working copy)
+@@ -12,7 +12,7 @@
+ %apply Pointer NONNULL { EVP_CIPHER * };
+ %apply Pointer NONNULL { EVP_PKEY * };
+ %apply Pointer NONNULL { PKCS7 * };
+-%apply Pointer NONNULL { STACK * };
++%apply Pointer NONNULL { STACK_OF(X509) * };
+ %apply Pointer NONNULL { X509 * };
+
+ %rename(pkcs7_new) PKCS7_new;
+@@ -54,8 +54,8 @@
+
+ %threadallow pkcs7_encrypt;
+ %inline %{
+-PKCS7 *pkcs7_encrypt(STACK *stack, BIO *bio, EVP_CIPHER *cipher, int flags) {
+- return PKCS7_encrypt((STACK_OF(X509) *)stack, bio, cipher, flags);
++PKCS7 *pkcs7_encrypt(STACK_OF(X509) *stack, BIO *bio, EVP_CIPHER *cipher, int flags) {
++ return PKCS7_encrypt(stack, bio, cipher, flags);
+ }
+
+ PyObject *pkcs7_decrypt(PKCS7 *pkcs7, EVP_PKEY *pkey, X509 *cert, int flags) {
+@@ -96,14 +96,14 @@
+
+ %threadallow pkcs7_sign1;
+ %inline %{
+-PKCS7 *pkcs7_sign1(X509 *x509, EVP_PKEY *pkey, STACK *stack, BIO *bio, int flags) {
+- return PKCS7_sign(x509, pkey, (STACK_OF(X509) *)stack, bio, flags);
++PKCS7 *pkcs7_sign1(X509 *x509, EVP_PKEY *pkey, STACK_OF(X509) *stack, BIO *bio, int flags) {
++ return PKCS7_sign(x509, pkey, stack, bio, flags);
+ }
+ %}
+
+ %threadallow pkcs7_verify1;
+ %inline %{
+-PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK *stack, X509_STORE *store, BIO *data, int flags) {
++PyObject *pkcs7_verify1(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, BIO *data, int flags) {
+ int outlen;
+ char *outbuf;
+ BIO *bio;
+@@ -113,7 +113,7 @@
+ PyErr_SetString(PyExc_MemoryError, "pkcs7_verify1");
+ return NULL;
+ }
+- if (!PKCS7_verify(pkcs7, (STACK_OF(X509) *)stack, store, data, bio, flags)) {
++ if (!PKCS7_verify(pkcs7, stack, store, data, bio, flags)) {
+ PyErr_SetString(_pkcs7_err, ERR_reason_error_string(ERR_get_error()));
+ BIO_free(bio);
+ return NULL;
+@@ -131,7 +131,7 @@
+ return ret;
+ }
+
+-PyObject *pkcs7_verify0(PKCS7 *pkcs7, STACK *stack, X509_STORE *store, int flags) {
++PyObject *pkcs7_verify0(PKCS7 *pkcs7, STACK_OF(X509) *stack, X509_STORE *store, int flags) {
+ return pkcs7_verify1(pkcs7, stack, store, NULL, flags);
+ }
+ %}
+@@ -229,7 +229,7 @@
+ }
+
+ /* return STACK_OF(X509)* */
+-STACK *pkcs7_get0_signers(PKCS7 *p7, STACK *certs, int flags) {
++STACK_OF(X509) *pkcs7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags) {
+ return PKCS7_get0_signers(p7, certs, flags);
+ }
+
diff --git a/community-staging/python2-pybluez/PKGBUILD b/community-staging/python2-pybluez/PKGBUILD
new file mode 100644
index 000000000..6007614a6
--- /dev/null
+++ b/community-staging/python2-pybluez/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 66132 2012-02-23 01:40:38Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: cs-cam - me.at.camdaniel.com
+
+pkgname=python2-pybluez
+pkgver=0.18
+pkgrel=4
+pkgdesc="Python wrapper for the BlueZ Bluetooth stack"
+arch=('i686' 'x86_64')
+url="http://code.google.com/p/pybluez/"
+license=('GPL')
+provides=('pybluez')
+conflicts=('pybluez')
+replaces=('pybluez')
+depends=('python2' 'bluez')
+source=(http://pybluez.googlecode.com/files/PyBluez-$pkgver.tar.gz)
+md5sums=('be8c8ce615c3189fda1aaf3d568314b2')
+
+build() {
+ cd $srcdir/PyBluez-$pkgver
+ python2 setup.py install --root=$pkgdir
+ ln -s bluetooth/_bluetooth.so $pkgdir/usr/lib/python2.7/site-packages/_bluetooth.so
+}
diff --git a/community-staging/python2-pyxmpp/PKGBUILD b/community-staging/python2-pyxmpp/PKGBUILD
new file mode 100644
index 000000000..49096a86f
--- /dev/null
+++ b/community-staging/python2-pyxmpp/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 72078 2012-06-08 09:35:02Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=python2-pyxmpp
+pkgver=1.1.2
+pkgrel=2
+pkgdesc="A Python XMPP and Jabber implementation based on libxml2"
+arch=('i686' 'x86_64')
+url="http://pyxmpp.jajcus.net/"
+license=('LGPL')
+depends=('python2-dnspython' 'libxml2' 'python2-m2crypto')
+source=(http://pyxmpp.jajcus.net/downloads/pyxmpp-$pkgver.tar.gz)
+md5sums=('a38abf032aca0408b6055cd94296eb75')
+
+build() {
+ cd $srcdir/pyxmpp-$pkgver
+ python2 setup.py build
+ python2 setup.py install --root=$pkgdir
+}
diff --git a/community-staging/python2-simplejson/PKGBUILD b/community-staging/python2-simplejson/PKGBUILD
new file mode 100644
index 000000000..c6866a23d
--- /dev/null
+++ b/community-staging/python2-simplejson/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 74926 2012-08-09 22:02:03Z jlichtblau $
+# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: David Moore <davidm@sjsoft.com>
+
+pkgname=python2-simplejson
+pkgver=2.6.1
+pkgrel=2
+pkgdesc="Simple, fast, extensible JSON encoder/decoder for Python"
+license=('MIT')
+arch=('i686' 'x86_64')
+url="http://undefined.org/python/#simplejson"
+depends=('python2')
+makedepends=('python2-distribute')
+changelog=$pkgname.changelog
+source=($pkgname-$pkgver.tar.gz::https://github.com/simplejson/simplejson/tarball/v${pkgver})
+sha256sums=('484b4cf0a545fc59a19ea8eed3a957919a89be116804b53712ec63466d7c3a31')
+
+build() {
+ cd ${srcdir}/simplejson-simplejson-*
+
+ python2 setup.py install --root=${pkgdir}
+
+# License
+ install -Dm644 ${srcdir}/simplejson-simplejson-*/LICENSE.txt \
+ ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/community-staging/python2-simplejson/python2-simplejson.changelog b/community-staging/python2-simplejson/python2-simplejson.changelog
new file mode 100644
index 000000000..c1e227d24
--- /dev/null
+++ b/community-staging/python2-simplejson/python2-simplejson.changelog
@@ -0,0 +1,20 @@
+2012-07-09 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * python-simplejson 2.6.1-1
+
+2012-05-24 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * python-simplejson 2.5.2-1
+
+2012-03-08 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * python-simplejson 2.3.3-1
+
+2011-10-26 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * python-simplejson 2.2.1-1
+
+2011-05-01 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * python-simplejson 2.1.3-1
+
+2010-05-15 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * Update to major release 2.1.1
+
+2010-03-27 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * Update to major release 2.1.0
diff --git a/community-staging/python2-vorbissimple/PKGBUILD b/community-staging/python2-vorbissimple/PKGBUILD
new file mode 100644
index 000000000..ba0a8be63
--- /dev/null
+++ b/community-staging/python2-vorbissimple/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 66136 2012-02-23 01:43:46Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=python2-vorbissimple
+pkgver=0.0.2
+pkgrel=6
+pkgdesc="Python bindings for vorbissimple"
+arch=('i686' 'x86_64')
+url="http://kamaelia.sourceforge.net"
+license=('MPL')
+depends=('python2' 'vorbissimple')
+makedepends=('pyrex')
+source=(http://downloads.sourceforge.net/kamaelia/vorbissimple-$pkgver.tar.gz)
+md5sums=('332077b25a4c9547947ab0922361ffda')
+
+build() {
+ cd $srcdir/vorbissimple-$pkgver/python
+ sed -i 's#__new__#__cinit__#' vorbissimple.pyx
+ python2 setup.py install --root=$pkgdir
+}
diff --git a/community-staging/virtkey/PKGBUILD b/community-staging/virtkey/PKGBUILD
new file mode 100644
index 000000000..7d350b553
--- /dev/null
+++ b/community-staging/virtkey/PKGBUILD
@@ -0,0 +1,46 @@
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: codl <codl@aquageek.net>
+# Contributor: Megamixman <Megamixman@gmail.com>
+
+pkgbase=virtkey
+pkgname=('python2-virtkey' 'python-virtkey')
+pkgver=0.61.0
+pkgrel=2
+arch=('i686' 'x86_64')
+url="https://launchpad.net/virtkey"
+license=('LGPL')
+makedepends=('python2' 'python' 'libxtst' 'gtk2')
+source=(http://launchpad.net/$pkgbase/${pkgver%.*}/$pkgver/+download/$pkgbase-$pkgver.tar.gz)
+md5sums=('536d30acb2c8ddadc6b4a26fc01e8390')
+
+build() {
+ cd "$srcdir"
+
+ cp -a {,python2-}$pkgbase-$pkgver
+
+ # Build python 2 module
+ cd "$srcdir/python2-$pkgbase-$pkgver"
+ python2 setup.py build
+
+ # Build python 3 module
+ cd "$srcdir/$pkgbase-$pkgver"
+ python setup.py build
+}
+
+package_python2-virtkey() {
+ pkgdesc="Python 2 extension for emulating keypresses and getting layout information from the X server"
+ depends=('python2' 'libxtst' 'gtk2')
+
+ cd "$srcdir/python2-$pkgbase-$pkgver"
+
+ python2 setup.py install --root=$pkgdir/ --optimize=1
+}
+
+package_python-virtkey() {
+ pkgdesc="Python extension for emulating keypresses and getting layout information from the X server"
+ depends=('python' 'libxtst' 'gtk2')
+
+ cd "$srcdir/$pkgbase-$pkgver"
+
+ python3 setup.py install --root=$pkgdir/ --optimize=1
+}