Compare commits

...

No commits in common. "c10s" and "c8" have entirely different histories.
c10s ... c8

10 changed files with 361 additions and 322 deletions

View File

@ -1 +0,0 @@
1

18
.gitignore vendored
View File

@ -1,17 +1 @@
python-ldap-2.3.10.tar.gz
/python-ldap-2.3.12.tar.gz
/python-ldap-2.4.6.tar.gz
/python-ldap-2.4.16.tar.gz
/python-ldap-2.4.17.tar.gz
/python-ldap-2.4.25.tar.gz
/python-ldap-3.0.0b1.tar.gz
/python-ldap-3.0.0b2.tar.gz
/python-ldap-3.0.0b3.tar.gz
/python-ldap-3.0.0b4.tar.gz
/python-ldap-3.0.0.tar.gz
/python-ldap-3.1.0.tar.gz
/python-ldap-3.3.1.tar.gz
/python-ldap-3.4.0.tar.gz
/python-ldap-3.4.2.tar.gz
/python-ldap-3.4.3.tar.gz
/python-ldap-3.4.4.tar.gz
SOURCES/python-ldap-3.3.1.tar.gz

1
.python-ldap.metadata Normal file
View File

@ -0,0 +1 @@
324f671225f10005b34e9cce2c0e307a96fa8ac3 SOURCES/python-ldap-3.3.1.tar.gz

View File

@ -1,136 +0,0 @@
From 127a761c915e4d445f5f8a02a9a4e0b42b2bf7aa Mon Sep 17 00:00:00 2001
From: Simon Pichugin <spichugi@redhat.com>
Date: Tue, 8 Oct 2024 19:01:36 -0700
Subject: [PATCH] Disable openldap-servers tests
---
Tests/t_bind.py | 1 +
Tests/t_cext.py | 1 +
Tests/t_edit.py | 1 +
Tests/t_ldap_options.py | 1 +
Tests/t_ldap_sasl.py | 1 +
Tests/t_ldap_schema_subentry.py | 1 +
Tests/t_ldap_syncrepl.py | 2 ++
Tests/t_ldapobject.py | 1 +
Tests/t_slapdobject.py | 1 +
9 files changed, 10 insertions(+)
diff --git a/Tests/t_bind.py b/Tests/t_bind.py
index ba90c4c..653b871 100644
--- a/Tests/t_bind.py
+++ b/Tests/t_bind.py
@@ -9,6 +9,7 @@ from ldap.ldapobject import LDAPObject
from slapdtest import SlapdTestCase
+@unittest.skip("openldap-server package is absent")
class TestBinds(SlapdTestCase):
unicode_val = "abc\U0001f498def"
unicode_val_bytes = unicode_val.encode('utf-8')
diff --git a/Tests/t_cext.py b/Tests/t_cext.py
index 33fbf29..8035354 100644
--- a/Tests/t_cext.py
+++ b/Tests/t_cext.py
@@ -17,6 +17,7 @@ import _ldap
from slapdtest import SlapdTestCase, requires_tls, requires_init_fd
+@unittest.skip("openldap-server package is absent")
class TestLdapCExtension(SlapdTestCase):
"""
These tests apply only to the _ldap module and therefore bypass the
diff --git a/Tests/t_edit.py b/Tests/t_edit.py
index 5d8b3f0..757de9d 100644
--- a/Tests/t_edit.py
+++ b/Tests/t_edit.py
@@ -9,6 +9,7 @@ from ldap.ldapobject import LDAPObject
from slapdtest import SlapdTestCase
+@unittest.skip("openldap-server package is absent")
class EditionTests(SlapdTestCase):
@classmethod
diff --git a/Tests/t_ldap_options.py b/Tests/t_ldap_options.py
index e9bef59..2fea7a3 100644
--- a/Tests/t_ldap_options.py
+++ b/Tests/t_ldap_options.py
@@ -135,6 +135,7 @@ class TestGlobalOptions(BaseTestOptions, unittest.TestCase):
return ldap.set_option(option, value)
+@unittest.skip("openldap-server package is absent")
class TestLDAPObjectOptions(BaseTestOptions, SlapdTestCase):
"""Test setting/getting connection-specific options
"""
diff --git a/Tests/t_ldap_sasl.py b/Tests/t_ldap_sasl.py
index 40ab27e..ef6aec0 100644
--- a/Tests/t_ldap_sasl.py
+++ b/Tests/t_ldap_sasl.py
@@ -37,6 +37,7 @@ cn: {certuser}
"""
+@unittest.skip("openldap-server package is absent")
@requires_sasl()
class TestSasl(SlapdTestCase):
ldap_object_class = SimpleLDAPObject
diff --git a/Tests/t_ldap_schema_subentry.py b/Tests/t_ldap_schema_subentry.py
index 60a584d..691fc5b 100644
--- a/Tests/t_ldap_schema_subentry.py
+++ b/Tests/t_ldap_schema_subentry.py
@@ -236,6 +236,7 @@ class TestAttributes(unittest.TestCase):
self.assertEqual(cls.x_origin, ('RFC 4519',))
+@unittest.skip("openldap-server package is absent")
class TestSubschemaUrlfetchSlapd(SlapdTestCase):
ldap_object_class = SimpleLDAPObject
diff --git a/Tests/t_ldap_syncrepl.py b/Tests/t_ldap_syncrepl.py
index 6acc82c..7e54830 100644
--- a/Tests/t_ldap_syncrepl.py
+++ b/Tests/t_ldap_syncrepl.py
@@ -265,6 +265,7 @@ class SyncreplClient(SimpleLDAPObject, SyncreplConsumer):
pass
+@unittest.skip("openldap-server package is absent")
class BaseSyncreplTests:
"""
This is a test of all the basic Syncrepl operations. It covers starting a
@@ -430,6 +431,7 @@ class BaseSyncreplTests:
# should pick it up during the persist phase.
+@unittest.skip("openldap-server package is absent")
class TestSyncrepl(BaseSyncreplTests, SlapdTestCase):
def setUp(self):
super().setUp()
diff --git a/Tests/t_ldapobject.py b/Tests/t_ldapobject.py
index ada5f99..825c2f5 100644
--- a/Tests/t_ldapobject.py
+++ b/Tests/t_ldapobject.py
@@ -88,6 +88,7 @@ olcObjectClasses: ( 1.3.6.1.4.1.56207.1.2.2 NAME 'myClass'
X-ORIGIN 'foobar' )"""
+@unittest.skip("openldap-server package is absent")
class Test00_SimpleLDAPObject(SlapdTestCase):
"""
test LDAP search operations
diff --git a/Tests/t_slapdobject.py b/Tests/t_slapdobject.py
index e1cc971..c9b693d 100644
--- a/Tests/t_slapdobject.py
+++ b/Tests/t_slapdobject.py
@@ -3,6 +3,7 @@ import unittest
import slapdtest
+@unittest.skip("openldap-server package is absent")
class TestSlapdObject(unittest.TestCase):
def test_context_manager(self):
with slapdtest.SlapdObject() as server:
--
2.46.0

View File

@ -0,0 +1,169 @@
From 30fb0a8bda8fbedc22de87b21b8b1b64de310a6b Mon Sep 17 00:00:00 2001
From: Christian Heimes <cheimes@redhat.com>
Date: Mon, 28 Jun 2021 11:03:02 +0200
Subject: [PATCH] Fix SASL get/set options on big endian platforms
The options OPT_X_SASL_SSF_MIN, OPT_X_SASL_SSF_MAX, and OPT_X_SASL_SSF
take *ber_len_t as input and output arguments. ber_len_t is defined as
unsigned long:
```
/* LBER lengths (32 bits or larger) */
#define LBER_LEN_T long
typedef unsigned LBER_LEN_T ber_len_t;
```
Wrong type handling is causing issues on big endian platforms.
Signed-off-by: Christian Heimes <cheimes@redhat.com>
---
Modules/options.c | 41 ++++++++++++++++++++++++++++++-----------
Tests/t_ldapobject.py | 23 ++++++++++++++++++++++-
2 files changed, 52 insertions(+), 12 deletions(-)
diff --git a/Modules/options.c b/Modules/options.c
index 549a672..67511e8 100644
--- a/Modules/options.c
+++ b/Modules/options.c
@@ -43,6 +43,10 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value)
double doubleval;
char *strval;
struct timeval tv;
+#if HAVE_SASL
+ /* unsigned long */
+ ber_len_t blen;
+#endif
void *ptr;
LDAP *ld;
LDAPControl **controls = NULL;
@@ -89,10 +93,6 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value)
case LDAP_OPT_X_TLS_PROTOCOL_MIN:
#endif
#endif
-#ifdef HAVE_SASL
- case LDAP_OPT_X_SASL_SSF_MIN:
- case LDAP_OPT_X_SASL_SSF_MAX:
-#endif
#ifdef LDAP_OPT_X_KEEPALIVE_IDLE
case LDAP_OPT_X_KEEPALIVE_IDLE:
#endif
@@ -108,6 +108,16 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value)
return 0;
ptr = &intval;
break;
+
+#ifdef HAVE_SASL
+ case LDAP_OPT_X_SASL_SSF_MIN:
+ case LDAP_OPT_X_SASL_SSF_MAX:
+ if (!PyArg_Parse(value, "k:set_option", &blen))
+ return 0;
+ ptr = &blen;
+ break;
+#endif
+
case LDAP_OPT_HOST_NAME:
case LDAP_OPT_URI:
#ifdef LDAP_OPT_DEFBASE
@@ -135,6 +145,7 @@ LDAP_set_option(LDAPObject *self, int option, PyObject *value)
return 0;
ptr = strval;
break;
+
case LDAP_OPT_TIMEOUT:
case LDAP_OPT_NETWORK_TIMEOUT:
/* Float valued timeval options */
@@ -239,6 +250,10 @@ LDAP_get_option(LDAPObject *self, int option)
LDAPAPIInfo apiinfo;
LDAPControl **lcs;
char *strval;
+#if HAVE_SASL
+ /* unsigned long */
+ ber_len_t blen;
+#endif
PyObject *extensions, *v;
Py_ssize_t i, num_extensions;
@@ -277,9 +292,6 @@ LDAP_get_option(LDAPObject *self, int option)
return v;
-#ifdef HAVE_SASL
- case LDAP_OPT_X_SASL_SSF:
-#endif
case LDAP_OPT_REFERRALS:
case LDAP_OPT_RESTART:
case LDAP_OPT_DEREF:
@@ -299,10 +311,6 @@ LDAP_get_option(LDAPObject *self, int option)
case LDAP_OPT_X_TLS_PROTOCOL_MIN:
#endif
#endif
-#ifdef HAVE_SASL
- case LDAP_OPT_X_SASL_SSF_MIN:
- case LDAP_OPT_X_SASL_SSF_MAX:
-#endif
#ifdef LDAP_OPT_X_SASL_NOCANON
case LDAP_OPT_X_SASL_NOCANON:
#endif
@@ -324,6 +332,17 @@ LDAP_get_option(LDAPObject *self, int option)
return option_error(res, "ldap_get_option");
return PyInt_FromLong(intval);
+#ifdef HAVE_SASL
+ case LDAP_OPT_X_SASL_SSF:
+ case LDAP_OPT_X_SASL_SSF_MIN:
+ case LDAP_OPT_X_SASL_SSF_MAX:
+#endif
+ /* ber_len_t options (unsigned long)*/
+ res = LDAP_int_get_option(self, option, &blen);
+ if (res != LDAP_OPT_SUCCESS)
+ return option_error(res, "ldap_get_option");
+ return PyLong_FromUnsignedLong(blen);
+
case LDAP_OPT_HOST_NAME:
case LDAP_OPT_URI:
#ifdef LDAP_OPT_DEFBASE
diff --git a/Tests/t_ldapobject.py b/Tests/t_ldapobject.py
index e54bbfd..0a089c9 100644
--- a/Tests/t_ldapobject.py
+++ b/Tests/t_ldapobject.py
@@ -334,7 +334,7 @@ class Test00_SimpleLDAPObject(SlapdTestCase):
@requires_sasl()
@requires_ldapi()
- def test006_sasl_extenal_bind_s(self):
+ def test006_sasl_external_bind_s(self):
l = self.ldap_object_class(self.server.ldapi_uri)
l.sasl_external_bind_s()
self.assertEqual(l.whoami_s(), 'dn:'+self.server.root_dn.lower())
@@ -343,6 +343,27 @@ class Test00_SimpleLDAPObject(SlapdTestCase):
l.sasl_external_bind_s(authz_id=authz_id)
self.assertEqual(l.whoami_s(), authz_id.lower())
+ @requires_sasl()
+ @requires_ldapi()
+ def test006_sasl_options(self):
+ l = self.ldap_object_class(self.server.ldapi_uri)
+
+ minssf = l.get_option(ldap.OPT_X_SASL_SSF_MIN)
+ self.assertGreaterEqual(minssf, 0)
+ self.assertLessEqual(minssf, 256)
+ maxssf = l.get_option(ldap.OPT_X_SASL_SSF_MAX)
+ self.assertGreaterEqual(maxssf, 0)
+ # libldap sets SSF_MAX to INT_MAX
+ self.assertLessEqual(maxssf, 2**31 - 1)
+
+ l.set_option(ldap.OPT_X_SASL_SSF_MIN, 56)
+ l.set_option(ldap.OPT_X_SASL_SSF_MAX, 256)
+ self.assertEqual(l.get_option(ldap.OPT_X_SASL_SSF_MIN), 56)
+ self.assertEqual(l.get_option(ldap.OPT_X_SASL_SSF_MAX), 256)
+
+ l.sasl_external_bind_s()
+ self.assertEqual(l.whoami_s(), 'dn:' + self.server.root_dn.lower())
+
def test007_timeout(self):
l = self.ldap_object_class(self.server.ldap_uri)
m = l.search_ext(self.server.suffix, ldap.SCOPE_SUBTREE, '(objectClass=*)')
--
2.31.1

View File

@ -1,56 +1,200 @@
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.1-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
### Abstract ###
# global prerelease b4
* Mon Jun 28 2021 Christian Heimes <cheimes@redhat.com> - 3.3.1-6
# Fix for https://bugzilla.redhat.com/show_bug.cgi?id=1520990
# openldap does not re-register nss shutdown callbacks after nss_Shutdown is
# called.
%if 0%{?fedora} <= 26
%global openldap_version 2.4.45-2
%else # F27+
%global openldap_version 2.4.45-4
%endif
%bcond_with python2
Name: python-ldap
Version: 3.3.1
Release: 2%{?dist}
License: Python
Group: System Environment/Libraries
Summary: An object-oriented API to access LDAP directory servers
URL: http://python-ldap.org/
Source0: https://files.pythonhosted.org/packages/source/p/%{name}/%{name}-%{version}%{?prerelease}.tar.gz
Patch0001: 0001-Fix-SASL-get-set-options-on-big-endian-platforms.patch
### Build Dependencies ###
BuildRequires: openldap-devel >= %{openldap_version}
BuildRequires: openssl-devel
BuildRequires: cyrus-sasl-devel
%if %{with python2}
BuildRequires: python2-devel
BuildRequires: python2-setuptools
%endif #{with python2}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# Test dependencies
%if %{with python2}
BuildRequires: python2-pytest
BuildRequires: python2-coverage
BuildRequires: python2-pyasn1 >= 0.3.7
BuildRequires: python2-pyasn1-modules >= 0.1.5
%endif #{with python2}
BuildRequires: python3-pytest
BuildRequires: openldap-servers >= %{openldap_version}
BuildRequires: openldap-clients >= %{openldap_version}
BuildRequires: python3-coverage
BuildRequires: python3-pyasn1 >= 0.3.7
BuildRequires: python3-pyasn1-modules >= 0.1.5
%global _description\
python-ldap provides an object-oriented API for working with LDAP within\
Python programs. It allows access to LDAP directory servers by wrapping the\
OpenLDAP 2.x libraries, and contains modules for other LDAP-related tasks\
(including processing LDIF, LDAPURLs, LDAPv3 schema, etc.).
%description %_description
%if %{with python2}
%package -n python2-ldap
Summary: %summary
Requires: openldap >= %{openldap_version}
Requires: python2-pyasn1 >= 0.3.7
Requires: python2-pyasn1-modules >= 0.1.5
Requires: python2-setuptools
Provides: python2-ldap%{?_isa} = %{version}-%{release}
%{?python_provide:%python_provide python2-ldap}
%description -n python2-ldap %_description
%endif #{with python2}
%package -n python3-ldap
Summary: %{summary}
Requires: openldap >= %{openldap_version}
Requires: python3-pyasn1 >= 0.3.7
Requires: python3-pyasn1-modules >= 0.1.5
%if 0%{?rhel} && 0%{?rhel} >= 8
Requires: platform-python-setuptools
%else
Requires: python3-setuptools
%endif
%{?python_provide:%python_provide python3-ldap}
Obsoletes: python3-pyldap < 3
Provides: python3-pyldap = %{version}-%{release}
Provides: python3-pyldap%{?_isa} = %{version}-%{release}
%description -n python3-ldap %_description
%prep
%setup -qc
pushd %{name}-%{version}%{?prerelease}
%patch1 -p1
popd
mv %{name}-%{version}%{?prerelease} python3
cp -a python{3,2}
# Fix interpreter
%if %{with python2}
find python2 -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python2}|'
%endif #{with python2}
find python3 -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python3}|'
# Disable warnings in test to work around "'U' mode is deprecated"
# https://github.com/python-ldap/python-ldap/issues/96
sed -i 's,-Werror,-Wignore,g' python3/tox.ini
%build
%if %{with python2}
pushd python2
%py2_build
popd
%endif #%{with python2}
pushd python3
%py3_build
popd
%check
%if %{with python2}
pushd python2
LANG=C.UTF-8 LOGLEVEL=10 \
PYTHONPATH=%{buildroot}%{python2_sitearch} %{__python2} -m pytest
popd
%endif #{with python2}
pushd python3
LANG=C.UTF-8 LOGLEVEL=10 \
PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m pytest
popd
%install
%if %{with python2}
pushd python2
%py2_install
popd
%endif #{with python2}
pushd python3
%py3_install
popd
%if %{with python2}
%files -n python2-ldap
%defattr(-,root,root,-)
%license python2/LICENCE
%doc python2/CHANGES python2/README python2/TODO python2/Demo
%{python_sitearch}/_ldap.so
%{python_sitearch}/ldapurl.py*
%{python_sitearch}/ldif.py*
%{python_sitearch}/slapdtest/
%{python_sitearch}/ldap/
%{python_sitearch}/python_ldap-%{version}%{?prerelease}-py2.7.egg-info
%endif %#with python2}
%files -n python3-ldap
%defattr(-,root,root,-)
%license python3/LICENCE
%doc python3/CHANGES python3/README python3/TODO python3/Demo
%{python3_sitearch}/_ldap.cpython-*.so
%{python3_sitearch}/ldapurl.py*
%{python3_sitearch}/ldif.py*
%{python3_sitearch}/__pycache__/*
%{python3_sitearch}/slapdtest/
%{python3_sitearch}/ldap/
%{python3_sitearch}/python_ldap-%{version}%{?prerelease}-py%{python3_version}.egg-info
%changelog
* Mon Jun 28 2021 Christian Heimes <cheimes@redhat.com> - 3.3.1-2
- Fix SASL get/set options on big endian platforms
- Resolves: rhbz#1976824
- Resolves: #1931865
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 3.3.1-5
- Rebuilt for Python 3.10
* Wed Oct 21 2020 Christian Heimes <cheimes@redhat.com> - 3.3.1-1
- New upstream release 3.1.0
- Resolves: rhbz#1889615
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Nov 16 2018 Lumír Balhar <lbalhar@redhat.com> - 3.1.0-5
- Require platform-python-setuptools instead of python3-setuptools
- Resolves: rhbz#1650537
* Thu Jan 21 17:53:26 CET 2021 Christian Heimes <cheimes@redhat.com> - 3.3.1-3
- Run test suite without tox (#1918913)
* Mon Jul 09 2018 Petr Viktorin <pviktori@redhat.com> - 3.1.0-4
- Don't build the python2 subpackage
(fix for the previous commit)
* Fri Nov 13 2020 Miro Hrončok <mhroncok@redhat.com> - 3.3.1-2
- Use https in URL
- Drop build dependency on python3-coverage
* Wed Jun 27 2018 Petr Viktorin <pviktori@redhat.com> - 3.1.0-3
- Conditionalize, and don't build, the python2 subpackage
* Thu Oct 22 2020 Christian Heimes <cheimes@redhat.com> - 3.3.1-1
- New upstream release 3.3.1
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sun May 24 2020 Miro Hrončok <mhroncok@redhat.com> - 3.1.0-10
- Rebuilt for Python 3.9
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Oct 23 2019 Miro Hrončok <mhroncok@redhat.com> - 3.1.0-8
- Subpackage python2-ldap has been removed
See https://fedoraproject.org/wiki/Changes/Mass_Python_2_Package_Removal
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 3.1.0-7
- Rebuilt for Python 3.8.0rc1 (#1748018)
* Fri Aug 16 2019 Miro Hrončok <mhroncok@redhat.com> - 3.1.0-6
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Jun 18 2018 Miro Hrončok <mhroncok@redhat.com> - 3.1.0-2
- Rebuilt for Python 3.7
* Wed Jun 20 2018 Petr Viktorin <pviktori@redhat.com> - 3.1.0-2
- In %%check, use pytest directly rather than tox
* Fri May 25 2018 Christian Heimes <cheimes@redhat.com> - 3.1.0-1
- New upstream release 3.1.0

View File

@ -1,7 +0,0 @@
--- !Policy
product_versions:
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

View File

@ -1,21 +0,0 @@
summary: Regression test plan for python-ldap
discover:
- name: Internal python-ldap gating tests
how: fmf
url: https://pkgs.devel.redhat.com/git/tests/python-ldap
ref: master
filter: 'tag: Tier1'
prepare:
- name: Enable beaker-tasks
how: shell
script:
- dnf config-manager --enable beaker-tasks
execute:
how: tmt
adjust:
enabled: false
when: distro == centos-stream or distro == fedora

View File

@ -1,93 +0,0 @@
### Abstract ###
%bcond servers %{undefined rhel}
# global prerelease b4
%global openldap_version 2.4.45-4
%global pypi_name python-ldap
Name: python-ldap
Version: 3.4.4
Release: %autorelease
License: python-ldap
Summary: An object-oriented API to access LDAP directory servers
URL: https://python-ldap.org/
Source0: %{pypi_source}
# Conditionally applied paches, numbereed > 100
Patch101: 0101-Disable-openldap-servers-tests.patch
### Build Dependencies ###
BuildRequires: gcc
BuildRequires: openldap-devel >= %{openldap_version}
BuildRequires: openssl-devel
BuildRequires: cyrus-sasl-devel
BuildRequires: python3-devel
BuildRequires: python3-setuptools
# Test dependencies
%if %{with servers}
BuildRequires: openldap-servers >= %{openldap_version}
%endif
BuildRequires: openldap-clients >= %{openldap_version}
BuildRequires: python3-pyasn1 >= 0.3.7
BuildRequires: python3-pyasn1-modules >= 0.1.5
%global _description\
python-ldap provides an object-oriented API for working with LDAP within\
Python programs. It allows access to LDAP directory servers by wrapping the\
OpenLDAP 2.x libraries, and contains modules for other LDAP-related tasks\
(including processing LDIF, LDAPURLs, LDAPv3 schema, etc.).
%description %_description
%package -n python3-ldap
Summary: %{summary}
Requires: openldap >= %{openldap_version}
Requires: python3-pyasn1 >= 0.3.7
Requires: python3-pyasn1-modules >= 0.1.5
Requires: python3-setuptools
%{?python_provide:%python_provide python3-ldap}
Obsoletes: python3-pyldap < 3
Provides: python3-pyldap = %{version}-%{release}
Provides: python3-pyldap%{?_isa} = %{version}-%{release}
%description -n python3-ldap %_description
%prep
%autosetup -p1 -n %{name}-%{version}%{?prerelease} -N
%autopatch -p1 -M100
%if %{without servers}
%autopatch -p1 101
%endif
# Fix interpreter
find . -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python3}|'
%build
%py3_build
%check
PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m unittest discover -v -s Tests -p 't_*'
%install
%py3_install
%files -n python3-ldap
%license LICENCE
%doc CHANGES README TODO Demo
%{python3_sitearch}/_ldap.cpython-*.so
%{python3_sitearch}/ldapurl.py*
%{python3_sitearch}/ldif.py*
%{python3_sitearch}/__pycache__/*
%{python3_sitearch}/slapdtest/
%{python3_sitearch}/ldap/
%{python3_sitearch}/python_ldap-%{version}%{?prerelease}-py%{python3_version}.egg-info/
%changelog
%autochangelog

View File

@ -1 +0,0 @@
SHA512 (python-ldap-3.4.4.tar.gz) = f0e7c5af4399ebb7331e6b41008b4dd54193fc47d6c48d53a0c155bc6cf9735b45128ae06442abe59ffbaf2282ea1a804484923e886f8b457c57cc727210bdfc