[libcamera-devel] [PATCH] meson: Use x.y soname versioning
Kieran Bingham
kieran.bingham at ideasonboard.com
Mon May 1 14:25:14 CEST 2023
Quoting Laurent Pinchart (2023-05-01 12:55:56)
> Hi Kieran,
>
> Thank you for the patch.
>
> On Mon, May 01, 2023 at 12:44:52PM +0100, Kieran Bingham via libcamera-devel wrote:
> > Now that we identify ABI breakages,
>
> Can you explain how so ? Ideally I'd like a script in the utils/
> directory to handle the ABI checks.
I have this snippet in a local Makefile.
"""
VERSION:=$(shell ./utils/gen-version.sh)
abi-dump:
echo Version : $(VERSION)
mkdir -p abi/$(VERSION)/
meson abi/build \
-Ddocumentation=disabled \
-Dcam=disabled \
-Dqcam=disabled \
-Dgstreamer=disabled \
-Dlc-compliance=disabled \
-Dtracing=disabled \
-Dpipelines=
ninja -C abi/build
DESTDIR=$(shell pwd)/abi/$(VERSION)/ ninja -C abi/build install
cat libcamera-abi-dump.xml.in | sed 's/VERSION/$(VERSION)/g' > libcamera-abi-dump.xml
abi-compliance-checker \
-lib libcamera \
-v1 $(VERSION) \
-dump libcamera-abi-dump.xml \
-dump-path ./abi/v$(VERSION).abi.dump
RELEASE_ABI=$(shell ./utils/semver get release $(VERSION))
abi-check:
abi-compliance-checker -l libcamera \
-old abi/v$(RELEASE_ABI).abi.dump \
-new abi/v$(VERSION).abi.dump
"""
Where 'libcamera-abi-dump.xml.in' contains:
"""
<version>VERSION</version>
<headers>abi/VERSION/usr/local/include/</headers>
<libs>abi/VERSION/usr/local/lib/</libs>
"""
The main issue is storing (or regenerating) previous versions of the ABI
dump files to compare against.
The abi-check produces an HTML 'report' which likely needs to be read by
the caller, or have something scrape for the detail, so there's still a
lot of manual steps involved for now.
--
Kieran
>
> > provide incremental releases which
> > can support backwards compatible linkage across release points that have
> > a compatible ABI.
> >
> > Introduction of this commit does not convey that libcamera now has a
> > stable API, but that patch releases with a common minor number
> > (0.minor.patch) may potentially be used by applications without
> > recompilation and linkage against new releases.
> >
> > Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> > ---
> > meson.build | 10 ++++------
> > 1 file changed, 4 insertions(+), 6 deletions(-)
> >
> > diff --git a/meson.build b/meson.build
> > index 6e363a906c69..4afe7d1624a7 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -56,15 +56,13 @@ if libcamera_version != project_version
> > libcamera_git_version += '-nvm'
> > endif
> >
> > -# Until we make ABI compatible releases, the full libcamera version is used as
> > -# the soname. No ABI/API compatibility is guaranteed between releases (x.y.z).
> > -#
> > -# When automatic ABI based detection is used to increment the version, this
> > -# will bump the minor number (x.y).
> > +# The major and minor libcamera version components are used as the soname.
> > +# No ABI/API compatibility is guaranteed between releases (x.y).
> > #
> > # When we declare a stable ABI/API we will provide a 1.0 release and the
> > # soversion at that point will be the 'major' release value (x).
> > -libcamera_soversion = libcamera_version
> > +semver = libcamera_version.split('.')
> > +libcamera_soversion = semver[0] + '.' + semver[1]
> >
> > summary({ 'Sources': libcamera_git_version, }, section : 'Versions')
> >
>
> --
> Regards,
>
> Laurent Pinchart
More information about the libcamera-devel
mailing list