Clarify implications wrt. to auditwheel and delocate bundling of extra binaries #1006
Replies: 3 comments 3 replies
-
There is a related license discussion at #809 |
Beta Was this translation helpful? Give feedback.
-
Git blame has done me in! Yes, it's true that I did. Truth be told the reason why that section is worded so vaguely is because I wouldn't feel confident giving firm guidance about how this might apply in a general way. It's going to be specific to each project - the specific dependencies, the specific way that they're used and linked into the wheel.
This is interesting, but do be aware that this is outside of the user model that we've been designing cibuildwheel for thus far. The reason that I mention this is that these questions feel very project-specific, and just because cibuildwheel is the one that you've invoked to build wheels, that doesn't mean that cibuildwheel is the tool that's pulling in dependencies. That action is performed by other tools - pip, build, the package's build backend, auditwheel/delocate etc. And I'm not sure how cibuildwheel would even go about tracking the dependencies that went into a wheel build - a lot of that is transparent to us, when we just call I wonder if there might be an approach that statically examines repos/sdists to track dependencies. I suspect that libraries.io does something like this (example). Github is also starting to track dependencies. Perhaps you could find out how they're doing it? |
Beta Was this translation helpful? Give feedback.
-
@joerick Thanks! delocate and auditwheels would likely be the primary triggers of binary vendoring. FWIW libraries.io does nothing of the sort (I maintain tools that do binary analysis and there is not a line of code in the libraries.io codebase that would remotely do anything there). I happen to also maintain one of the more popular license detection tools so I am a savvy enough license-wise. And also a package vulnerabilities database so I dabble in this too. The issue is that binary vendoring means redistribution and this may trigger some license obligations (like at the minimum produce some attribution/credits and license notices, and in some case support copyleft source code redistribution) . And vendoring binaries unknowingly could be a security concern too if the vendored bits have exploitable vulnerabilities. This means therefore that vendoring information need to bubble up from delocate and auditwheel and then in cibuidlwheel somehow and from then somehow surface in built wheels so that user can known. Ideally automating everything would be the right to do. But first logging/alerting users that something is done would go a long way. Short of this there are thing happening automagically in the build that could a source of some concerns ;) Note that the origin and source of the vendored binaries has to come from somewhere... and this must be the Docker images you use. Do you keep track or a copy of all the binary packages and their sources somewhere? If yes, that would help a lot and if no, that may be the place where to start as nothing would be much doable without this in the first place. |
Beta Was this translation helpful? Give feedback.
-
The readme at https://github.com/pypa/cibuildwheel/blob/1d2f86e6cf7fe43faef886d32748d6904c0e3a02/README.md#legal-note states:
This may or may not apply ... but when this happen, how can a cibuildwheel user find out and:
All these are IMHO important things to figure out for me as I plan to use cibuildwheel to build many binary wheels.
I would like to ensure that this is easy and documented for anyone (including me) and ideally automated and contribute this back here.
(Note: I maintain an ugly set of scripts that build wheels on Linux/mac/Windows there https://github.com/nexB/skeleton/blob/main/etc/scripts/build_wheels.py that I want to mostly drop in favor of this)
@joerick gentle ping... you added this legal note in the first place.
Beta Was this translation helpful? Give feedback.
All reactions