fletch icon indicating copy to clipboard operation
fletch copied to clipboard

Support the CMake with Protobuf

Open aaron-bray opened this issue 7 years ago • 16 comments

aaron-bray avatar Jul 23 '18 13:07 aaron-bray

Jenkins test this please

dstoup avatar Jul 23 '18 14:07 dstoup

Jenkins test this please

dstoup avatar Aug 02 '18 12:08 dstoup

@aaron-bray I want to revisit this branch so we can add support in MSVC. Can you discuss the version choices here so we can all see and remember?

Right now we support 2.5.0 & 3.4.1. Ideally we will only have a single 2 and a single 3 and hopefully very soon, drop version 2 altogether. Why were all the version choices added here?

dstoup avatar Nov 01 '18 12:11 dstoup

Protobuf comes in 2 versions, 2 and 3 The last 'release' of 2 is version 2.6.1

  • i.e. there is a release tag and is part of their releases on github. 2.6.1 has NO cmake support Protobuf 3 came out and added CMake (CMakeLists.txt is not in the root dir and thus the build is a bit unconventional, but I digress) To bridge the gap between Protobuf 2.6.1 and Protobuf 3, a 2.7.0 branch was created to help users migrate from 2 to 3 easier. Its kind of a 2/3 hybrid that is more 2 than 3. The 2.7.0 branch does have the CMake support.

So from a windows perspective, I only want to build a Protobuf with CMake support and not screw with nmake, so 2.7 is the only version of Protobuf2 that easily builds on windows, if we want to support Protobuf2.

So 2.6.1 is the last official release of Protobuf2 and hard to build on windows Branch 2.7.0 is the first and only Protobuf2 codebase to support CMake, and easy to build on windows I am also using Protobuf 3.6.1 on my Pulse, which is also easy to build on windows. Protobuf 3.6.x is the first version that utilizes C++11 and you don't get a bajillion deprecation warnings when building

Is something is dependent on 2.5? I left it in because of unknowns. I am not sure why we need Protobuf2 Caffe builds fine with Protobuf 3

So we should really only pull the latest 3 release, and if we need to support 2, use the 2.7 branch.

Whatever we want to do, I probably need to clean this up...

aaron-bray avatar Nov 01 '18 12:11 aaron-bray

Part of the conversation that fed this question and the revisit of this branch involved whether we still needed and wanted to support version 2 anymore. I plan to send an email out to see if anyone is actively using it, but you were the person I was primarily thinking might.

Regardless of whether we drop 2 or not, is there a problem moving all version 2 support up to 2.7 so we can switch over to the CMake build? If not and depending on the answers to the first question, we can just move version 2 up and stop supporting the non-CMake versions. It's likely we can just upgrade version 3 to the one you recommend as well. I think you are probably the most active user.

Another possibility is to tackle the version 2 fixes first and then do version 3 to minimize risk. That only makes sense though if the branch doesn't get uglier (or more time-consuming) in the process.

dstoup avatar Nov 01 '18 17:11 dstoup

I would assume there is no issue moving Protobuf2 from 2.5 to 2.7 Then just update the Protobuf3 version to the latest as needed

Protobuf3 should be default for fletch.

Then we are all CMake compatible. Figure out who/what is wanting Protobuf2.5 and we can ensure 2.7 works fine

aaron-bray avatar Nov 01 '18 17:11 aaron-bray

Sounds perfect, thanks Aaron. I will start prodding people for answers.

On Thu, Nov 1, 2018 at 1:57 PM Aaron Bray [email protected] wrote:

I would assume there is no issue moving Protobuf2 from 2.5 to 2.7 Then just update the Protobuf3 version to the latest as needed

Protobuf3 should be default for fletch.

Then we are all CMake compatible. Figure out who/what is wanting Protobuf2.5 and we can ensure 2.7 works fine

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435125188, or mute the thread https://github.com/notifications/unsubscribe-auth/AFRAWoQ5PNhQqK0lob24uJyWOB8GuVv5ks5uqzX1gaJpZM4VbCwx .

-- David Stoup Principal Engineer

Kitware, Inc. 28 Corporate Drive Clifton Park, NY. 12065 518-881-4949 (W) 518-312-3946 (M) 518-371-4573 (F)

dstoup avatar Nov 01 '18 18:11 dstoup

So I remembered the wrench that 2.7 has... 2.7 is not a release, its only a branch. So you cannot use a protobuf URL of https://github.com/google/protobuf/releases/download/v2.7.0/protobuf-$2.7.0.tar.bz2

Its just not on their github site. So, we either store our own 2.7.0 source zip in data.kitware, or we pull the branch.. I kind of like the idea of hosting our own zip...

thoughts?

aaron-bray avatar Nov 01 '18 19:11 aaron-bray

I knew there was a wrinkle somewhere that we were missing.

I don't love hosting tarballs for packages because it makes updates such a black box. Though, if that's the best solution then so be it. One simple option is that we leave the version of 2 alone and continue disallowing Windows builds and open that path up with the version 3 update. That is appealing if we are going to consider removing version 2 anyway. It moves us forward and still provides Windows protobuf with version 3.

On Thu, Nov 1, 2018 at 3:09 PM Aaron Bray [email protected] wrote:

So I remembered the wrench that 2.7 has... 2.7 is not a release, its only a branch. So you cannot use a protobuf URL of

https://github.com/google/protobuf/releases/download/v2.7.0/protobuf-$2.7.0.tar.bz2

Its just not on their github site. So, we either store our own 2.7.0 source zip in data.kitware, or we pull the branch.. I kind of like the idea of hosting our own zip...

thoughts?

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435150499, or mute the thread https://github.com/notifications/unsubscribe-auth/AFRAWh8LriGzw0kjbLn89x4iKcwXdxJHks5uq0bvgaJpZM4VbCwx .

-- David Stoup Principal Engineer

Kitware, Inc. 28 Corporate Drive Clifton Park, NY. 12065 518-881-4949 (W) 518-312-3946 (M) 518-371-4573 (F)

dstoup avatar Nov 01 '18 19:11 dstoup

I don't think protobuf 2 is ever going to change or be updated, 2.7.0 is a dead branch as is Protobuf2 (Latest commit on Jul 26, 2016) So I don't think we will ever be updating it, it will forever sit in data.kitware For Protobuf3 we can pull release zips I also do not mind updating from 2.5 and leaving code associated with 2 alone

Let's see who is using Protobuf2 to figure out which way to go. Maybe we can just remove 2 and not have to worry about this...

aaron-bray avatar Nov 01 '18 19:11 aaron-bray

AFAIK github has a way to download a tarball of an arbitrary SHA...

On Thu, Nov 1, 2018, 15:09 Aaron Bray <[email protected] wrote:

So I remembered the wrench that 2.7 has... 2.7 is not a release, its only a branch. So you cannot use a protobuf URL of

https://github.com/google/protobuf/releases/download/v2.7.0/protobuf-$2.7.0.tar.bz2

Its just not on their github site. So, we either store our own 2.7.0 source zip in data.kitware, or we pull the branch.. I kind of like the idea of hosting our own zip...

thoughts?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435150499, or mute the thread https://github.com/notifications/unsubscribe-auth/AGLKqTqwVCcHmeMp45900J3w8UVKWnOTks5uq0bvgaJpZM4VbCwx .

mwoehlke-kitware avatar Nov 01 '18 20:11 mwoehlke-kitware

Good plan!

On Thu, Nov 1, 2018 at 3:51 PM Aaron Bray [email protected] wrote:

I don't think protobuf 2 is ever going to change or be updated, 2.7.0 is a dead branch as is Protobuf2 (Latest commit on Jul 26, 2016) So I don't think we will ever be updating it, it will forever sit in data.kitware For Protobuf3 we can pull release zips I also do not mind updating from 2.5 and leaving code associated with 2 alone

Let's see who is using Protobuf2 to figure out which way to go. Maybe we can just remove 2 and not have to worry about this...

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435164466, or mute the thread https://github.com/notifications/unsubscribe-auth/AFRAWja7qfY-DGg8aG2cIHKq3xJe5lGSks5uq1C0gaJpZM4VbCwx .

-- David Stoup Principal Engineer

Kitware, Inc. 28 Corporate Drive Clifton Park, NY. 12065 518-881-4949 (W) 518-312-3946 (M) 518-371-4573 (F)

dstoup avatar Nov 01 '18 20:11 dstoup

Yes, you are correct. I did miss the fact that it's a branch still on github, sorry. Was in a meeting a kind of glossed the the end about hosting tarballs.

We can in fact use the 2.7 branch for both Linux and Windows. I am happy enough doing that.

On Thu, Nov 1, 2018 at 4:04 PM Matthew Woehlke [email protected] wrote:

AFAIK github has a way to download a tarball of an arbitrary SHA...

On Thu, Nov 1, 2018, 15:09 Aaron Bray <[email protected] wrote:

So I remembered the wrench that 2.7 has... 2.7 is not a release, its only a branch. So you cannot use a protobuf URL of

https://github.com/google/protobuf/releases/download/v2.7.0/protobuf-$2.7.0.tar.bz2

Its just not on their github site. So, we either store our own 2.7.0 source zip in data.kitware, or we pull the branch.. I kind of like the idea of hosting our own zip...

thoughts?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435150499, or mute the thread < https://github.com/notifications/unsubscribe-auth/AGLKqTqwVCcHmeMp45900J3w8UVKWnOTks5uq0bvgaJpZM4VbCwx

.

— You are receiving this because your review was requested. Reply to this email directly, view it on GitHub https://github.com/Kitware/fletch/pull/422#issuecomment-435168106, or mute the thread https://github.com/notifications/unsubscribe-auth/AFRAWipq9O8tgpwmGrrSSZVUj7HtAo0Jks5uq1PGgaJpZM4VbCwx .

-- David Stoup Principal Engineer

Kitware, Inc. 28 Corporate Drive Clifton Park, NY. 12065 518-881-4949 (W) 518-312-3946 (M) 518-371-4573 (F)

dstoup avatar Nov 01 '18 20:11 dstoup