-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
fix: preserve dependencies between googleapis libs #14894
fix: preserve dependencies between googleapis libs #14894
Conversation
The googleapis package contains over 500 libraries. These libraries depend on each other, and cannot be statically linked successfully if the libraries are out of order. We use a file in the package to preserve this dependency order. It seems like too much of a maintenance burden to keep such information in the `conanfile.py` code.
This comment has been minimized.
This comment has been minimized.
I detected other pull requests that are modifying googleapis/all recipe: This message is automatically generated by https://github.com/ericLemanissier/conan-center-conflicting-prs so don't hesitate to report issues/improvements there. |
This comment has been minimized.
This comment has been minimized.
Hooks produced the following warnings for commit 777f3f4googleapis/cci.20210730
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Conan v1 pipelineAll green in build 8 (
Conan v2 pipeline (informative, not required for merge)Failure in build 8 (
Note: To save resources, CI tries to finish as soon as an error is found. For this reason you might find that not all the references have been launched or not all the configurations for a given reference. Also, take into account that we cannot guarantee the order of execution as it depends on CI workload and workers availability. |
Ping, this is blocking changes to make |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tricky, but much better than collect_libs
. Thank you for your contribution!
* fix: preserve dependencies between googleapis libs The googleapis package contains over 500 libraries. These libraries depend on each other, and cannot be statically linked successfully if the libraries are out of order. We use a file in the package to preserve this dependency order. It seems like too much of a maintenance burden to keep such information in the `conanfile.py` code. * Fix lints * Implement topological sort * Lint again * Weaken type hints * I was confused, no tsort is needed * Fix macOS build / workaround for GID_MAX macro * Fix lint errors * Fix (I think) warnings about system libraries * Address review comments * Fix build
The use of Components has caused issues related to how the
@coryan, I'd be very grateful if you could provide more details as to what was broken with the google-cloud-cpp recipe without the changes in this PR - as we may have to roll back the changes in the |
I am sorry to hear that.
The problem is described in #14881 thought maybe in not enough detail. Linking the target_link_libraries(my-target PRIVATE googleapis::googleapis) And you used symbols from (for example) the bigtable protos, your program would not link. In general, if Note that (currently)
Before this PR, any attempt to fix that problem was unlikely to work (I think). If I am not sure these ramblings clarify anything. If they don't please let me know and I will try to help. FWIW, I have sent #15469 to upgrade |
Hi @coryan! Thanks so much for providing more details. This makes perfect sense. If there are tons of libraries, if they have order-dependent linkage, indeed The vendoring of .proto files (and their compiled counterparts) in certain libraries is also a known issue that the I do wonder (wild idea), given that the libraries in |
The googleapis package contains over 500 libraries. These libraries depend on each other, and cannot be statically linked successfully if the libraries are out of order.
We use a file in the package to preserve this dependency order. It seems like too much of a maintenance burden to keep such information in the
conanfile.py
code.Specify library name and version: googleapis/_
Fixes #14881