From Fedora Project Wiki
(New wiki page created for abicheck taskotron task)
 
Line 5: Line 5:
For each new [http://koji.fedoraproject.org/koji/ Koji] build, all sub-packages for all architectures (armv7hl, i686 and x86_64) are downloaded along with their debug info packages. Sub-packages of the previous latest stable corresponding build available in koji are downloaded along with their debug info packages as well.
For each new [http://koji.fedoraproject.org/koji/ Koji] build, all sub-packages for all architectures (armv7hl, i686 and x86_64) are downloaded along with their debug info packages. Sub-packages of the previous latest stable corresponding build available in koji are downloaded along with their debug info packages as well.


The task then invokes [https://sourceware.org/libabigail/manual/abipkgdiff.html abipkgdiff] tool to compare the ABIs of each new sub-package against its previous stable counterpart. The ABI comparison is only performed on shared libraries presents in those packages.
The task then invokes the [https://sourceware.org/libabigail/manual/abipkgdiff.html abipkgdiff] tool to compare the ABIs of each new sub-package against its previous stable counterpart. The ABI comparison is only performed on shared libraries presents in those packages.


= Known deficiencies =
= Known deficiencies =

Revision as of 08:18, 28 May 2016

Introduction

The abicheck task helps verify that the Application Binary Interface (a.k.a. ABI) of newer versions of Fedora C and C++ shared libraries stays compatible with previous versions. This task is executed when a new Fedora package update is submitted.

How does abicheck task work?

For each new Koji build, all sub-packages for all architectures (armv7hl, i686 and x86_64) are downloaded along with their debug info packages. Sub-packages of the previous latest stable corresponding build available in koji are downloaded along with their debug info packages as well.

The task then invokes the abipkgdiff tool to compare the ABIs of each new sub-package against its previous stable counterpart. The ABI comparison is only performed on shared libraries presents in those packages.

Known deficiencies

Comparing the ABI of two shared libraries involves performing a deep static analysis of the binaries and their debug information. Information about (possibly all) types and declarations present in the binaries are loaded in main memory and analyzed. The bigger the library and its debug information, the more memory is needed to perform the analysis.

The amount of memory needed by the abipkgdiff tool can vary from a few Kilobytes for small libraries to many Gigabytes for huge libraries.

Right now, taskotron executes the abicheck task on a system with 6GB of RAM. This task will fail to run if the amount of memory required for ABI comparison is greater than 6 GB.

Dealing with Result

Outcome of abicheck task run can be PASSED, FAILED or NEEDS_INSPECTION. Depending upon outcome, following action should be taken:

  • PASSED: No ABI changes found. No review of ABI diff logs required
  • FAILED: Incompatible ABI changes has been found in one or more libraries. Having these changes may break other dependent packages.Thorough review of incompatible ABI changes are required. Please provide justification for these ABI changes or fix such changes and update a new build with fix.
  • NEEDS_INSPECTION: ABI changes exist which may or may not break other packages. Recommended to look into ABI diff log and verify same.

Getting Help

For further help on understanding ABI diff logs, Subscribe to libabigail Mailing List and send an email to <libabigail@sourceware.org>. You can also ask us on IRC channel by joining #libabigail on OFTC

If you see any issue in generated ABI diff log, please report a bug to libabigail's bugzilla

For any feature request, create an issue at pagure

Additional Information

  • Browse abicheck taskotron task source code at pagure