-
-
Notifications
You must be signed in to change notification settings - Fork 30.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
uuid module build fix on FreeBSD proposal #85077
Comments
Please explain which problem you are facing and how your proposal is going to fix the problem. |
This s about header picked up in a certain order. In case of FreeBSD, the uui_create case is taken which comes from the <uuid.h> but ... <uuid/uuid.h> is detected too. |
FreeBSD base provides uuid.h (uuid(3)) but uuid libraries/headers can be provided by e2fsprogs-libuuid (for example) in another location, for example /usr/local/ Pythons build system doesn't provide sufficient granularity to pass include/library locations for *specific* components of the build in every circumstance. The following is a bug related to Python 3.7+ and the uuid.h / linking problem: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229562 The current patch just ignores the third-party (/usr/local) version of uuid.h, allowing the build to proceed with the headers provided by base: https://bz-attachments.freebsd.org/attachment.cgi?id=200603 The proper/permanent solution might be to allow a --with-uuid=<location> style build argument This issue of conflicting / multiple library versions and include order has also come up in various forms for other third party library support in Python, such as gettext (libintl), expat, ssl, libffi, curses) See the following FreeBSD Python port block for the libintl example: https://svnweb.freebsd.org/ports/head/lang/python37/Makefile?revision=536776&view=markup#l71 |
Another example, this time for lzma: |
The problem isn't exclusive to FreeBSD. There are at least 3 problems here (see also: bpo-32627). -First is that there are 2 low-level uuid interfaces (3 if you count Windows but that is isolated and not a problem here) supposed to be declared on the headers below:
The way it currently works (I guess, 'configure' conspicuously doesn't end in '.py'), 'configure' tries to find uuid/uuid.h, if it succeeds, it Then it tries to compile with Next, The last two ignores header detection information. -The second problem is on Then 'setup.py' proceeds to ignore all that and tries to find 'uuid.h' on If it finds it, it tries to find the uuid library, and adds it to linking on success, else assumes it doesn't need to do anything else and succeeds. If it doesn't find the header (which it may not, even if 'configure' did it), it gives up on the module and warns the user in the end of -Third, Modules/_uuidmodule.c (see bpo-32627): Inspect the At least on Linux (CentOS) on a custom --prefix, with custom libuuid.so, this proccess fails on Python 3.8.3. I edited 'setup.py' to correctly find the header and the library (for my case, anyway, I have no idea on FreeBSD) and it worked. (You don't support this use case, but that's another issue, just adding more info.) OP's patch (which appears to be to check the functions only on detection of the respective modules) may work for his specific case, but I suspect that for a more stable solution we need to change _uuidmodule.c and at least one of 'configure(.ac)' and 'setup.py':
(and by 'we' I mean I'm volunteering to help, but I will need help on that). Maybe what I'm saying should be another issue entirely, though I'm adding build to components (and I think we should include 3.8 and 3.9 too). Please advise. |
Please check that this issue is still actual. There were many changes in the configure script, in particularly #29741 changed the same uuid detection code. |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: