Change the test source location to support evolving downstream testing requirements. This is needed both for downstream certification activities and changes to test development for internal infrastructure differences.
109 lines
4.0 KiB
RPMSpec
109 lines
4.0 KiB
RPMSpec
Name: python-ldap
|
|
Version: 3.3.0
|
|
Release: 0%{?dist}
|
|
License: Python
|
|
Summary: An object-oriented API to access LDAP directory servers
|
|
Source0: %{pypi_source}
|
|
|
|
# OpenLDAP 2.5+ is not yet supported by python-ldap
|
|
# https://github.com/python-ldap/python-ldap/issues/432
|
|
# Fedora has this patch to make it build, but the tests will fail anyway
|
|
Patch0: python-ldap-always-use-ldap-library.patch
|
|
|
|
BuildRequires: python3-devel
|
|
BuildRequires: pyproject-rpm-macros
|
|
|
|
BuildRequires: cyrus-sasl-devel
|
|
BuildRequires: gcc
|
|
BuildRequires: openldap-clients
|
|
BuildRequires: openldap-devel
|
|
BuildRequires: openldap-servers
|
|
BuildRequires: openssl-devel
|
|
|
|
|
|
%description
|
|
This package contains extension modules. Does not contain pyproject.toml.
|
|
Has multiple files and directories.
|
|
Building this tests:
|
|
- the proper files are installed in the proper places
|
|
- module glob in %%pyproject_save_files (some modules are included, some not)
|
|
- combined manual and generated Buildrequires
|
|
- building an extension module via %%pyproject_buildrequires -w
|
|
|
|
|
|
%package -n python3-ldap
|
|
Summary: %{summary}
|
|
|
|
%description -n python3-ldap
|
|
%{summary}
|
|
|
|
|
|
%prep
|
|
%autosetup
|
|
# Hack: We remove tests that are broken by OpenLDAP 2.5+
|
|
# Don't do this in the regular Fedora package, please
|
|
rm Tests/t_ldapobject.py Tests/t_cext.py Tests/t_edit.py Tests/t_ldap_sasl.py Tests/t_ldap_syncrepl.py Tests/t_slapdobject.py Tests/t_bind.py Tests/t_ldap_options.py Tests/t_ldap_schema_subentry.py
|
|
|
|
|
|
%generate_buildrequires
|
|
# -w is not required with this package, but we test that we can use it anyway
|
|
%pyproject_buildrequires -t -w
|
|
|
|
|
|
%build
|
|
#%%pyproject_wheel -- this is done via %%pyproject_buildrequires -w
|
|
|
|
# Internal check that we can import the built extension modules from %%{pyproject_build_lib}
|
|
%{python3} -c 'import _ldap' && exit 1 || true
|
|
PYTHONPATH=%{pyproject_build_lib} %{python3} -c 'import _ldap'
|
|
|
|
|
|
%install
|
|
%pyproject_install
|
|
# We can pass multiple globs
|
|
%pyproject_save_files -l 'ldap*' '*ldap'
|
|
|
|
|
|
%check
|
|
%tox
|
|
|
|
# Internal check if the instalation outputs expected files
|
|
test -d %{buildroot}%{python3_sitearch}/__pycache__/
|
|
test -d %{buildroot}%{python3_sitearch}/python_ldap-%{version}.dist-info/
|
|
test -d %{buildroot}%{python3_sitearch}/ldap/
|
|
test -f %{buildroot}%{python3_sitearch}/ldapurl.py
|
|
test -f %{buildroot}%{python3_sitearch}/ldif.py
|
|
test -d %{buildroot}%{python3_sitearch}/slapdtest/
|
|
test -f %{buildroot}%{python3_sitearch}/_ldap.cpython-*.so
|
|
|
|
# Internal check: Unmatched modules are not supposed to be listed in %%{pyproject_files}
|
|
# We'll list them explicitly
|
|
grep -F %{python3_sitearch}/ldif.py %{pyproject_files} && exit 1 || true
|
|
grep -F %{python3_sitearch}/__pycache__/ldif.cpython-%{python3_version_nodots}.pyc %{pyproject_files} && exit 1 || true
|
|
grep -F %{python3_sitearch}/__pycache__/ldif.cpython-%{python3_version_nodots}.opt-1.pyc %{pyproject_files} && exit 1 || true
|
|
grep -F %{python3_sitearch}/slapdtest %{pyproject_files} && exit 1 || true
|
|
|
|
# Internal check: Unmatched modules are not supposed to be listed in %%{_pyproject_modules}
|
|
grep -F slapdtest %{_pyproject_modules} && exit 1 || true
|
|
grep -F ldif %{_pyproject_modules} && exit 1 || true
|
|
# Let's check that at least one module is listed in %%{_pyproject_modules}
|
|
grep -F ldapurl %{_pyproject_modules}
|
|
|
|
# Internal check: Top level __pycache__ is never owned
|
|
grep -E '/site-packages/__pycache__$' %{pyproject_files} && exit 1 || true
|
|
grep -E '/site-packages/__pycache__/$' %{pyproject_files} && exit 1 || true
|
|
|
|
# Internal check for the value of %%{pyproject_build_lib} in an archful package
|
|
%if 0%{?rhel} == 9
|
|
test "%{pyproject_build_lib}" == "%{_builddir}/%{buildsubdir}/build/lib.%{python3_platform}-%{python3_version}"
|
|
%else
|
|
test "%{pyproject_build_lib}" == "%{_builddir}/%{buildsubdir}/build/lib.%{python3_platform}-cpython-%{python3_version_nodots}"
|
|
%endif
|
|
|
|
|
|
%files -n python3-ldap -f %{pyproject_files}
|
|
%doc CHANGES README TODO Demo
|
|
# Explicitly listed files can be combined with automation
|
|
%pycached %{python3_sitearch}/ldif.py
|
|
%{python3_sitearch}/slapdtest/
|