Skip to content
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

Merged
merged 1 commit into from
Sep 16, 2023

Conversation

lgritz
Copy link
Collaborator

@lgritz lgritz commented Sep 12, 2023

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.

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>
@lgritz
Copy link
Collaborator Author

lgritz commented Sep 14, 2023

Any opinions about this methodology?

@hobbes1069
Copy link
Contributor

Looks good to me! Interested in the output. I'm assuming added functions should not cause a failure, correct? Only removed or modified ones.

@dekekincaid
Copy link

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
https://abi-laboratory.pro/index.php?view=timeline&l=openexr

@lgritz
Copy link
Collaborator Author

lgritz commented Sep 14, 2023

Yes, the intent is not to fail for additions.

@lgritz lgritz merged commit 02cf9e4 into AcademySoftwareFoundation:master Sep 16, 2023
24 checks passed
lgritz added a commit to lgritz/OpenImageIO that referenced this pull request Sep 17, 2023
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>
lgritz added a commit to lgritz/OpenImageIO that referenced this pull request Sep 17, 2023
…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>
@lgritz lgritz deleted the lg-abicheck branch September 17, 2023 17:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants