-
Notifications
You must be signed in to change notification settings - Fork 566
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
build: Test ABI compliance #3983
Conversation
This patch adds a new test to the matrix: verifying that we do not break the ABI during releases. Basically, in addition to the current checkout, it also builds a checkout of the designated "ABI standard" (generally, the first non-beta release of a major version), then generates ABI dumps of both versions and runs the ABI compliance checker using the tools from https://github.com/lvc Making two builds sounds expensive, but both builds are rigged to be minimal, since only the main two libraries are needed for ABI checks (we can turn off the binary tools, unit tests, python bindings, and support for many formats), and of course the test suite need not run. So actually, it's less expensive than most of the test matrix entries, and it helps ensure that we don't accidentally break ABI when we don't mean to. Signed-off-by: Larry Gritz <lg@larrygritz.com>
Any opinions about this methodology? |
Looks good to me! Interested in the output. I'm assuming added functions should not cause a failure, correct? Only removed or modified ones. |
We always use https://abi-laboratory.pro when checking why something broke with open source libraries so 👍 big fan here. I've been meaning to bring this up for the aswf because it would be great to have all the libraries on their graphs and up to date. Openimageio and EXR hasn't been updated since 2020. https://abi-laboratory.pro/index.php?view=timeline&l=oiio |
Yes, the intent is not to fail for additions. |
This patch adds a new test to the CI matrix: verifying that we do not break the ABI during releases. Basically, in addition to building the current checkout, it also builds a checkout of the designated "ABI standard" (generally, the first non-beta release of a major version), then generates ABI dumps of both versions and runs the ABI compliance checker using the tools from https://github.com/lvc Making two builds sounds expensive, but both builds are rigged to be minimal, since only the main two libraries are needed for ABI checks (we can turn off the binary tools, unit tests, python bindings, and support for many formats), and of course the test suite need not run. So actually, it's less expensive than most of the test matrix entries, and it helps ensure that we don't accidentally break ABI when we don't mean to. I'm not sure how many false positives we'll have. We might need to adjust the methodology slightly as we gain experience with this. Signed-off-by: Larry Gritz <lg@larrygritz.com>
…ftwareFoundation#3988) This patch adds a new test to the CI matrix: verifying that we do not break the ABI during releases. Basically, in addition to building the current checkout, it also builds a checkout of the designated "ABI standard" (generally, the first non-beta release of a major version), then generates ABI dumps of both versions and runs the ABI compliance checker using the tools from https://github.com/lvc Making two builds sounds expensive, but both builds are rigged to be minimal, since only the main two libraries are needed for ABI checks (we can turn off the binary tools, unit tests, python bindings, and support for many formats), and of course the test suite need not run. So actually, it's less expensive than most of the test matrix entries, and it helps ensure that we don't accidentally break ABI when we don't mean to. I'm not sure how many false positives we'll have. We might need to adjust the methodology slightly as we gain experience with this. Signed-off-by: Larry Gritz <lg@larrygritz.com>
This patch adds a new test to the CI matrix: verifying that we do not break the ABI during releases.
Basically, in addition to building the current checkout, it also builds a checkout of the designated "ABI standard" (generally, the first non-beta release of a major version), then generates ABI dumps of both versions and runs the ABI compliance checker using the tools from https://github.com/lvc
Making two builds sounds expensive, but both builds are rigged to be minimal, since only the main two libraries are needed for ABI checks (we can turn off the binary tools, unit tests, python bindings, and support for many formats), and of course the test suite need not run. So actually, it's less expensive than most of the test matrix entries, and it helps ensure that we don't accidentally break ABI when we don't mean to.
I'm not sure how many false positives we'll have. We might need to adjust the methodology slightly as we gain experience with this.