-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Upgrade protobuf3-cpp to 24.4 and fix up its dependencies (mosh, grpc, #21170
Conversation
Notifying maintainers: |
Converting to draft for now, until I've had a chance to test/validate locally. |
Some notes. For Reenabling the 27 build and trying it quickly fails. I didn't look into fixing the failure.
For Not upgrading
For I took out the mention of
Since this comment removed an explicit dependency on |
Hi @mascguy, any chance to look at this? Also, I noticed that this PR upgraded Thanks, |
49b9104
to
fceab18
Compare
Hi @mascguy, some more work on this. The previous version of Regardless, I updated it to
But it builds the
|
fceab18
to
77cddad
Compare
@mascguy I'm going to ask you to remove your lock on this unless you're willing to finish it in the next few days. Please let other people finish the work. |
@blair Do you think you could resolve the conflicts and push a new version? |
I have ongoing professional and personal obligations at the moment, so this week isn't an option. Perhaps next week, if I'm able to carve out some time. |
77cddad
to
5526efa
Compare
I rebased onto BTW, the |
I'll try to take a look at all of this soon. I might be able to find some time this week, or this weekend. More to follow. |
@mascguy I'm going to have to ask you to step aside. There are a lot of ports where you mark the thing "Draft", insist that you are going to shepherd it, and do nothing for months or longer. If you insist only you can do the work, then you have to finish things in a reasonable period of time. If you have other obligations, then allow other people to finish the work. |
@blair What's the reason the CI is failing? |
@blair Let's try to get this moving. |
@blair ? |
Feel free to reopen if/when someone had the time/interest to finish this up. |
I would like to revive this PR and directly move on to protobuf 26.1. Unfortunately, protobuf no longer ships with its own |
We don't want to do that presumably it ships now with a pyproject.toml and that will work just fine. |
Sorry, but I can't find a |
okay, that's too bad. You'll have to spend some time then to figure out how to do that. |
I now managed to first build that wheel using Bazel and then installing that into destroot with pip. @reneeotten Can you advice on how I can add my changes to this PR? Or will I have to create a new PR from my branch that is on top of blair's changes? |
https://trac.macports.org/wiki/WorkingWithGit#WorkingwithsomeoneelsespullrequestthroughitsID |
Per https://protobuf.dev/news/2022-08-03/#lang-specific-distros, "To reduce dependence on autotools and minimize the number of artifacts we release, we plan to stop publishing language-specific source distributions on our GitHub release page. Instead, we advise users to download the source code distribution automatically generated by GitHub on the release page." In MacPorts terms, that means switching from |
That is not so. When you wrote this comment, the version number of the python module was 4.24.4. Now, the version number of the python module is 5.26.x. See https://protobuf.dev/support/version-support/#python. This was clearer when they released separate distfiles for the python module. |
Per https://protobuf.dev/support/version-support/#cpp, as of protobuf 22.x, the version number for the C++ bindings goes from 3 to 4. The protobuf3-cpp port, given the 3 in its name, is intended to track the 3.x version of the C++ bindings so it cannot be updated to protobuf 22.x or later. Providing C++ bindings for protobuf 22.x and later will require the creation of a new protobuf4-cpp port. As of protobuf 26.x, the version number of the C++ bindings has increased to 5 which will require the creation of a new protobuf5-cpp port. |
This makes me wonder if py-protobuf3 should ever have been updated to 4.x in 6d94469. Should a new py-protobuf4 port should have been created instead? Should the version number in the python module port's name refer to the version number of the python module or the version number of the C++ library it uses? The use of a new major version number indicates backward-incompatible changes. It seems likely that old projects would want to continue to use version 3 of the python module that they were designed with while new projects could move to version 4. According to https://github.com/protocolbuffers/protobuf/tree/main/python#implementation-backends the python module has three different backends, as of version 4.21.0: one based on upb, one based on protobuf-cpp, and one in pure python, with the one based on protobuf-cpp no longer built or installed by default, suggesting the port shouldn't even have a dependency on protobuf3-cpp anymore and the python module port's name really shouldn't be tied to the protobuf3-cpp port's verison. It looks like our current py-protobuf3 doesn't install into paths that include the python library version number so a hypothetical new py-protobuf4 and py-protobuf5 would conflict with the existing py-protobuf3. The conclusion I must reach is that I have no idea how the developer intent for their software to be packaged. |
@reneeotten Why not? It's acceptable for python modules to download their source code from pypi, so much so that it's the default behavior of the python portgroup to do so:
|
Thank you for gathering all that information.
I was just about to say the same. That versioning strategy is a real nightmare. |
Indeed, the |
Yes, source code is of course fine. Just as for all packages we usually don't use pre-compiled packages (i.e., ".whl" files) but prefer to download the source files and compile things within the MacPorts framework as we do with pretty much all other Python packages. |
Could we maybe also use the protoc version (aka. the minor version that is kept constant across languages) instead of the major version (currently 3) to name the ports? My thinking here is, that the protobuf releases are taged Of course that does not fix the problem that we cannot install different versions in parallel. |
OK, then I believe this has been a misunderstanding. I meant do download the source package from pypi not the wheel. Sorry for miscommunicating that. |
Another (maybe to drastic) option might be to drop the major version currently encoded in the port name all together (I know there already is a |
If you meant to use the "source distribution (i.e., |
Description
Protobuf has dropped support for C++11: https://protobuf.dev/news/2022-08-03/#c11-support . So patch dependencies to force them to use C++14.
Type(s)
Tested on
macOS x.y
Xcode x.y / Command Line Tools x.y.z
Verification
Have you
port lint --nitpick
?sudo port test
?sudo port -vst install
?