summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2015-10-14 16:05:34 +0200
committerJustin Lecher <jlec@gentoo.org>2015-10-14 16:05:34 +0200
commit1009299d11d10c0610e698fa5b6dd8dad63d5acb (patch)
tree4ce84167206f9e213dbd84d5ad76ded3f24fb16c /dev-python/pyldap
parentdev-python/pyxattr: Rekeyword according to old KEYWORDS (diff)
downloadgentoo-1009299d11d10c0610e698fa5b6dd8dad63d5acb.tar.gz
gentoo-1009299d11d10c0610e698fa5b6dd8dad63d5acb.tar.bz2
gentoo-1009299d11d10c0610e698fa5b6dd8dad63d5acb.zip
dev-python/pyldap: Backport patch for bytes/string conversion problem
Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=562854 Package-Manager: portage-2.2.23 Signed-off-by: Justin Lecher <jlec@gentoo.org>
Diffstat (limited to 'dev-python/pyldap')
-rw-r--r--dev-python/pyldap/files/pyldap-2.4.20-bytes_string-backport.patch49
-rw-r--r--dev-python/pyldap/metadata.xml2
-rw-r--r--dev-python/pyldap/pyldap-2.4.20-r1.ebuild2
-rw-r--r--dev-python/pyldap/pyldap-2.4.20-r2.ebuild77
4 files changed, 129 insertions, 1 deletions
diff --git a/dev-python/pyldap/files/pyldap-2.4.20-bytes_string-backport.patch b/dev-python/pyldap/files/pyldap-2.4.20-bytes_string-backport.patch
new file mode 100644
index 000000000000..ff4519bb0cd2
--- /dev/null
+++ b/dev-python/pyldap/files/pyldap-2.4.20-bytes_string-backport.patch
@@ -0,0 +1,49 @@
+From 6e9e1902f33bff8ea179dc32ce4d2aa71b3335de Mon Sep 17 00:00:00 2001
+From: Petr Viktorin <pviktori@redhat.com>
+Date: Fri, 2 Oct 2015 14:06:12 +0200
+Subject: [PATCH] Fix sasl string/bytes mismatch
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The SASL mechanism and response are always bytes; encode them if necessary.
+
+Based on patch by Michael Šimáček: https://github.com/pyldap/pyldap/pull/20
+---
+ Lib/ldap/sasl.py | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/Lib/ldap/sasl.py b/Lib/ldap/sasl.py
+index 1158671..de38393 100644
+--- a/Lib/ldap/sasl.py
++++ b/Lib/ldap/sasl.py
+@@ -46,6 +46,8 @@ def __init__(self,cb_value_dict,mech):
+ SASL callback id's. The mech argument is a string that specifies
+ the SASL mechaninsm to be uesd."""
+ self.cb_value_dict = cb_value_dict or {}
++ if not isinstance(mech, bytes):
++ mech = mech.encode('utf-8')
+ self.mech = mech
+
+ def callback(self,cb_id,challenge,prompt,defresult):
+@@ -62,7 +64,10 @@ def callback(self,cb_id,challenge,prompt,defresult):
+ cb_value_dictionary. Note that the current callback interface is not very
+ useful for writing generic sasl GUIs, which would need to know all
+ the questions to ask, before the answers are returned to the sasl
+- lib (in contrast to one question at a time)."""
++ lib (in contrast to one question at a time).
++
++ Unicode strings are always converted to bytes.
++ """
+
+ # The following print command might be useful for debugging
+ # new sasl mechanisms. So it is left here
+@@ -72,6 +77,8 @@ def callback(self,cb_id,challenge,prompt,defresult):
+ _trace_file.write("*** id=%d, challenge=%s, prompt=%s, defresult=%s\n-> %s\n" % (
+ cb_id, challenge, prompt, repr(defresult), repr(self.cb_value_dict.get(cb_result))
+ ))
++ if not isinstance(cb_result, bytes):
++ cb_result = cb_result.encode('utf-8')
+ return cb_result
+
+
diff --git a/dev-python/pyldap/metadata.xml b/dev-python/pyldap/metadata.xml
index b491fc41d4f8..7a3d4a504cc9 100644
--- a/dev-python/pyldap/metadata.xml
+++ b/dev-python/pyldap/metadata.xml
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='UTF-8'?>
+<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>python</herd>
diff --git a/dev-python/pyldap/pyldap-2.4.20-r1.ebuild b/dev-python/pyldap/pyldap-2.4.20-r1.ebuild
index 55a781d83313..1ea0d220e39a 100644
--- a/dev-python/pyldap/pyldap-2.4.20-r1.ebuild
+++ b/dev-python/pyldap/pyldap-2.4.20-r1.ebuild
@@ -31,6 +31,8 @@ DEPEND="${RDEPEND}
doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
RDEPEND+=" !dev-python/python-ldap"
+PATCHES=( "${FILESDIR}"/${P}-bytes_string-backport.patch )
+
python_prepare_all() {
sed -e "s:^library_dirs =.*:library_dirs = /usr/$(get_libdir) /usr/$(get_libdir)/sasl2:" \
-e "s:^include_dirs =.*:include_dirs = ${EPREFIX}/usr/include ${EPREFIX}/usr/include/sasl:" \
diff --git a/dev-python/pyldap/pyldap-2.4.20-r2.ebuild b/dev-python/pyldap/pyldap-2.4.20-r2.ebuild
new file mode 100644
index 000000000000..1ea0d220e39a
--- /dev/null
+++ b/dev-python/pyldap/pyldap-2.4.20-r2.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_{3,4} pypy )
+
+inherit distutils-r1 multilib
+
+DESCRIPTION="Various LDAP-related Python modules"
+HOMEPAGE="https://pypi.python.org/pypi/pyldap https://github.com/pyldap/pyldap/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-solaris"
+IUSE="doc examples sasl ssl"
+
+# If you need support for openldap-2.3.x, please use python-ldap-2.3.9.
+# python team: Please do not remove python-ldap-2.3.9 from the tree.
+# OpenSSL is an optional runtime dep.
+# setup.py sets setuptools and misses pyasn1 and pyasn1-modules in install_requires
+RDEPEND="
+ >net-nds/openldap-2.4.11
+ dev-python/pyasn1[${PYTHON_USEDEP}]
+ dev-python/pyasn1-modules[${PYTHON_USEDEP}]
+ sasl? ( >=dev-libs/cyrus-sasl-2.1 )"
+DEPEND="${RDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
+RDEPEND+=" !dev-python/python-ldap"
+
+PATCHES=( "${FILESDIR}"/${P}-bytes_string-backport.patch )
+
+python_prepare_all() {
+ sed -e "s:^library_dirs =.*:library_dirs = /usr/$(get_libdir) /usr/$(get_libdir)/sasl2:" \
+ -e "s:^include_dirs =.*:include_dirs = ${EPREFIX}/usr/include ${EPREFIX}/usr/include/sasl:" \
+ -i setup.cfg || die "error fixing setup.cfg"
+
+ local mylibs="ldap"
+ if use sasl; then
+ use ssl && mylibs="ldap_r"
+ mylibs="${mylibs} sasl2"
+ else
+ sed -e 's/HAVE_SASL//g' -i setup.cfg || die
+ fi
+ use ssl && mylibs="${mylibs} ssl crypto"
+ use elibc_glibc && mylibs="${mylibs} resolv"
+
+ sed -e "s:^libs = .*:libs = lber ${mylibs}:" \
+ -i setup.cfg || die "error setting up libs in setup.cfg"
+
+ # set test expected to fail to expectedFailure
+ sed -e "s:^ def test_bad_urls: @unittest.expectedFailure\n def test_bad_urls:" \
+ -i Tests/t_ldapurl.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && emake -C Doc html
+}
+
+python_test() {
+ # XXX: the tests supposedly can start local slapd
+ # but it requires some manual config, it seems.
+
+ "${PYTHON}" Tests/t_ldapurl.py || die "Tests fail with ${EPYTHON}"
+}
+
+python_install_all() {
+ use examples && local EXAMPLES=( Demo/. )
+ use doc && local HTML_DOCS=( Doc/.build/html/. )
+
+ distutils-r1_python_install_all
+}