Skip to content

Build against uv #581

@frague59

Description

@frague59

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 [email protected]
  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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions