Opened 7 years ago

Last modified 16 months ago

#56135 assigned enhancement

protobuf-cpp in conflict with protobuf3-cpp

Reported by: btywoniuk (Bart) Owned by: mascguy (Christopher Nielsen)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc: fswasey, ryandesign (Ryan Carsten Schmidt)
Port: protobuf-cpp protobuf3-cpp protobuf-java protobuf3-java py-protobuf py-protobuf3

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Can't install protobuf-cpp because conflicting ports are active: protobuf3-cpp

Error: Can't install protobuf-cpp because conflicting ports are active: protobuf3-cpp
Error: Problem while installing protobuf-cpp
Error: rev-upgrade failed: Error rebuilding mosh

Change History (23)

comment:1 Changed 7 years ago by raimue (Rainer Müller)

Keywords: mosh protobuf-cpp protobuf3-cpp removed
Milestone: MacPorts 2.6.0
Owner: set to blair
Port: protobuf-cpp protobuf3-cpp added; mosh removed
Status: newassigned
Type: defectenhancement

comment:2 Changed 7 years ago by raimue (Rainer Müller)

Here is a look at what other distributions are going, because they must have figured this out already. Most seem to provide protobuf with version 2.6.x or 3.5.x (the C++ library) and also protobuf-c at 1.2.x or 1.3.x (a wrapper around the C++ code for pure C).

protobuf-cpp and protobuf3-cpp do not exist anywhere else but in MacPorts. I assume this is where all our problems come from, it is not supposed to be packaged like this in parallel.

Blair, any comments on why you chose to package it this way? Is there any reason to keep protobuf 2.x around?

I propose to get rid of protobuf 2.x and simplify this:

  1. move protobuf3-cpp to protobuf
  2. mark protobuf3-cpp and protobuf-cpp as replaced_by protobuf
  3. move protobuf3-java to protobuf-java
  4. move py-protobuf3 to py-protobuf
  5. mark py-protobuf3 as replaced_by py-protobuf

This would match what everybody else seems to be doing.

comment:3 Changed 7 years ago by raimue (Rainer Müller)

Port: protobuf protobuf-java protobuf3-java py-protobuf py-protobuf3 added

comment:4 Changed 7 years ago by pmetzger (Perry E. Metzger)

Rainer, this seems good to me. It will reduce the mess a lot. It will probably require upgrading a couple of the ports but there aren't that many involved.

comment:5 Changed 7 years ago by pmetzger (Perry E. Metzger)

I have a pull request in now to update protobuf-c to a version that is compatible with the latest protobuf implementation. That should be committed soon. I believe the other ports that might not work with the latest protobuf can also be easily updated.

comment:6 Changed 7 years ago by pmetzger (Perry E. Metzger)

Okay, after speaking with Rainer, I'm more or less executing his suggestion.

comment:7 Changed 7 years ago by blair (Blair Zajac)

The original naming was after zeroc's ice. The plan looks good to me, although it doesn't leave space for protobuf 4 if it ever comes out. But we can worry about that problem in the future.

comment:8 in reply to:  7 Changed 7 years ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)

Replying to blair:

The plan looks good to me, although it doesn't leave space for protobuf 4 if it ever comes out. But we can worry about that problem in the future.

Wouldn't all the ports simply be updated to version 4 at that time? Why keep version 3 around then?

comment:9 Changed 7 years ago by blair (Blair Zajac)

Some ports may not easily be upgradable. We commonly support multiple versions of ABI incompatible libraries, e.g. serf0 and serf1, so why would protobuf be different?

comment:10 Changed 7 years ago by pmetzger (Perry E. Metzger)

As of now:

  1. ola cannot be updated to protobuf3 without adding some patches found in https://github.com/OpenLightingProject/ola/pull/1336/files
  2. rethinkdb doesn't seem to build at the moment so I can't test it. Our version is ancient and nomaintainer.
  3. The version of shogun-devel we have is 4.0.0, while shogun itself is at version 6.1.3. maintainer is stromnov.

I still need to look at MyPaint and sumo. I have pull requests in for the rest or have already committed them.

comment:11 Changed 6 years ago by fswasey

Any suggestions about getting mosh upgraded while this problem is being resolved?

$ sudo port list outdated
Warning: The 'list' action only shows the currently available version of each port. To see installed versions, use the 'installed' action.
mosh                           @1.3.2          net/mosh
$ sudo port upgrade mosh
--->  Computing dependencies for protobuf3-cpp
Error: Can't install protobuf3-cpp because conflicting ports are active: protobuf-cpp
Error: Problem while installing protobuf3-cpp
Error: Follow https://guide.macports.org/#project.tickets to report a bug.

Oh -- never mind... it was the currently installed version of mosh that was requiring protobuf-cpp ... worked around it by uninstalling mosh and then installing it again.

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:12 in reply to:  11 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Cc: fswasey added

Replying to fswasey:

$ sudo port list outdated

Note that:

  1. port list outdated does not show you what you think it shows you. Please see wiki:FAQ#portlist. You want port outdated instead.
  2. There is no need to use sudo for read-only actions like port list or port outdated or port installed.

comment:13 in reply to:  9 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

Replying to blair:

Some ports may not easily be upgradable. We commonly support multiple versions of ABI incompatible libraries, e.g. serf0 and serf1, so why would protobuf be different?

Well please decide what you want. If you want to offer multiple versions such that different ports can use different versions of protobuf, they need to not conflict; see #56102. That's what I originally suggested, and that's what serf0 and serf1 do, but I don't think you responded to that idea for protobuf, and others took charge and decided to upgrade everything to the latest version instead. See https://github.com/macports/macports-ports/pull/1628.

comment:14 Changed 6 years ago by blair (Blair Zajac)

Since I'm not doing any work on it, I'm just throwing in suggestions. The better way is to support multiple versions to deal with ports that have dependencies that haven't updated.

That said, since I'm not doing the work, this works, since it appears most ports have been updated to protobuf3.

To the original question, at the time, I didn't do the work to have the two ports be installable at the same time, maybe due to lack of time, to do the job right.

comment:15 Changed 6 years ago by pmetzger (Perry E. Metzger)

I think we are going to complete the conversion of the rest of the ports to protobuf3 in the next couple of weeks.

comment:16 Changed 5 years ago by mf2k (Frank Schima)

Owner: blair deleted
Port: protobuf removed
Type: enhancementdefect
Version: 2.4.2

comment:17 Changed 5 years ago by mf2k (Frank Schima)

Type: defectenhancement

comment:18 Changed 5 years ago by mf2k (Frank Schima)

Cc: ryandesign added

Has duplicate #56102

comment:19 Changed 4 years ago by mascguy (Christopher Nielsen)

Is this still an open issue?

comment:20 Changed 4 years ago by mf2k (Frank Schima)

Yes

$ port info --conflicts protobuf-cpp
conflicts: protobuf3-cpp

comment:21 Changed 18 months ago by mascguy (Christopher Nielsen)

Owner: set to mascguy

Ultimately we need to segregate these ports, in order to support multiple upstream versions. So I'll add this to my list.

comment:22 Changed 16 months ago by mascguy (Christopher Nielsen)

While this is only an intermediate step, a new segregated port - protobuf3-cpp-upstream - has been created, covering the latest release:

https://github.com/macports/macports-ports/commit/7e50f3aada608a3f03515f9eae5eba01d4abb04b

Still need to tackle segregating protobuf-cpp, but it's on my longer-term to-do list.

comment:23 in reply to:  22 Changed 16 months ago by mascguy (Christopher Nielsen)

Replying to mascguy:

While this is only an intermediate step, a new segregated port - protobuf3-cpp-upstream - has been created, covering the latest release:

https://github.com/macports/macports-ports/commit/7e50f3aada608a3f03515f9eae5eba01d4abb04b

On a related note: Given that the Python port doesn't appear to be versioned - preventing side-by-side installation in that space - it's not clear whether it will be feasible to update py-protobuf3. Though if the latest release is backward compatible - at least for the Python bindings - perhaps updating is possible.

Still need to take a closer look at all of this, when I can find time. Stay tuned...

Note: See TracTickets for help on using tickets.