Add Abseil as libtego's dependency to fix linker errors#183
Add Abseil as libtego's dependency to fix linker errors#183dllud wants to merge 1 commit intoblueprint-freespeech:mainfrom
Conversation
ricochet-refresh's build fails with a "DSO missing from command line" error, on Arch Linux (binutils 2.42), when liking the final binary. libabsl_log_internal_check_op.so is needed to build libtego.a because protobuf depends on it. Setting the linker flags to "-Wl,--copy-dt-needed-entries" works around the issue but goes against the now default behaviour of binutils of not recursively fetching dependencies for libs when linking. Adding this explicit link to Abseil fixes the error in the proper manner but makes libtego build depend on the internals of protobuf.
morganava
left a comment
There was a problem hiding this comment.
So official builds are using an older version of protobuf (3.21.12) to avoid this abseil problem. Making it a REQUIRED package won't work.
We can take this if it is modified to make it conditional on the version of protobuf found (ie make abseil a required dependency if protobuf 3.22 or greater is found).
|
Alternatively, we can leave the abseil check if we update ricochet-build to build with a newer protobuf dependency that includes abseil. |
|
Build still fails with protobuf ≥ 3.22 without |
|
@dllud we'll be switching to an entirely Rust implementation of the Ricochet-Refresh v3 protocol in the coming months, so this abseill problem will go away after this switch. |
ricochet-refresh's build is failing with a
DSO missing from command lineerror, on Arch Linux (binutils 2.42), when liking the final binary.libabsl_log_internal_check_op.so is needed to build libtego.a because protobuf depends on it. Setting the linker flags to
-Wl,--copy-dt-needed-entriesas I did on the AUR PKGBUILD works around the issue. However it goes against the now default behaviour of binutils of not recursively fetching dependencies for libs when linking.Adding an explicit link to Abseil as I am doing in this PR fixes the error in the manner binutils now deems proper. On the other hand, it makes libtego build files depend on the internals of protobuf. As such I am unsure if this is the proper way to go. Reviews and comments are gladly welcomed.