ARROW-15388: [C++] Avoid including absl from flatbuffers#12204
ARROW-15388: [C++] Avoid including absl from flatbuffers#12204pitrou wants to merge 2 commits intoapache:masterfrom
Conversation
There may be an incomplete/broken copy of the Abseil library lying around (for example because of a race condition while installing it as a bundled library). Since absl is only used by Flatbuffers to provide a string_view facility, use our own vendored string_view instead.
|
@coryan Not sure whether you have an opinion on this? |
|
|
To me, it seems odd to patch the code to fix a race condition during the build. Seems like the "Right Thing"[tm] would be to fix the dependency graph to make flatbuffers depend on Abseil? Is that very hard for some reason? |
|
It's a bit convoluted and awkward, as Abseil is only an optional indirect dependency of the GCSFS implementation. Furthermore, since Flatbuffers is vendored, I don't think it has an existence in the dependency graph at all currently (it's basically always there). |
I see. Consider that (by default) You may want to just disable the automatic detection of Abseil's string view. Just my $0.02, I think your change should work as-is too. |
|
Flatbuffers' use of string_view is merely to enable two APIs (that we don't currently use AFAICT, so we may indeed as well disable it). It doesn't store any |
|
If it just enables APIs we don't use, I would lean towards avoiding the mess in the first place and just removing the detection as well. But as-is things are OK here too. |
|
@pitrou shall we include this in 7.0 (in the case I need to cut another RC)? |
|
@kszucs There's no real need to. |
|
Benchmark runs are scheduled for baseline = a3efe72 and contender = 22dc537. 22dc537 is a master commit associated with this PR. Results will be available as each benchmark for each run completes. |
There may be an incomplete/broken copy of the Abseil library lying around
(for example because of a race condition while installing it as a bundled library).
Since absl is only used by Flatbuffers to provide a string_view facility,
use our own vendored string_view instead.