Re: A new tool for backward compatibility analysis of API/ABI interfaces in Deb packages
06.10.2016, 15:32, "Ponomarenko Andrey":
> 06.10.2016, 07:54, "Paul Wise":
>> On Wed, Oct 5, 2016 at 11:00 PM, Ponomarenko Andrey wrote:
>>> I'd like to present a new free tool for maintainers of software libraries — Package ABI Diff Tool (Pkg-ABIdiff). It's a tool for backward compatibility analysis of API/ABI interfaces in Deb packages. The tool is based on ABI Compliance Checker and ABI Dumper tools.
>> Does this have any advantages over abipkgdiff from the abigail-tools
>> Debian package already in Debian?
>> BTW, I think it would be really interesting to run
>> pkg-abidiff/abipkgdiff over the whole Debian archive and possibly use
>> that to inform the release team of uncaught ABI changes.
> I guess, checks for more compatibility rules, less false positives, visual reports, problem severity levels and separated analysis of both backward binary compatibility and backward source compatibility are main advantages of the pkg-abidiff. The disadvantage is that pkg-abidiff may not be as fast as abipkgdiff, because pkg-abidiff is written in Python, but abipkgdiff is written in C++.
> The tools are based on different software stacks. The pkg-abidiff is based on ABI Compliance Checker and ABI Dumper tools (https://github.com/lvc) developed since 2009. The abipkgdiff is based on libabigail developed since 2013. So, implementations and reports are completely different.
> Anyway, it's better to run both tools on all packages at the same time and verify reports of each other.
> Thank you.
After a closer look at the source code, reports and docs of abipkgdiff / libabigail tools I can list more pros and cons of https://github.com/lvc/pkg-abidiff / abi-compliance-checker:
- separated analysis of both backward binary compatibility and backward source compatibility
- assigning severity levels to ABI changes
- explaining effects of ABI changes
- checks for more compatibility rules
- less false positives
- visual reports
- grouping of affected ABI interfaces by root cause (usually a change in the structure of data type), so the output report is more compact and easy to review
- estimating total compatibility rate of an object
- may be slower and consume more RAM memory than libabigail tools due to implementation language (C++ vs Python/Perl/C)
- the generation of output report is not configurable (can't pass any additional options to abi-compliance-checker via cli interface of pkg-abidiff)
- no option to generate detailed plain-text report (only console output and summary report in JSON format are present)