[libcamera-devel,v3,0/3] Use x.y soname versioning
mbox series

Message ID 20230704142435.3490823-1-kieran.bingham@ideasonboard.com
Headers show
Series
  • Use x.y soname versioning
Related show

Message

Kieran Bingham July 4, 2023, 2:24 p.m. UTC
Users of libcamera will benefit from not having to recompile
applications and frameworks against every new release point of
libcamera. While we don't yet mandate a stable ABI we are currently
incrementing the SONAME for 'every release'.

With automatic ABI breakage detection we can improve this situation so
that we only increment the SONAME when there is an ABI breakage.

This will extend the compatibilty of applications for longer and reduce
the burden on application writers and packagers, and by incrementing the
minor number on any breakage point we can make clear human readable
indicators of what versions are compatible.

We retain the leading 'major version 0' to indicate we are not yet
feature complete.

The abi-compat script currently produces an HTML file, but can be
adapted later to output XML and be processed by any additional automated
tooling that might be suitable to report directly on patches and
branches when ABI breakages occur.

v3 introduces a key fix to the libcamera-base header installation to
prevent abi-compliance-check trying to parse private headers. This
itself makes abi-compliance-check believe there is a large API change as
many headers are no longer installed (though they were never available
for applications to use before anyway).

The abi-compat.sh script has been fixed up with all review comments and
fixed to run on platforms with different libdir defaults.


Kieran Bingham (3):
  include: base: Do not install private headers
  utils: ABI Compatibility checker
  meson: Use x.y soname versioning

 include/libcamera/base/meson.build |  28 ++--
 meson.build                        |  10 +-
 utils/abi-compat.sh                | 212 +++++++++++++++++++++++++++++
 3 files changed, 234 insertions(+), 16 deletions(-)
 create mode 100755 utils/abi-compat.sh