Checking the ABI of packages submitted to the updates-testing Fedora repository

Dodji Seketeli dodji at seketeli.org
Fri Jun 5 08:34:19 UTC 2015


Hello,

Following up on the ABI checking topic raised in the "API Break
Detection" section near the end of the post
https://lists.fedoraproject.org/pipermail/server/2015-June/001904.html,
I'd like to summarize where we stand at the moment and what we plan do.

We discussed this topic on the #fedoral-devel IRC channel yesterday and
here is what stuck to my mind.  Others are of course welcome to add what
I have forgotten and to correct me when I a wrong.

To start, we'd like to have an automated way to check the ABI
compatibility of binaries embedded in packages that are submitted to the
updates-testing repository.  When an incompatible change[1] is detected,
the package will be prevented from auto-increasing it's karma count.  I
guess a manual intervention will then be required to increase the karma
or a new package version needs to be submitted again.

Under the hood, the current informal plan seems to be to come up with a
Taskotron checking task, which, for a given package named P, will
compare the ABIs of the binaries embedded in P against their
counterparts in the latest known stable version of P that is present in
the stable repository.  The result of the comparison shall be a report
showing the ABI difference of the offending binaries, if those changes
are deemed harmful or possibly harmful, from an ABI compatibility
standpoint.

At this moment, we do have a command line tool named "abidiff"[2] that
knows how to compare two shared library binaries and emits a report
about the differences in their ABI.  That tool needs the debug info of
the binaries too.  We are currently working on a tool named
"abipkgdiff"[3] that takes two RPMs and compares the shared library
binaries. That tool should be ready enough (hopefully) in the coming
days.

When the "abipkgdiff" command line tool is ready , I guess the plan is
to use it in a new Taskotron task that, when invoked on a given package,
gets the stable version of that package as well as the debuginfo
packages from koji, executes abipkgdiff to compare the package against
it's stable version and emits the resulting report.

So, that is the first "baby step" we talked about.

There are obviously going to be many other baby steps coming up, and
I'll write something about them a little bit later on this topic,
possibly in the wiki, rather.  Needless to say, even the baby steps in
this note need to be refined, I guess we'll do that on the wiki some
where.  But until then, I thought I'd drop this note to let you know
where we stand.

Thank you for reading so far.

[1]: A change in a the ABI of a shared library is considered
"compatible", if an application linked with the older version of the
library is still going to function reliably when executed against the
newer version of the library, without being re-linked.  Otherwise, the
ABI change is considered "incompatible".

[2]: abidiff manual documentation can be consulted at
https://sourceware.org/libabigail/manual/abidiff.html

[3]: abipkgdiff is being hacked on by Sinny Kumari in a branch of the
upstream libabigail git repo at
https://sourceware.org/git/gitweb.cgi?p=libabigail.git;a=shortlog;h=refs/heads/sinny/abipkgdiff

-- 
		Dodji


More information about the devel mailing list