-
Notifications
You must be signed in to change notification settings - Fork 281
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
ABI compatibility checker #917
base: 0.27-maintenance
Are you sure you want to change the base?
Conversation
Codecov Report
@@ Coverage Diff @@
## 0.27-maintenance #917 +/- ##
====================================================
- Coverage 63.36% 62.94% -0.42%
====================================================
Files 159 157 -2
Lines 23046 21618 -1428
====================================================
- Hits 14603 13608 -995
+ Misses 8443 8010 -433
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a great addition to the project!
# abi-dumper complains if we don't pass -Og | ||
CXXFLAGS: "-Og -g3 -gstrict-dwarf" | ||
CFLAGS: "-Og -g3 -gstrict-dwarf" | ||
# enabling curl is broken on 0.27 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it broken when consuming it from a system-package? from conan? both? Would you mind to create a ticket about this? I could check this issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's broken when I checkout the tag directly, not from a system package and haven't tried conan.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with @piponazo This is a wonderful addition to the CI machinery. Let's enable it on 0.27-maintenance once v0.27.2 has been released and we'll aim to retain that API/ABI for the rest of "the dots".
At the moment, there are 4000 external symbols (from about 26000 in total). I suspect there is an architecture to drastically reduce the API and enable us to add/remove/deprecate interfaces. For example COM (yes, it's ancient Microsoft Technology) uses QueryInterface(UUID) to say "Do you have this Interface". Almost everything in the library could be hidden (from an external point of view).
Perhaps we could introduce a new architecture with v0.28 as the prototype v1.0 API. I wonder how other libraries deal with this?
Thanks to the amazing help provided by @lvc, I've been able to get this running on GitLab. The solution to the problem was a bug in abi-dumper that caused issues with the pretty recent version of elfutils that is shipped by Fedora 30. I've worked around this issue by temporarily using the Fedora 29 container. Let's see what the GitLab stage reports. |
Nope, the issue is also present on Fedora 29, I'll have to update the package on Fedora and then this will start working (fingers crossed). |
e6431bc
to
db730e2
Compare
The abi compliance stage on GitLab succeded insofar as it now reports an error as 0.27 and 0.27-maintenance are not binary compatible. So how should we approach this? Fix the ABI issues or just drop this? |
Great @D4N ! If the issue is easy to solve I would propose to fix it. We can create an issue about the specific issue, target it for the next dot release, and hopefully some of us could dedicate some time to it. If the issue is too complex to solve, then we can discuss more about what to do. |
6f136be
to
69f4634
Compare
This is a draft of a job on GitLab CI for the
0.27-maintenance
branch that runs abi-compliance-checker to check the difference between the current state and the 0.27 tag. If there are notable differences, then the job fails. It furthermore uploads the report as an artifact for inspection.Currently this doesn't work correctly yet, as the report doesn't contain any useful information at all. Maybe @cryptomilk can provide some insight to what I've missed?