mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-07-30 22:48:07 -07:00
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>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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:" \
|
||||
|
||||
77
dev-python/pyldap/pyldap-2.4.20-r2.ebuild
Normal file
77
dev-python/pyldap/pyldap-2.4.20-r2.ebuild
Normal file
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user