Page MenuHomeFreeBSD

devel/grpc: Update to version 1.34.0 and fix build of dependencies
ClosedPublic

Authored by jrm on Dec 24 2020, 6:01 AM.

Details

Summary

Ports fixed or updated to work with the latest grpc-1.34.0:

  • devel/bear (WIP)
  • devel/google-cloud-cpp
  • net/rubygem-grpc

https://github.com/grpc/grpc/releases/

PR:
Submitted by:
Reported by:

Test Plan

testport 11/12 i386/amd64 passes

Diff Detail

Repository
rP FreeBSD ports repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

jrm requested review of this revision.Dec 24 2020, 6:01 AM

I recall that a previous update of devel/grpc was backed out, because it broke some consumer ports. Hopefully those consumers have been fixed to work with recent releases of grpc, but if they are not, could we make a separate, legacy-version grpc port? Some other ports like devel/bear require recent versions of grpc.

I forgot to mention that stage-qa reports issues about some libraries missing SONAMES.

====> Running Q/A tests (stage-qa)
Warning: /wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib/libgrpc.so.14.0.0 doesn't have a SONAME.
Warning: pkg(8) will not register it as being provided by the port.
Warning: If another port depend on it, pkg will not be able to know where it comes from.
Warning: It is directly in /usr/local/lib, it is probably used by other ports.
Warning: /wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib/libgrpc++_reflection.so.1.34.0 doesn't have a SONAME.
Warning: pkg(8) will not register it as being provided by the port.
Warning: If another port depend on it, pkg will not be able to know where it comes from.
Warning: It is directly in /usr/local/lib, it is probably used by other ports.
Warning: /wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib/libgrpc++_unsecure.so.1.34.0 doesn't have a SONAME.
Warning: pkg(8) will not register it as being provided by the port.
Warning: If another port depend on it, pkg will not be able to know where it comes from.
Warning: It is directly in /usr/local/lib, it is probably used by other ports.
Warning: /wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib/libgrpc++.so.1.34.0 doesn't have a SONAME.
Warning: pkg(8) will not register it as being provided by the port.
Warning: If another port depend on it, pkg will not be able to know where it comes from.
Warning: It is directly in /usr/local/lib, it is probably used by other ports.
Warning: /wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib/libgrpcpp_channelz.so.1.34.0 doesn't have a SONAME.
Warning: pkg(8) will not register it as being provided by the port.
Warning: If another port depend on it, pkg will not be able to know where it comes from.
Warning: It is directly in /usr/local/lib, it is probably used by other ports.

I'm still not sure why. When I check those libraries manually, they all do have SONAMES.

root@12amd64-default:/wrkdirs/usr/ports/devel/grpc/work/stage/usr/local/lib # readelf -d libgrpc.so.14.0.0 libgrpc++_reflection.so.1.34.0 libgrpc++_unsecure.so.1.34.0 libgrpc++.so.1.34.0 libgrpcpp_channelz.so.1.34.0 | grep SONAME
 0x000000000000000e SONAME               Library soname: [libgrpc.so.14]
 0x000000000000000e SONAME               Library soname: [libgrpc++_reflection.so.1]
 0x000000000000000e SONAME               Library soname: [libgrpc++_unsecure.so.1]
 0x000000000000000e SONAME               Library soname: [libgrpc++.so.1]
 0x000000000000000e SONAME               Library soname: [libgrpcpp_channelz.so.1]

Fix ports depending on devel/grpc

  • devel/grpc: Update to version 1.34.0
  • devel/google-cloud-cpp: Update to version 1.21.0
  • net/rubygem-grpc: Fix build with grpc-1.34.0
  • devel/bear: WIP to update to version 3.0.5

science/py-tensorflow is already marked BROKEN, so I believe this should
cover all fallout.

jrm retitled this revision from devel/grpc: Update to version 1.34.0 to devel/grpc: Update to version 1.34.0 and fix build of dependencies.Dec 26 2020, 4:42 AM
jrm edited the summary of this revision. (Show Details)
jrm added a reviewer: amzo1337_gmail.com.

Don't touch the timestamps in net/rubygem-grpc/distinfo

My patch for grpc is at https://people.FreeBSD.org/~sunpoet/patch/devel-grpc.txt. The main difference is to use benchmark from ports tree.

Regarding the stage-qa issue, I did see it while drafting the patch but do not see it with current patch.

@jrm Could you please test the patch and, if it works, update this Diff? Then, we'll need @mfechner for runtime testing of gitlab-ce. There was a upb issue last time we tested grpc 1.28.1, Hope it's fixed now.

Incorporate sunpoet's changes

Remove google-benchmark tarball from distinfo

Match a few other differences in sunpoet's diff

Thanks @sunpoet. Diff of devel/grpc updated. I think now we just have to hear back from @mfechner and @amzo1337_gmail.com.

@jrm thanks a lot for this update.
I tested a newly installed gitlab-ce 13.7.1, tested a minor upgrade and tested a major upgrade.
All are running fine.

From my site green light to commit it.

This revision is now accepted and ready to land.Dec 29 2020, 11:07 PM

New errors that appear after r550636 rP559622:

(Sorry, originally pasted the wrong revision. Errors below are from rP559622.)

ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::numbers_internal::safe_strto32_base(absl::lts_2020_09_23::string_view, int*, int)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::optional_internal::throw_bad_optional_access()
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::Status::GetPayload(absl::lts_2020_09_23::string_view) const
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::Status::Status(absl::lts_2020_09_23::StatusCode, absl::lts_2020_09_23::string_view)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::strings_internal::CatPieces(std::initializer_list<absl::lts_2020_09_23::string_view>)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::EqualsIgnoreCase(absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::string_view)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::numbers_internal::safe_strto64_base(absl::lts_2020_09_23::string_view, long*, int)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::StartsWithIgnoreCase(absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::string_view)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::Status::SetPayload(absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::Cord)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::numbers_internal::safe_strtou32_base(absl::lts_2020_09_23::string_view, unsigned int*, int)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::ByChar::Find(absl::lts_2020_09_23::string_view, unsigned long) const
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::string_view::find(absl::lts_2020_09_23::string_view, unsigned long) const
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::string_view::rfind(absl::lts_2020_09_23::string_view, unsigned long) const
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::FormatTime(absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::Time, absl::lts_2020_09_23::TimeZone)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::BytesToHexString(absl::lts_2020_09_23::string_view)
ld: error: libgrpc.so.14.0.0: undefined reference to absl::lts_2020_09_23::ParseTime(absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::string_view, absl::lts_2020_09_23::Time*, std::__1::basic_string<char
In D27752#623772, @jrm wrote:

New errors that appear after r550636:

It builds fine with rP550636 but fails after rP559622.

devel/grpc build fails after rP559622.

devel/grpc builds for me. But if any such failures due to abseil should be resolved after adding -std=c++17.

Thanks @yuri. The problem is with the latest version under review here. The problem is fixed by adding USES=compiler:c++17-lang and CMAKE_ARGS=-DCMAKE_CXX_STANDARD=17 as @sunpoet also suggested.

I should add, I confirmed this on 12.1amd64. The others in 11/12 i386/amd64 are still running.

Fix build of devel/google-cloud-cpp after rP559622

This revision now requires review to proceed.Jan 3 2021, 11:57 AM
This revision is now accepted and ready to land.Jan 3 2021, 8:47 PM

Just waiting until 2021-01-07 for @amzo1337_gmail.com to approve. I may also drop devel/bear from the update. It has problems with v3.0.x that will take time to fix and should probably be addressed upstream.

I only test build the new diff which succeeded. But I have not redone all runtime checks.
But as only some compiler options changed, this should not be necessary, please feel free to commit it.

This revision was automatically updated to reflect the committed changes.