Script and config to make tracking ABI/API changes easy.
AG: enhance the script a bit and fix the make instructions
This commit is contained in:
parent
c673125ce0
commit
c6496b2510
3 changed files with 176 additions and 0 deletions
52
contrib/abi/README.md
Normal file
52
contrib/abi/README.md
Normal file
|
@ -0,0 +1,52 @@
|
|||
ABI Compatility Tracking
|
||||
========================
|
||||
|
||||
This directory contains files that can be used to generate an ABI compatibility
|
||||
timeline for libwebsockets. This gives users an idea of where the library has
|
||||
changed and can be used by the developers to see when incompatible changes have
|
||||
been introduced and either increase the library SO version or fix the changes.
|
||||
|
||||
The tools used are the abi-\* family available at https://github.com/lvc/ and
|
||||
some example output is here: http://abi-laboratory.pro/tracker/timeline/libuv/
|
||||
|
||||
The tools download existing source tarballs and git repository to generate this
|
||||
data, so past versions are compared and in-development code can be compared as
|
||||
well.
|
||||
|
||||
Although the application is not being included here, FYI the license is dual
|
||||
LGPL2 / GPL2 at your choice.
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
The author provides an easy way to install the various tools he provides:
|
||||
|
||||
git clone https://github.com/lvc/installer
|
||||
cd installer
|
||||
make prefix=/usr/local target=abi-tracker
|
||||
|
||||
It will also list any dependencies that you need to install through normal
|
||||
means. (Although in the case of needing "elfutils-libelf-devel", it may
|
||||
crash during install of vtable-dumper without giving a nice list)
|
||||
|
||||
|
||||
Generating the output
|
||||
---------------------
|
||||
|
||||
Use the `lws-abi-update.sh` script to download the source files, build them and
|
||||
generate the output html. The output can be deployed to a directory on a web
|
||||
server for example. Modify the commented line in lws-abi-update.sh to do this.
|
||||
|
||||
As it is configured, lws-abi-update.sh will only download new source - ones
|
||||
that it hasn't built before - so is suitable for use with a cron job.
|
||||
|
||||
|
||||
Viewing the output
|
||||
------------------
|
||||
|
||||
The best place to start looking at the data is the `timeline/libwebsockets`
|
||||
directory. If your path is on a web server, navigate there, otherwise you could
|
||||
try:
|
||||
|
||||
lynx timeline/libwebsockets/
|
107
contrib/abi/libwebsockets.json
Normal file
107
contrib/abi/libwebsockets.json
Normal file
|
@ -0,0 +1,107 @@
|
|||
{
|
||||
"Name": "libwebsockets",
|
||||
"SourceUrl": "https://github.com/warmcat/libwebsockets/releases",
|
||||
"Git": "https://github.com/warmcat/libwebsockets",
|
||||
|
||||
"Versions": [
|
||||
{
|
||||
"Number": "current",
|
||||
"Installed": "installed/libwebsockets/current",
|
||||
"Source": "src/libwebsockets/current",
|
||||
"Changelog": "On",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.7.4",
|
||||
"Installed": "installed/libwebsockets/1.7.4",
|
||||
"Source": "src/libwebsockets/1.7.4/libwebsockets-1.7.4.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.7.3",
|
||||
"Installed": "installed/libwebsockets/1.7.3",
|
||||
"Source": "src/libwebsockets/1.7.3/libwebsockets-1.7.3.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.7.2",
|
||||
"Installed": "installed/libwebsockets/1.7.2",
|
||||
"Source": "src/libwebsockets/1.7.2/libwebsockets-1.7.2.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.7.1",
|
||||
"Installed": "installed/libwebsockets/1.7.1",
|
||||
"Source": "src/libwebsockets/1.7.1/libwebsockets-1.7.1.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.7.0",
|
||||
"Installed": "installed/libwebsockets/1.7.0",
|
||||
"Source": "src/libwebsockets/1.7.0/libwebsockets-1.7.0.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.6.3",
|
||||
"Installed": "installed/libwebsockets/1.6.3",
|
||||
"Source": "src/libwebsockets/1.6.3/libwebsockets-1.6.3.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.6.2",
|
||||
"Installed": "installed/libwebsockets/1.6.2",
|
||||
"Source": "src/libwebsockets/1.6.2/libwebsockets-1.6.2.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.6.1",
|
||||
"Installed": "installed/libwebsockets/1.6.1",
|
||||
"Source": "src/libwebsockets/1.6.1/libwebsockets-1.6.1.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
},
|
||||
{
|
||||
"Number": "1.5.1",
|
||||
"Installed": "installed/libwebsockets/1.5.1",
|
||||
"Source": "src/libwebsockets/1.5.1/libwebsockets-1.5.1.tar.gz",
|
||||
"Changelog": "Off",
|
||||
"HeadersDiff": "On",
|
||||
"PkgDiff": "Off",
|
||||
"ABIView": "Off",
|
||||
"ABIDiff": "Off"
|
||||
}]
|
||||
}
|
17
contrib/abi/lws-abi-update.sh
Executable file
17
contrib/abi/lws-abi-update.sh
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh
|
||||
|
||||
if [ ! -z "$1" ] ; then
|
||||
OUT=$1
|
||||
else
|
||||
OUT="/tmp/lws-abi-track-htdocs"
|
||||
fi
|
||||
|
||||
D=`dirname $0`
|
||||
if [ ! -z "$D" ] ; then
|
||||
D=$D/
|
||||
fi
|
||||
J=$D"libwebsockets.json"
|
||||
|
||||
abi-monitor -get -build-new $J
|
||||
abi-tracker -build $J
|
||||
abi-tracker -deploy $OUT $J
|
Loading…
Add table
Reference in a new issue