diff --git a/contrib/abi/README.md b/contrib/abi/README.md new file mode 100644 index 00000000..1b09a1a0 --- /dev/null +++ b/contrib/abi/README.md @@ -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/ diff --git a/contrib/abi/libwebsockets.json b/contrib/abi/libwebsockets.json new file mode 100644 index 00000000..c72fda88 --- /dev/null +++ b/contrib/abi/libwebsockets.json @@ -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" + }] +} diff --git a/contrib/abi/lws-abi-update.sh b/contrib/abi/lws-abi-update.sh new file mode 100755 index 00000000..9979f633 --- /dev/null +++ b/contrib/abi/lws-abi-update.sh @@ -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