[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Stable library ABI compatibility checking
On 11.02.2021 12:30, Andrew Cooper wrote: > On 11/02/2021 11:05, Jan Beulich wrote: >> On 11.02.2021 02:08, Andrew Cooper wrote: >>> Hello, >>> >>> Last things first, some examples: >>> >>> http://xenbits.xen.org/people/andrewcoop/abi/libxenevtchn-1.1_to_1.2.html >>> http://xenbits.xen.org/people/andrewcoop/abi/libxenforeignmemory-1.3_to_1.4.html >>> >>> These are an ABI compatibility report between RELEASE-4.14.0 and staging. >>> >>> They're performed with abi-dumper (takes a shared object and header >>> file(s) and write out a text "dump" file which happens to be a perl >>> hash) and abi-compliance-checker checker, which takes two dumps and >>> produces the HTML reports linked above. They're both debian tools >>> originally, but have found their way across the ecosystem. They have no >>> impact on build time (when invoked correctly). >>> >>> I'm encouraged to see that the foreignmem analysis has even spotted that >>> we deliberately renamed one parameter to clarify its purpose. >>> >>> >>> For the stable libraries, the RELEASE-$X.$Y.0 tag is the formal point >>> when accumulated changes in staging become fixed. What we ought to be >>> doing is taking a "dump" of libraries at this point, and publishing >>> them, probably on xenbits. >>> >>> Subsequent builds on all the staging branches should be performing an >>> ABI check against the appropriate lib version. This will let us catch >>> breakages in staging (c/s e8af54084586f4) as well as breakages if we >>> ever need to backport changes to the libs. >>> >>> For libraries wrapped by Juergen's tools/libs/ common-makefile changes, >>> adding ABI dumping is easy. The only complicating is needing to build >>> everything with "-Og -g", but this is easy to arrange, and frankly ought >>> to be the default for debug builds anyway (the current use of -O0 is >>> silly and interferes with common distro hardening settings). >>> >>> What I propose is tweaking the library build to write out >>> lib$FOO.so.$X.$Y-$(ARCH).abi.dump files. A pristine set of these should >>> be put somewhere on xenbits, and a task put on the release technicians >>> checklist for future releases. >>> >>> That way, subsequent builds which have these tools available can include >>> a call to abi-compliance-checker between the authoritative copy and the >>> one from the local build, which will make the report available, and exit >>> nonzero on breaking problems. >>> >>> >>> To make the pristine set, I need to retrofit the tooling to 4.14 and >>> ideally 4.13. This is in contravention to our normal policy of not >>> backporting features, but I think, being optional build-time-only >>> tooling, it is worthy of an exception considering the gains we get >>> (specifically - to be able to check for ABI breakages on these branches >>> in OSSTest). Backporting to 4.12 and older is far more invasive, due to >>> it being before the library build systems were common'd. >>> >>> >>> Anyway, thoughts? >> +1 >> >> Not sure about the backporting effects - tools/libs/ had quite a bit >> less content in 4.14 and older, so the coverage would be smaller. > > tools/libs/ has been the stable libraries, since IanC split them years > ago. The only odd-one-out is libxenstored IIRC, which moved during the > 4.15 window. As well as ctrl/, guest/, light/, stat/, util/, and vchan/. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |