Closed philipportner closed 6 months ago
I recently faced an build error related to absl, too. I noted down: ld.lld: error: undefined symbol: absl::lts_20211102::Mutex::Lock()
. In case you get the same error, you don't need to revert commit 8874b4ce0395015c0b2b3a500da8f3311dcd15d9 that switched to a newer version of absl. The problem can be fixed by rebuilding the dependency that requires absl (if I remember correctly, that was grpc). To rebuild grpc, either (a) do ./build.sh --cleanAll
(maybe --cleanDeps
is enough) and ./build.sh
, or (b) (hacky solution that is quicker) remove thirdparty/flags/grpc_v1.38.0.install.v1.success
and do ./build.sh
.
Background: When we increase the version number of a dependency in software-package-versions.txt
, the next run of ./build.sh
downloads and builds the new version of the dependency, which also triggers a rebuild of the affected parts of DAPHNE. With absl, the problem is that it is not a direct dependency of DAPHNE, but a dependency of grpc. We download and build absl separately, because we need to apply some patch to it for some reason (). As a consequence, ./build.sh
builds the new version of absl, but doesn't rebuild grpc, since there is still the install.v1.success
flag file present for grpc. I think one might have prevented this problem in 8874b4ce0395015c0b2b3a500da8f3311dcd15d9 by increasing the v1
to v2
in build.sh
for grpc*.
I wanted to write up this problem and its solution as an issue, but hadn't found the time yet...
(*) Since 8874b4ce0395015c0b2b3a500da8f3311dcd15d9, that patch isn't applied anymore, so maybe we should not download and build absl separately anymore, but rely on the build of grpc for that again.
Didn't think about rebuilding grpc
. That's exactly the problem I had, thanks @pdamme.
When building in the docker container for ARM, I could not finish compilation as I got a linker error regarding the absl library. This is fixed once I reverted this commit.
I'll add more information about the setup and the actual linker error tomorrow.