-
-
Notifications
You must be signed in to change notification settings - Fork 495
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
CI: Setup ABI testing #551
base: master
Are you sure you want to change the base?
Conversation
a86a0ba is a simple ABI break in rfbClient which should fail the CI build. |
Nice! I`ll have a look! |
Few thoughts:
|
I think
You are right, we can't go fully dynamic with release tag. Otherwise, when we do want an ABI break, this job will continue to break until next release. Fully manual approach seems have a drawback that we cannot let the reference ABI dump become stale. It has to be updated at-least for each release. Otherwise, we could end up in a situation where a field was added in n+1 version, then got shifted down in n+2 version due to another field, but comparing with version n ABI dump will not catch this break. One solution is to test against a specific commit. This value could be updated whenever we want, e.g. at each release or after expected ABI break. Also, do we have any explicit policy/plans regarding ABI breaks? |
Yeah that sounds reasonable. Basically for this PR please:
then we're done, or?
Yeah, after v1.0.0, see https://github.com/LibVNC/libvncserver/issues?q=is%3Aissue+is%3Aopen+label%3Arework-api |
The problem here is how to make sure the build environment is consistent across different invocation of this script. ABI can be affected by available libraries, or CMake arguments. Any ABI dump we commit to repository will be valid only for that particular environment. For example, I realized today that the CI job doesn't install any SASL library, so current ABI dump doesn't include SASL-related fields of rfbClient. |
How about this:
Updating published ref could be as simple as |
a86a0ba
to
8779729
Compare
8779729
to
9a76c29
Compare
Added initial draft of the script:
|
libvncclient is used in Apache Guacamole and there is an open issue(https://issues.apache.org/jira/browse/GUACAMOLE-1741) related to libvncclient v0.9.14. The issue is pushed to master and is expected to be rolled out in v0.9.15. This is the only thing pending in the milestone, just wanted to check the possible ETA for this. If someone can help me with the timeline it would be great. |
@abhijeetjhalm No real ETA, sorry. You'll be better off if you cherry-pick the needed change until the next release is ready. |
Fixes: #181
This PR adds a CI job to test ABI of client & server libraries. https://github.com/lvc/abi-dumper is used for dumping library ABI, and then https://github.com/lvc/abi-compliance-checker is used to check for any breakage. Both of these are available in Ubuntu repository.
Job Overview
vncclient
&vncserver
targets are built with debug info (required byabi-dumper
to properly parse the library).@bk138 I have included reference ABI dumps in
utils/abi
directory for now (just for testing). These are generated using this job itself. The two text files are ~950KB in total, and could be moved somewhere else.I have temporarily disabled other CI jobs to reduce testing time. I will enable them when this PR is fully ready.