diff --git a/.gitignore b/.gitignore index 7c4046c..264eecb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +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.3.tar.gz +/python_ldap-*.tar.gz diff --git a/0001-Revert-Package-python-ldap-with-pyproject.toml-589.patch b/0001-Revert-Package-python-ldap-with-pyproject.toml-589.patch new file mode 100644 index 0000000..f54c6e7 --- /dev/null +++ b/0001-Revert-Package-python-ldap-with-pyproject.toml-589.patch @@ -0,0 +1,424 @@ +From 79604d5b0af4f1b8c9ca252fc875b9714e9b8f6c Mon Sep 17 00:00:00 2001 +From: Simon Pichugin +Date: Wed, 22 Apr 2026 21:50:52 -0700 +Subject: [PATCH] Revert "Package python-ldap with pyproject.toml (#589)" + +This reverts commit f49bb2dd2234f25404ad1679786de007444ce219. +--- + .coveragerc | 27 +++++++++ + .gitignore | 2 + + Doc/installing.rst | 30 +++------- + Doc/spelling_wordlist.txt | 4 -- + INSTALL | 3 +- + MANIFEST.in | 2 +- + Makefile | 1 + + pyproject.toml | 112 ++------------------------------------ + setup.py | 77 ++++++++++++++++++++++++-- + tox.ini | 1 - + 10 files changed, 120 insertions(+), 139 deletions(-) + create mode 100644 .coveragerc + +diff --git a/.coveragerc b/.coveragerc +new file mode 100644 +index 0000000..738d86f +--- /dev/null ++++ b/.coveragerc +@@ -0,0 +1,27 @@ ++[run] ++branch = True ++source = ++ ldap ++ ldif ++ ldapurl ++ slapdtest ++ ++[paths] ++source = ++ Lib/ ++ .tox/*/lib/python*/site-packages/ ++ ++[report] ++ignore_errors = False ++precision = 1 ++exclude_lines = ++ pragma: no cover ++ raise NotImplementedError ++ if 0: ++ if __name__ == .__main__.: ++ if PY2 ++ if not PY2 ++ ++[html] ++directory = build/htmlcov ++title = python-ldap coverage report +diff --git a/.gitignore b/.gitignore +index 75a1353..bab2187 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -3,6 +3,8 @@ + *.pyc + __pycache__/ + .tox ++.coverage* ++!.coveragerc + /.cache + /.pytest_cache + +diff --git a/Doc/installing.rst b/Doc/installing.rst +index 1c7ec8c..03e7a29 100644 +--- a/Doc/installing.rst ++++ b/Doc/installing.rst +@@ -76,23 +76,12 @@ The CVS repository of FreeBSD contains the package + macOS + ----- + +-You can install directly with pip. First install Xcode command line tools:: ++You can install directly with pip:: + + $ xcode-select --install +- +-Then install python-ldap:: +- +- $ pip install python-ldap +- +-For custom installations, you may need to set environment variables:: +- +- $ export CPPFLAGS="-I$(xcrun --show-sdk-path)/usr/include/sasl" +- $ pip install python-ldap +- +-If using Homebrew:: +- +- $ brew install openldap +- $ pip install python-ldap ++ $ pip install python-ldap \ ++ --global-option=build_ext \ ++ --global-option="-I$(xcrun --show-sdk-path)/usr/include/sasl" + + + .. _install-source: +@@ -101,14 +90,11 @@ Installing from Source + ====================== + + +-python-ldap is built and installed using modern Python packaging standards +-with pyproject.toml configuration. From a source repository:: +- +- $ pip install . +- +-For development installation with editable mode:: ++python-ldap is built and installed using the Python setuptools. ++From a source repository:: + +- $ pip install -e . ++ $ python -m pip install setuptools ++ $ python setup.py install + + If you have more than one Python interpreter installed locally, you should + use the same one you plan to use python-ldap with. +diff --git a/Doc/spelling_wordlist.txt b/Doc/spelling_wordlist.txt +index 42a8540..8cdd9f1 100644 +--- a/Doc/spelling_wordlist.txt ++++ b/Doc/spelling_wordlist.txt +@@ -60,7 +60,6 @@ func + Gohlke + GPG + Heimdal +-Homebrew + hostport + hrefTarget + hrefText +@@ -108,7 +107,6 @@ previousDN + processResultsCount + Proxied + py +-pyproject + pytest + rdn + readthedocs +@@ -149,7 +147,6 @@ syncrepl + syntaxes + timelimit + TLS +-toml + tracebacks + tuple + tuples +@@ -166,6 +163,5 @@ userPassword + usr + uuids + Valgrind +-Xcode + whitespace + workflow +diff --git a/INSTALL b/INSTALL +index 224df4a..b9b13d2 100644 +--- a/INSTALL ++++ b/INSTALL +@@ -1,7 +1,8 @@ + Quick build instructions: + + edit setup.cfg (see Build/ for platform-specific examples) +- pip install . ++ python setup.py build ++ python setup.py install + + Detailed instructions are in Doc/installing.rst, or online at: + +diff --git a/MANIFEST.in b/MANIFEST.in +index bedea8d..687d2b0 100644 +--- a/MANIFEST.in ++++ b/MANIFEST.in +@@ -1,5 +1,5 @@ + include MANIFEST.in Makefile CHANGES INSTALL LICENCE README TODO +-include tox.ini ++include tox.ini .coveragerc + include Modules/*.c Modules/*.h + recursive-include Build *.cfg* + recursive-include Lib *.py +diff --git a/Makefile b/Makefile +index 2c8efdb..577ba88 100644 +--- a/Makefile ++++ b/Makefile +@@ -20,6 +20,7 @@ Modules/constants_generated.h: Lib/ldap/constants.py + .PHONY: clean + clean: + rm -rf build dist *.egg-info .tox MANIFEST ++ rm -f .coverage .coverage.* + find . \( -name '*.py[co]' -or -name '*.so*' -or -name '*.dylib' \) \ + -delete + find . -depth -name __pycache__ -exec rm -rf {} \; +diff --git a/pyproject.toml b/pyproject.toml +index 8781155..dda8dbc 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,108 +1,8 @@ +-[build-system] +-requires = [ +- "setuptools", +- "setuptools-scm", +-] +-build-backend = "setuptools.build_meta" +- +-[project] +-name = "python-ldap" +-license.text = "python-ldap" # Replace with 'license' once Python 3.8 is dropped +-dynamic = ["version"] +-description = "Python modules for implementing LDAP clients" +-authors = [ +- {name = "python-ldap project", email = "python-ldap@python.org"}, +-] +-readme = "README" +-requires-python = ">=3.6" +-keywords = ["ldap", "directory", "authentication"] +-classifiers = [ +- "Development Status :: 5 - Production/Stable", +- "Intended Audience :: Developers", +- "Intended Audience :: System Administrators", +- "Operating System :: OS Independent", +- "Operating System :: MacOS :: MacOS X", +- "Operating System :: Microsoft :: Windows", +- "Operating System :: POSIX", +- "Programming Language :: C", +- "Programming Language :: Python", +- "Programming Language :: Python :: 3", +- "Programming Language :: Python :: 3.6", +- "Programming Language :: Python :: 3.7", +- "Programming Language :: Python :: 3.8", +- "Programming Language :: Python :: 3.9", +- "Programming Language :: Python :: 3.10", +- "Programming Language :: Python :: 3.11", +- "Programming Language :: Python :: 3.12", +- "Programming Language :: Python :: 3.13", +- "Topic :: Database", +- "Topic :: Internet", +- "Topic :: Software Development :: Libraries :: Python Modules", +- "Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP", +- "License :: OSI Approved :: Python Software Foundation License", +-] +-dependencies = [ +- "pyasn1 >= 0.3.7", +- "pyasn1_modules >= 0.1.5", +-] +- +-[project.urls] +-Homepage = "https://www.python-ldap.org/" +-Documentation = "https://python-ldap.readthedocs.io/" +-Repository = "https://github.com/python-ldap/python-ldap" +-Download = "https://pypi.org/project/python-ldap/" +-Changelog = "https://github.com/python-ldap/python-ldap/blob/main/CHANGES" +- +- +- +-[tool.setuptools] +-zip-safe = false +-include-package-data = true +-license-files = ["LICENCE", "LICENCE.MIT"] +-# Explicitly list all Python modules +-py-modules = ["ldapurl", "ldif"] +- +-[tool.setuptools.dynamic] +-version = {attr = "ldap.pkginfo.__version__"} +- +-[tool.setuptools.packages.find] +-where = ["Lib"] +- +-[tool.setuptools.package-dir] +-"" = "Lib" ++[tool.black] ++line-length = 88 ++target-version = ['py36', 'py37', 'py38'] + + [tool.isort] +-line_length = 88 +-known_first_party = ["ldap", "_ldap", "ldapurl", "ldif", "slapdtest"] +-sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"] +- +-[tool.coverage.run] +-branch = true +-source = [ +- "ldap", +- "ldif", +- "ldapurl", +- "slapdtest", +-] +- +-[tool.coverage.paths] +-source = [ +- "Lib/", +- ".tox/*/lib/python*/site-packages/", +-] +- +-[tool.coverage.report] +-ignore_errors = false +-precision = 1 +-exclude_lines = [ +- "pragma: no cover", +- "raise NotImplementedError", +- "if 0:", +- "if __name__ == .__main__.:", +- "if PY2", +- "if not PY2", +-] +- +-[tool.coverage.html] +-directory = "build/htmlcov" +-title = "python-ldap coverage report" ++line_length=88 ++known_first_party=['ldap', '_ldap', 'ldapurl', 'ldif', 'slapdtest'] ++sections=['FUTURE', 'STDLIB', 'THIRDPARTY', 'FIRSTPARTY', 'LOCALFOLDER'] +diff --git a/setup.py b/setup.py +index 9ad6996..ad9d93b 100644 +--- a/setup.py ++++ b/setup.py +@@ -1,9 +1,7 @@ + """ +-setup.py - C extension module configuration for python-ldap ++setup.py - Setup package with the help Python's DistUtils + + See https://www.python-ldap.org/ for details. +-This file handles only the C extension modules (_ldap) configuration, +-while pyproject.toml handles all project metadata, dependencies, and other settings. + """ + + import sys,os +@@ -56,8 +54,55 @@ if os.environ.get('WITH_GCOV'): + LDAP_CLASS.extra_link_args.append('-pg') + LDAP_CLASS.libs.append('gcov') + +-#-- C extension modules configuration only ++#-- Let distutils/setuptools do the rest ++name = 'python-ldap' ++ + setup( ++ #-- Package description ++ name = name, ++ license=pkginfo.__license__, ++ version=pkginfo.__version__, ++ description = 'Python modules for implementing LDAP clients', ++ long_description = """python-ldap: ++ python-ldap provides an object-oriented API to access LDAP directory servers ++ from Python programs. Mainly it wraps the OpenLDAP 2.x libs for that purpose. ++ Additionally the package contains modules for other LDAP-related stuff ++ (e.g. processing LDIF, LDAPURLs, LDAPv3 schema, LDAPv3 extended operations ++ and controls, etc.). ++ """, ++ author = 'python-ldap project', ++ author_email = 'python-ldap@python.org', ++ url = 'https://www.python-ldap.org/', ++ download_url = 'https://pypi.org/project/python-ldap/', ++ classifiers = [ ++ 'Development Status :: 5 - Production/Stable', ++ 'Intended Audience :: Developers', ++ 'Intended Audience :: System Administrators', ++ 'Operating System :: OS Independent', ++ 'Operating System :: MacOS :: MacOS X', ++ 'Operating System :: Microsoft :: Windows', ++ 'Operating System :: POSIX', ++ 'Programming Language :: C', ++ ++ 'Programming Language :: Python', ++ 'Programming Language :: Python :: 3', ++ 'Programming Language :: Python :: 3.6', ++ 'Programming Language :: Python :: 3.7', ++ 'Programming Language :: Python :: 3.8', ++ 'Programming Language :: Python :: 3.9', ++ 'Programming Language :: Python :: 3.10', ++ 'Programming Language :: Python :: 3.11', ++ 'Programming Language :: Python :: 3.12', ++ 'Programming Language :: Python :: 3.13', ++ # Note: when updating Python versions, also change tox.ini and .github/workflows/* ++ ++ 'Topic :: Database', ++ 'Topic :: Internet', ++ 'Topic :: Software Development :: Libraries :: Python Modules', ++ 'Topic :: System :: Systems Administration :: Authentication/Directory :: LDAP', ++ 'License :: OSI Approved :: Python Software Foundation License', ++ ], ++ #-- C extension modules + ext_modules = [ + Extension( + '_ldap', +@@ -100,4 +145,28 @@ setup( + ] + ), + ], ++ #-- Python "stand alone" modules ++ py_modules = [ ++ 'ldapurl', ++ 'ldif', ++ ++ ], ++ packages = [ ++ 'ldap', ++ 'ldap.controls', ++ 'ldap.extop', ++ 'ldap.schema', ++ 'slapdtest', ++ 'slapdtest.certs', ++ ], ++ package_dir = {'': 'Lib',}, ++ data_files = LDAP_CLASS.extra_files, ++ include_package_data=True, ++ install_requires=[ ++ 'pyasn1 >= 0.3.7', ++ 'pyasn1_modules >= 0.1.5', ++ ], ++ zip_safe=False, ++ python_requires='>=3.6', ++ test_suite = 'Tests', + ) +diff --git a/tox.ini b/tox.ini +index d0cc0ad..d442cd2 100644 +--- a/tox.ini ++++ b/tox.ini +@@ -34,7 +34,6 @@ commands = {envpython} -bb -Werror \ + setenv = + CFLAGS=-Wno-int-in-bool-context -Werror -std=c99 + +- + [testenv:py3-nosasltls] + basepython = python3 + # don't install, install dependencies manually +-- +2.52.0 + diff --git a/python-ldap.spec b/python-ldap.spec index 456f8a5..b8dfaa1 100644 --- a/python-ldap.spec +++ b/python-ldap.spec @@ -4,14 +4,15 @@ %global openldap_version 2.4.45-4 Name: python-ldap -Version: 3.4.3 -Release: 2%{?dist} +Version: 3.4.5 +Release: 1%{?dist} License: Python Summary: An object-oriented API to access LDAP directory servers URL: https://python-ldap.org/ -Source0: https://files.pythonhosted.org/packages/source/p/%{name}/%{name}-%{version}%{?prerelease}.tar.gz +Source0: %{pypi_source python_ldap} Patch0001: 0001-Disable-openldap-servers-tests.patch +Patch0002: 0001-Revert-Package-python-ldap-with-pyproject.toml-589.patch ### Build Dependencies ### BuildRequires: gcc @@ -50,7 +51,7 @@ Provides: python3-pyldap%{?_isa} = %{version}-%{release} %prep -%autosetup -p1 -n %{name}-%{version}%{?prerelease} +%autosetup -p1 -n python_ldap-%{version}%{?prerelease} # Fix interpreter find . -name '*.py' | xargs sed -i '1s|^#!/usr/bin/env python|#!%{__python3}|' @@ -78,6 +79,10 @@ PYTHONPATH=%{buildroot}%{python3_sitearch} %{__python3} -m unittest discover -v %{python3_sitearch}/python_ldap-%{version}%{?prerelease}-py%{python3_version}.egg-info/ %changelog +* Fri Apr 24 2026 Simon Pichugin - 3.4.5-1 +- New upstream release 3.4.5 +- Resolves: RHEL-155663 + * Thu Jan 12 2023 Simon Pichugin - 3.4.3-2 - Fix changelog date typo Related: rhbz#2158289 diff --git a/sources b/sources index 24413c3..67032cf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (python-ldap-3.4.3.tar.gz) = af12ab49c7ad3c0c009509b12eea3d6a43c24ae146ad20b1bbd86fcdb85803dcea338b047eeadd0c79cd2829c09c760951811f1cba21d04fd73d5f7475b493b2 +SHA512 (python_ldap-3.4.5.tar.gz) = c2561b6ac6deb5ec10006767310414f1754eb010633fb670c0abc4c268ef5c15a3b84b049cc38b78bb56c80853de96d21263fa596067b9abe9501e58496f5bdb