Skip to content
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

feat: build all libraries in the package #125

Merged
merged 4 commits into from
Feb 7, 2023
Merged

feat: build all libraries in the package #125

merged 4 commits into from
Feb 7, 2023

Conversation

coryan
Copy link
Contributor

@coryan coryan commented Feb 6, 2023

By default google-cloud-cpp only builds the most commonly used libraries. When building from source that can save some time, but for package managers this leaves out many important features.

Checklist

Fixes #115

I had to leave out a few libraries (google/cloud/asset, google/cloud/channel, and google/cloud/storagetransfer). The proto files for these libraries use enum value names (e.g. DOMAIN) which are also defined as macros in the system libraries or in the C++ standard library. With all but the latest version of Protobuf this is not a problem. With older versions it can be a problem with some compilers and C++ standard libraries (the list seems really hard to nail down).

By default `google-cloud-cpp` only builds the most commonly used
libraries. When building from source that can save some time, but for
package managers this leaves out many important features.
@conda-forge-webservices
Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@h-vetinari
Copy link
Member

Thanks for this @coryan!

W.r.t to protobuf, looking at some of the issues (e.g. googleapis/google-cloud-cpp#8145), it says that it needs protobuf >3.19.3; however we're at 3.21.12 already1 - does that change anything?

Footnotes

  1. We've had no problems with migrating to newer protobufs recently; I've been waiting for 3.22 for a while, but it seems it's getting a bit delayed (originally I heard it was supposed to arrive Nov' 22).

@coryan
Copy link
Contributor Author

coryan commented Feb 6, 2023

Thanks for this @coryan!

W.r.t to protobuf, looking at some of the issues (e.g. googleapis/google-cloud-cpp#8145), it says that it needs protobuf >3.19.3; however we're at 3.21.12 already1 - does that change anything?

It is a sad, sad story. We thought it only affected macOS, the fixes are in. But it also affects Windows, and I cannot find any fixes for that. I will need to send new patches.

  1. We've had no problems with migrating to newer protobufs recently; I've been waiting for 3.22 for a while, but it seems it's getting a bit delayed (originally I heard it was supposed to arrive Nov' 22).

Things are moving. There are two release candidates for v22.0.
The latest is v22.0-rc2. However, it will not be 3.22, but **4.**22. That is a new major release for C++ with some breaking changes. And it is known to break gRPC. I am not sure how the upgrades will need to proceed.

@coryan coryan marked this pull request as ready for review February 6, 2023 23:30
@h-vetinari
Copy link
Member

But it also affects Windows, and I cannot find any fixes for that. I will need to send new patches.

OK good to know thanks. If the patches aren't too big we can already carry them in conda-forge (within reason).

That is a new major release for C++ with some breaking changes.

Breaking ABI and/or API? The former is a given (what we've been dealing with so far; just recompile), the latter would be harder to deal with, because it'll possibly need source adaptation).

@h-vetinari
Copy link
Member

The latest is v22.0-rc2. However, it will not be 3.22, but **4.**22.

The 4 might just be for the python release, at least that's how it's been since 3.21.0. The tag is the same for 3.22.0, 4.22.0 & 22.0:

commit fa7a079c1136b2850e0227675c0379e8fde5c560 (HEAD, tag: v4.22.0-rc2, tag: v3.22.0-rc2, tag: v22.0-rc2)
Author: Protobuf Team Bot <protobuf-team-bot@google.com>
Date:   Thu Feb 2 11:44:51 2023 -0800

    Updating version.json and repo version numbers to: 22.0-rc2

This broke our bot in creative ways when it was rolled out, but my request to distinguish the tag patterns was rejected.

@coryan
Copy link
Contributor Author

coryan commented Feb 7, 2023

But it also affects Windows, and I cannot find any fixes for that. I will need to send new patches.

OK good to know thanks. If the patches aren't too big we can already carry them in conda-forge (within reason).

I will share a link to the patches as soon as they get exported. I think they amount to 12 lines changed across 4 files.

That is a new major release for C++ with some breaking changes.

Breaking ABI and/or API? The former is a given (what we've been dealing with so far; just recompile), the latter would be harder to deal with, because it'll possibly need source adaptation).

Both. You can see a partial list of changes in the v22.0-rc1 Release Notes. Notable ones that I think affect Conda:

  • The recipe will need changes to take a dependency on the latest Abseil.
  • Some header files used by protoc plugins changed. That means grpc and anything downstream may need changes (same errors without changes).
  • If your proto uses words reserved by C++20, then the generated code is now different. Very few protos did this, none of the protos published by Google Cloud (where I work did). But you never know.

The 4 might just be for the python release, at least that's how it's been since 3.21.0.

See the release notes, they explicitly call out breaking changes to C++ and Ruby.

@coryan coryan merged commit b31c647 into conda-forge:main Feb 7, 2023
@coryan coryan deleted the feat-enable-all-ga-libraries branch February 7, 2023 01:35
@h-vetinari
Copy link
Member

The 4 might just be for the python release, at least that's how it's been since 3.21.0.

See the release notes, they explicitly call out breaking changes to C++ and Ruby.

Yeah, and I just found https://github.com/protocolbuffers/protobuf/blob/main/version.json, which notes the major versions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add all features to the package
2 participants