From afda4f6c44236d08b99216d450c36c583418a1bf Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Mon, 18 Apr 2016 14:32:55 +0100 Subject: [PATCH] Script and config to make tracking ABI/API changes easy. --- contrib/abi/README.md | 48 ++++++++++++++++++++++++++++++++++ contrib/abi/libwebsockets.json | 5 ++++ contrib/abi/lws-abi-update.sh | 3 +++ 3 files changed, 56 insertions(+) create mode 100644 contrib/abi/README.md create mode 100644 contrib/abi/libwebsockets.json create mode 100755 contrib/abi/lws-abi-update.sh diff --git a/contrib/abi/README.md b/contrib/abi/README.md new file mode 100644 index 000000000..bacb70738 --- /dev/null +++ b/contrib/abi/README.md @@ -0,0 +1,48 @@ +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. + + +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 abi-tracker + +It will also list any dependencies that you need to install through normal +means. + + +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/ diff --git a/contrib/abi/libwebsockets.json b/contrib/abi/libwebsockets.json new file mode 100644 index 000000000..9fefc3dfc --- /dev/null +++ b/contrib/abi/libwebsockets.json @@ -0,0 +1,5 @@ +{ + "Name": "libwebsockets", + "SourceUrl": "https://github.com/warmcat/libwebsockets/releases", + "Git": "https://github.com/warmcat/libwebsockets", +} diff --git a/contrib/abi/lws-abi-update.sh b/contrib/abi/lws-abi-update.sh new file mode 100755 index 000000000..30342f44e --- /dev/null +++ b/contrib/abi/lws-abi-update.sh @@ -0,0 +1,3 @@ +abi-monitor -get -build-new libwebsockets.json +abi-tracker -build libwebsockets.json +#abi-tracker -deploy /path/to/htdocs libwebsockets.json