-
Notifications
You must be signed in to change notification settings - Fork 47
Fix issue #121 #125
Fix issue #121 #125
Conversation
Codecov Report
@@ Coverage Diff @@
## master #125 +/- ##
======================================
Coverage 88.4% 88.4%
======================================
Files 8 8
Lines 647 647
======================================
Hits 572 572
Misses 75 75
Continue to review full report at Codecov.
|
I don't think this fixed the original issue, and there's no logical error in the original while the new ones is actually wrong, it will return 3.4.25 for arbitrary library, for example, see the following session,
The root problem is that you can't test if the ABI symbol exists with My suggestion is that instead of generate an error, just return the minimum version required by Julia (GCC 4.7) if it is unsure which ABI it is. |
Yeah, I was wrong... |
Here is an example showing the problem. It uses C and thus by pass any possible dll issues introduced by Julia.
This is our GCC build, it is of version 8.2
Here's the source of the C test program, it just open the library and look for that symbol, note that it is opened with the same flags as the Julia default flags for Linux
Here's the results. |
I did find |
Yeah, that's the problem. |
Err... probably, we will need a constant build with Julia compiler itself, then we will be able to know which ABI Julia runtime is using. |
I deleted the error and use a warning instead, so at least this will warn people there might be something wrong. (I guess BinaryProvider are mainly used in And as @zhouyan suggested, returns |
This is true, but it's because of a subtle Julia bug (fixed on
This symbol versioning approach is actually what I first implemented, (see the chunk of code immediately above the section changed here) but that requires more advanced Instead of returning |
The original method finds the minimum not the maximum version, because if there are both
GLIBCXX_3.4.1
andGLIBCXX_3.4.24
, then max_version will equal to the first one.This should fix #121