• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1ABI Compatility Tracking
2========================
3
4This directory contains files that can be used to generate an ABI compatibility
5timeline for libwebsockets. This gives users an idea of where the library has
6changed and can be used by the developers to see when incompatible changes have
7been introduced and either increase the library SO version or fix the changes.
8
9The tools used are the abi-\* family available at https://github.com/lvc/ and
10some example output is here: http://abi-laboratory.pro/tracker/timeline/libuv/
11
12The tools download existing source tarballs and git repository to generate this
13data, so past versions are compared and in-development code can be compared as
14well.
15
16Although the application is not being included here, FYI the license is dual
17LGPL2 / GPL2 at your choice.
18
19
20Installation
21------------
22
23The abi monitoring stuff is now packaged in, eg, fedora, which is a lot
24easier than using the helper script.
25
26```
27# dnf install abi-tracker vtable-dumper
28
29Otherwise, the author provides an "easy way" to install the various tools he provides:
30
31    git clone https://github.com/lvc/installer
32	cd installer
33	make prefix=/usr/local target=abi-tracker
34
35It will also list any dependencies that you need to install through normal
36means.  (Although in the case of needing "elfutils-libelf-devel", it may
37crash during install of vtable-dumper without giving a nice list)
38
39
40Generating the output
41---------------------
42
43Use the `lws-abi-update.sh` script to download the source files, build them and
44generate the output html. The output can be deployed to a directory on a web
45server for example. Modify the commented line in lws-abi-update.sh to do this.
46
47As it is configured, lws-abi-update.sh will only download new source - ones
48that it hasn't built before - so is suitable for use with a cron job.
49
50
51Viewing the output
52------------------
53
54The best place to start looking at the data is the `timeline/libwebsockets`
55directory. If your path is on a web server, navigate there, otherwise you could
56try:
57
58    lynx timeline/libwebsockets/
59