dh-autoreconf is an amazing addon for running autoreconf, I just love it.
abi-compliance-checker is an amazing tool for tracking API/ABI.
Wouldn't it be great to glue abi-compliance-checker into dh / cdbs packaging?!
abi-compliance-checker is an amazing tool for tracking API/ABI.
Wouldn't it be great to glue abi-compliance-checker into dh / cdbs packaging?!
Horay! So how does one use it?abi-compliance-checker (1.98.8-1~exp1) experimental; urgency=low
.
* New upstream release
* Add dh_acc to generate and compare library dumps at build time,
together with addons for dh(7) and cdbs.
* Bump standards version, bump debhelper to 9, use 3.0 (quilt) format,
update Vcs-Svn field to canonical form, remove obsolete
DM-Upload-Allowed.
* Apply a patch to allow suffixes on a-c-c abi dumps.
- build-depend on dh-acc
- In your debian/rules
- call dh_acc somewhere appropriate
- dh $@ --with acc
- include /usr/share/cdbs/1/rules/acc.mk
- In your debian/libpackage-dev.acc
- Write a abi-compliance-checker descriptor (no need to include version)
- Build your package
- Copy the generated /usr/lib/$(multiarch)/dh-acc/*.abi.tar.gz as ./debian/lib-package-dev.abi.tar.gz.ARCH
- Now at each build ABI/API checks will be executed and compat reports will be generated
An example xml descriptor for libapt-pkg-dev is:
<?xml version="1.0" encoding="utf-8"?>
<descriptor>
<headers>
./build/include/apt-pkg/
</headers>
<libs>
./build/bin/
</libs>
<skip_types>
SubstVar
</skip_types>
</descriptor>
I wonder if things can be improved, for example:
- For trivial packages, don't require .acc at all & simply point abi-compiance-checker at ./debian/tmp/
- I think logs currently pollute the unpacked source package
- Multiple "base" ABI need checking. E.g. given versions A, B, C one can introduce a new symbol in B and drop it in C. Both B & C are compatible with A, but C is not compatible with B, thus an API/ABI break got introduced into the distribution if all A,B,C were ever published in the archive.
- Maybe run these as DEP-8 autopkgtests as well?
On a wider scope of things abi-compliance-checker allows to create "system" abi dumps & also check applications for ABI/API compliance. For example, one could scan deb packages to see if they are still compatible between major Debian Releases for some known install type (e.g. a default full Gnome Desktop), or we could scan proprietary packages to see if they are compatible (e.g. games delivered via Steam by Valve to multiple Ubuntu releases), and we can continuously monitor OS ABI to make sure we don't unknowingly break it with security and bugfix updates.
Please, play around with dh-acc and let me know what you think =)
Comments
Post a Comment