Re: Maintaining ABI Compatibility for LTS branch


Richard Purdie
 

On Sun, 2022-02-06 at 20:14 -0500, Sinan Kaya wrote:
One of the limitations of Yocto LTS branch is that there is no
guaranteed backwards compatibility. Therefore, any time we move a branch
forward to move to latest dunfell release, we are taking a risk of
breaking our customers.
Whilst there isn't a guarantee, it is something we're doing our best to ensure.
Where there are security issues and we can't fix them as being backwards
compatible, we reserve the right to break things in preference to the security
issues. We wouldn't do that lightly.

Yocto reserves the right to move a package version forward if a
security fix cannot be applied properly as an example.
It also comes down to resources. If we have a choice between this and not fixing
the issue, we'd have to do this. If there are resources to do a more precision
backport, we'd take that option but we're often resource limited.

This promise is being held true on the kernel by running kernel API
tests etc. and running test benches across different CI environments.
We do run extensive tests on the autobuilder including things like LTP. We
admittedly lack resources for analysing the comparisions in an automated or
manual way sadly. I'd love to see API/ABI reporting added to our builds.

I was curious about how everyone is approaching this problem.
There was some attempt to bring ABI checking functionality in the past
but this has never been merged.
There have been ideas proposed but I've not seen any full solution as yet.

Is everyone rolling their own solution? or never moving forward?
I think most are just accepting some level of change and we've tried to keep it
to a minimal level.

I mentioned this in yesterdays call and these were mentioned:

https://github.com/lvc/abi-compliance-checkerĀ 
https://abi-laboratory.pro/index.php?view=tracker

There are two reasons people are interested:

a) for release stability as you mention
b) for performance as it could be tied into the hash equivalence mechanism for
artefact reuse - if A hasn't changed ABI, B dependning on it needn't rebuild.

There was a proof of concept of b) here:
https://lists.yoctoproject.org/g/yocto/message/52650

There are lots of levels it could be implemented at but it is something someone
would need to pick up and drive forward with a long term view to helping with
issues etc.

Cheers,

Richard

Join {yocto@lists.yoctoproject.org to automatically receive all group messages.