-
Notifications
You must be signed in to change notification settings - Fork 554
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[OSRM] Add new binary, second try... #8893
base: master
Are you sure you want to change the base?
[OSRM] Add new binary, second try... #8893
Conversation
Error on [ Info: Checking shared library lib/libosrm.so
--
ERROR: could not load library "/cache/build/yggy-amdci7-8/julialang/yggdrasil/O/OSRM/build/x86_64-linux-gnu-cxx11/ZsPx5jB0/x86_64-linux-gnu-libgfortran5-cxx11/destdir/lib/libosrm.so"
| /cache/julia-buildkite-plugin/julia_installs/bin/linux/x64/1.7/julia-1.7-latest-linux-x86_64/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by /cache/build/yggy-amdci7-8/julialang/yggdrasil/O/OSRM/build/x86_64-linux-gnu-cxx11/ZsPx5jB0/x86_64-linux-gnu-libgfortran5-cxx11/destdir/lib/libosrm.so)
| ┌ Warning: lib/libosrm.so cannot be dlopen()'ed |
Error on ld64.lld: error: undefined symbol: osrm::extractor::CompressedEdgeContainer::GetBucketReference(unsigned int) const |
That is because it is using GCC 13, so it gets linked against a newer glibcxx version because that is what ships with it. You need to lower the GCC version requested to get around this. |
If I lower GCC below v12, other target builds break. Is there another strategy for dealing with this issue (I don't exactly understand what the problem is...all of the dependencies were built with earlier GCC versions). |
Hey @mattwigway!
-apple- [20:49:20] ld64.lld: error: undefined symbol: osrm::extractor::CompressedEdgeContainer::GetBucketReference(unsigned int) const -mingw- warning "__STRICT_ANSI__ seems to have been undefined; this is not supported"�[39m
x86_64-linux-gnu-cxx11 <head></head>
[ Info: Checking shared library lib/libosrm_extract.so
--
| ERROR: could not load library "/cache/build/yggy-amdci7-14/julialang/yggdrasil/O/OSRM/build/x86_64-linux-gnu-cxx11/Sjda2mna/x86_64-linux-gnu-libgfortran5-cxx11/destdir/lib/libosrm_extract.so"
| /cache/julia-buildkite-plugin/julia_installs/bin/linux/x64/1.7/julia-1.7-latest-linux-x86_64/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /cache/build/yggy-amdci7-14/julialang/yggdrasil/O/OSRM/build/x86_64-linux-gnu-cxx11/Sjda2mna/x86_64-linux-gnu-libgfortran5-cxx11/destdir/lib/libosrm_extract.so)
| ┌ Warning: lib/libosrm_extract.so cannot be dlopen()'ed
Worth seeing whether we can get this thing to build with gcc10 |
Ignoring an issue doesn't solve it. You simply can't build a library with a recent compiler and load it with an older runtime. There's no way around it: just don't do it. |
Why do I get an older runtime when I set the build gcc to v12? |
The runtime is used....at run time, not during the build. It's the gcc runtime shipped with Julia v1.7, which was released months before GCC 12 was a thing. This is the whole point of the compatibility section in the |
So based on the contributing.md document, it seems like Clang doesn't have the same problem with runtime version incompatibilities that gcc does, so maybe that's a solution? Otherwise I'm okay making this only supported on more recent Julia, as it's a fairly specialized package. |
Wrong, clang on Linux uses gcc runtime. |
FWIW, here are the missing symbols in the Mac build, demangled (with
I'm not sure why these are missing, all the osrm:: ones I've checked are defined in both .cpp and .h files. I don't have time tonight, but I'm going to try the build locally and look at the built artifacts to see if anything looks suspicious. |
So, the Mac build failures do appear to be linker problems. All of the |
So, what these symbols have in common is that they're all symbols that come from other dynamic libraries, rather than from |
it is not supported with Julia 1.7 used during build, but it does work with julia 1.8+ specified in our compat entry.
Builds are now succeeding on macOS and Linux. We had to set There are a few more steps before merge:
|
No description provided.