-
Notifications
You must be signed in to change notification settings - Fork 127
Open
Description
Issue description:
I'm not able to install the python-ldap - the wheel creation fails with an error about not finding Python.h
, on Gitlab-CI
Steps to reproduce:
I'm using Gitlab CI (with a debian 12 docker image) to test an application, using uv.
$ apt install libldap-dev
$ uv venv --seed --python 3.11 # Note I'm installing a custom interpreter, provided by uv
$ . .venv/bin/activate
$ uv pip install python-ldap
Note that uv
provides a Python.h
in its Lib
directory for the installed interpreter.
× Failed to download and build `python-ldap==3.4.4`
├─▶ Build backend failed to build wheel through `build_wheel` (exit status:
│ 1)
│ [stdout]
│ running bdist_wheel
│ running build
│ running build_py
│ creating build/lib.linux-x86_64-cpython-311
│ copying Lib/ldapurl.py -> build/lib.linux-x86_64-cpython-311
│ copying Lib/ldif.py -> build/lib.linux-x86_64-cpython-311
│ creating build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/__init__.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/ldapobject.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/compat.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/dn.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/async.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/resiter.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/filter.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/modlist.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/functions.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/asyncsearch.py ->
│ build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/pkginfo.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/syncrepl.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/sasl.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/constants.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/logger.py -> build/lib.linux-x86_64-cpython-311/ldap
│ copying Lib/ldap/cidict.py -> build/lib.linux-x86_64-cpython-311/ldap
│ creating build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/ppolicy.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/__init__.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/openldap.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/pwdpolicy.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/psearch.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/sss.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/vlv.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/simple.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/pagedresults.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/deref.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/readentry.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/libldap.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ copying Lib/ldap/controls/sessiontrack.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/controls
│ creating build/lib.linux-x86_64-cpython-311/ldap/extop
│ copying Lib/ldap/extop/__init__.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/extop
│ copying Lib/ldap/extop/passwd.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/extop
│ copying Lib/ldap/extop/dds.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/extop
│ creating build/lib.linux-x86_64-cpython-311/ldap/schema
│ copying Lib/ldap/schema/__init__.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/schema
│ copying Lib/ldap/schema/tokenizer.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/schema
│ copying Lib/ldap/schema/subentry.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/schema
│ copying Lib/ldap/schema/models.py ->
│ build/lib.linux-x86_64-cpython-311/ldap/schema
│ creating build/lib.linux-x86_64-cpython-311/slapdtest
│ copying Lib/slapdtest/__init__.py ->
│ build/lib.linux-x86_64-cpython-311/slapdtest
│ copying Lib/slapdtest/_slapdtest.py ->
│ build/lib.linux-x86_64-cpython-311/slapdtest
│ running egg_info
│ writing Lib/python_ldap.egg-info/PKG-INFO
│ writing dependency_links to Lib/python_ldap.egg-info/dependency_links.txt
│ writing requirements to Lib/python_ldap.egg-info/requires.txt
│ writing top-level names to Lib/python_ldap.egg-info/top_level.txt
│ reading manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
│ reading manifest template 'MANIFEST.in'
│ adding license file 'LICENCE'
│ writing manifest file 'Lib/python_ldap.egg-info/SOURCES.txt'
│ creating build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/README ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/ca.conf ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/ca.pem ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/client.conf ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/client.key ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/client.pem ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/gencerts.sh ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/gennssdb.sh ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/server.conf ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/server.key ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ copying Lib/slapdtest/certs/server.pem ->
│ build/lib.linux-x86_64-cpython-311/slapdtest/certs
│ running build_ext
│ building '_ldap' extension
│ creating build/temp.linux-x86_64-cpython-311/Modules
│ x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g
│ -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat
│ -Werror=format-security -g -fwrapv -O2 -fPIC -DHAVE_SASL -DHAVE_TLS
│ -DLDAPMODULE_VERSION=3.4.4 "-DLDAPMODULE_AUTHOR=python-ldap
│ project" "-DLDAPMODULE_LICENSE=Python style" -IModules
│ -I/builds/seniors/seniors/.uv_cache/builds-v0/.tmp9iF5DU/include
│ -I/usr/include/python3.11 -c Modules/LDAPObject.c -o
│ build/temp.linux-x86_64-cpython-311/Modules/LDAPObject.o
│ [stderr]
│ /builds/seniors/seniors/.uv_cache/builds-v0/.tmp9iF5DU/lib/python3.11/site-packages/setuptools/_distutils/dist.py:261:
│ UserWarning: Unknown distribution option: 'test_suite'
│ warnings.warn(msg)
│ no previously-included directories found matching 'Doc/.build'
│ In file included from Modules/LDAPObject.c:3:
│ Modules/common.h:9:10: fatal error: Python.h: No such file or directory
│ 9 | #include "Python.h"
│ | ^~~~~~~~~~
│ compilation terminated.
│ error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
╰─▶ This error likely indicates that you need to install a library that
provides "Python.h" for python-ldap@3.4.4
help: `python-ldap` was included because `django-auth-ldap==4.6.0` depends
on `python-ldap`
Operating system: Docker image: python:3.11-bookworm
Python version: 3.11
python-ldap version: 3.4.4 (latest)
dvermaas, B14CK313 and GitRon
Metadata
Metadata
Assignees
Labels
No labels