-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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
pip list --outdated
fails on platforms where sem_open exists but is not implemented
#9047
Comments
Hello there, thank you for reporting and suggesting the fixes. From pip's standpoint, I'm siding with
Although it's not perfect, pip already has quite many options. On the other hand, it seems that the CPython binary you're using is not properly built. IIUC, if |
Add an additional check for a special case where semlock_open seemingly exists but doesn't work (OSError is raised because function is not implemented)
Add an additional check for a special case where semlock_open seemingly exists but doesn't work (OSError is raised because function is not implemented)
I believe you are right. The package seems to be compiled with HAVE_SEM_OPEN=1 (see below), but the implementation is missing.
I believe the following might be the package that is at fault (
I'll try to file a bug report at bugs.debian.org. But I am unsure if this will amount to anything. Alas, my attempts at finding a solution on my own were not successful. As a workaround for the time being I wrote a simple patch script for local use which I will run each time when pip gets updated. |
It seems that the issue is with how their Python binaries for ARM are compiled, so I'd also suggest filing a report with Debian. Please do link to the report from here, if and when you file it. :) |
|
Closing this out as A) it's a really bug with how Python binaries for ARM are compiled, and B) |
This is not the same issue as #8161
Environment
Debian Chroot installed on a Synology DS214 NAS
Description
pip list --outdated
fails, printing a stacktrace as follows:Analysis
On this system,
multiprocessing.synchronize
appears to be available (but it is not working). The check in file_internal/utils/parallel.py
detects no problem since the statementimport multiprocessing.synchronize
does not fail. Hence multiprocessing or multithreading will be used in pip. But the necessessary functions are not implemented! Therefore an OSError is raised, as shown.Proposed solution
An additional check should detect if multiprocessing is really working. For example by creating a ProcessPool or instantiating a SemLock. Checking for import failures only is not enough. This doesn't help at all if an error is only raised when an object is instantiated.
An alternative would be adding a configuration option to disable the use of multiprocessing, even if it seems available.
The text was updated successfully, but these errors were encountered: