Bug report
Bug description:
When building Python on a system where:
- libuuid is installed without pkgconfig
- OSSP uuid is installed (
uuid-devel on RHEL/Rocky/Alma)
- OSSP uuid's
uuid.h is installed as /usr/include/uuid.h (the case on RHEL/Rocky/Alma)
the build fails with the following error:
./Modules/_uuidmodule.c: In function ‘py_uuid_generate_time_safe’:
./Modules/_uuidmodule.c:31:12: error: storage size of ‘uuid’ isn’t known
31 | uuid_t uuid;
| ^~~~
./Modules/_uuidmodule.c:35:11: error: implicit declaration of function ‘uuid_generate_time_safe’; did you mean ‘py_uuid_generate_time_safe’? [-Werror=implicit-function-declaration]
35 | res = uuid_generate_time_safe(uuid);
| ^~~~~~~~~~~~~~~~~~~~~~~
| py_uuid_generate_time_safe
This is because on such a system, both HAVE_UUID_H and HAVE_UUID_UUID_H become set:
$ grep 'HAVE_UUID.*_H' pyconfig.h
#define HAVE_UUID_H 1
#define HAVE_UUID_UUID_H 1
-I/usr/include/uuid does not get added to CFLAGS:
$ grep ^MODULE__UUID_CFLAGS Makefile
MODULE__UUID_CFLAGS=
and Modules/_uuidmodule.c currently checks HAVE_UUID_H before HAVE_UUID_UUID_H:
#if defined(HAVE_UUID_H)
// AIX, FreeBSD, libuuid with pkgconf
#include <uuid.h>
#elif defined(HAVE_UUID_UUID_H)
// libuuid without pkgconf
#include <uuid/uuid.h>
#endif
This causes the wrong uuid.h to be included.
The order in which HAVE_UUID_H and HAVE_UUID_UUID_H are checked was inverted in commit 8af6481, but neither the commit itself or the related issue documents why the order was changed.
Building Python on a system with the properties described in this issue did work as expected in Python 3.10 (3.11 was the first release to include the reordering mentioned above).
Reproducer
docker run --rm -it almalinux:9
dnf install -y 'dnf-command(builddep)'
dnf --enablerepo=crb builddep -y python3
dnf --enablerepo=crb install -y uuid-devel
rm -f /usr/lib64/pkgconfig/uuid.pc
curl -O https://www.python.org/ftp/python/3.14.3/Python-3.14.3.tgz
tar -xf Python-3.14.3.tgz
cd Python-3.14.3
./configure
make -j$(nproc)
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Bug report
Bug description:
When building Python on a system where:
uuid-develon RHEL/Rocky/Alma)uuid.his installed as/usr/include/uuid.h(the case on RHEL/Rocky/Alma)the build fails with the following error:
This is because on such a system, both
HAVE_UUID_HandHAVE_UUID_UUID_Hbecome set:-I/usr/include/uuiddoes not get added toCFLAGS:and
Modules/_uuidmodule.ccurrently checksHAVE_UUID_HbeforeHAVE_UUID_UUID_H:This causes the wrong
uuid.hto be included.The order in which
HAVE_UUID_HandHAVE_UUID_UUID_Hare checked was inverted in commit 8af6481, but neither the commit itself or the related issue documents why the order was changed.Building Python on a system with the properties described in this issue did work as expected in Python 3.10 (3.11 was the first release to include the reordering mentioned above).
Reproducer
CPython versions tested on:
3.14
Operating systems tested on:
Linux