[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Stable library ABI compatibility checking


  • To: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Thu, 11 Feb 2021 01:08:02 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=h4Rb2NlNlrWX/8HboqWgNxrgkJDnC9nh/PCJWVmgfRg=; b=G2LugsQN7g88NwBt8snmzrweGx6xzZEyvHbRbTunKmLQRyoOeQrmB1/IKeDteVa8zDe7Xroqy/0UwmPzScx45g35meiIrfF3m+dPSqVe9KvscTE5THgBmNvul5s7b3+PNMxyaqtxriw9e8iYuGYjYtH1z1Abl07UFwGdT/OEo4xYpgs8oVNaQ4kzeoYTEQzTp39q4dS52l3S1r05LlfelGe2PcIQHxsAwbdonKql/gFxAJq/W+QS7ONqZuWsRmC95+ENS2YFzP/gTztyeFaMuUUZWRB+3N4oV5Nc/unKZEeiCbbbPmloSbQg3q2GZzgd2cLKl/FDhU/x26XUL0J/1g==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P/ouGc3t4Vd0ouoEiYHwKFBH2VSPxFbgZXKYYUH6gFbHTPaDuzW+ClCTLpNevYdHzzEd9V+I7QjkcRRDMtQlMxy0K/SYChJqjH1DKqhTZ82pm+D7zzZzppnnh02gUsFRAKwiAzXRq1i/lik5PlH+qH+hc8SWk8wf29QQXOgRxM8nk27t/KCfBvArAGqMJEscotbPBflpFn9cvjNv+gX3JwCAD9nggnoPK5AdvrhpBRcep4mdeZ2AE5RTVVu6WY3fS1eNaD1qWeZ09mXBhxoYi/uaWbfpcuy2TGsmM8XgMnaMfj7BsFeAhF2xPt3s38gedn/MiMXwAwoBm1upImcNHg==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Ian Jackson <iwj@xxxxxxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>
  • Delivery-date: Thu, 11 Feb 2021 01:08:35 +0000
  • Ironport-sdr: DqxFU/Mg61dDQZT9r2vtkB46ZRXThQzEWxTbygXes+Ace5Ea42gb5uRvcsXz8fmRKx0zNcvUzk vIFgv/CyF63ykiWcWZKwSiiiyjaUImr0TTLJElIbczoUpUlSNxzeMXTYVlF5fvl+4gw44Emfm3 iAtvSBwq3VvkyvMyHxuEF6B0WmiqzA/CwHmmbVhtWueb4G/qsF8GyWyctodZtMKb4j23f5CWV/ MsAfZIJbwETPa77NaqeBZ6vxeNDwug2W9bZ7ftfVsjQ8qgEQ4PXEpIcKKHNcyUYOzvYZaPfTRX vB0=
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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?

~Andrew



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.