A tool to visualize ABI changes timeline of a C/C++ software library
Perl Other CSS Makefile
Latest commit e14de53 Jan 19, 2017 @lvc Added CtagsDef option of the profile. Added -json-report option to ge…
…nerate machine-readable JSON-format summary report.

README

NAME:
  ABI Tracker - visualize ABI changes timeline of a C/C++ software library.
  
  The tool requires input profile of the library in JSON format. It can be created manually or automatically generated by the ABI Monitor: https://github.com/lvc/abi-monitor
  
  Sample report: https://abi-laboratory.pro/tracker/timeline/glib/
  
  The tool is developed by Andrey Ponomarenko. Please consider to add ABI Viewer reports for visualization of the ABI structure and high detailed binary compatibility analysis: https://abi-laboratory.pro/

INSTALL:
  sudo make install prefix=/usr

REQUIRES:
  Perl 5 (5.8 or newer)
  Elfutils
  ABI Dumper (0.99.16 or newer)
  Vtable-Dumper (1.1 or newer)
  ABI Compliance Checker (1.99.21 or newer)
  PkgDiff (1.6.4 or newer)
  RfcDiff (1.41 or newer)
  
  You can use the installer (https://github.com/lvc/installer) to automatically download and install most of the required tools.

USAGE:
  abi-tracker [options] [profile]
  
  The input profile can be generated by the ABI Monitor tool. All manual edits in the profile will be preserved after re-generating it by the ABI Monitor.
  
  The home page of the output report is: timeline/LIB_NAME/index.html
  
EXAMPLES:
  abi-tracker -build libssh.json
  abi-tracker -rebuild -target abireport -v 0.7.0 libssh.json

CRON JOB:
  abi-monitor -get -build-new [profile]
  abi-tracker -build [profile]

PROFILE FORMAT:

{
  "Name":        "SHORT LIBRARY NAME",
  "Maintainer":  "MAINTAINER NAME",
  
  "Versions": [
  {
    "Number":      "VERSION NUMBER",
    "Installed":   "INSTALL TREE PATH",
    "Source":      "SOURCE PACKAGE PATH",
    "Changelog":   "CHANGELOG: On/Off",
    "HeadersDiff": "HEADERS DIFF: On/Off",
    "PkgDiff":     "PACKAGE DIFF: On/Off",
    "ABIView":     "ABI VIEW: On/Off",
    "ABIDiff":     "ABI DIFF: On/Off"
  },
  
  ...
  
  {
      ...
  }]
}

PROFILE EXAMPLE:

{
  "Name":        "libssh",
  "Maintainer":  "Andrey P.",
  
  "Versions": [
  {
    "Number":      "0.7.0",
    "Installed":   "installed/libssh/0.7.0",
    "Source":      "src/libssh/0.7.0/libssh-0.7.0.tar.xz",
    "Changelog":   "On",
    "HeadersDiff": "On",
    "PkgDiff":     "On",
    "ABIView":     "Off",
    "ABIDiff":     "Off"
  },
  
  {
    "Number":      "0.6.5",
    "Installed":   "installed/libssh/0.6.5",
    "Source":      "src/libssh/0.6.5/libssh-0.6.5.tar.xz",
    "Changelog":   "On",
    "HeadersDiff": "On",
    "PkgDiff":     "On",
    "ABIView":     "Off",
    "ABIDiff":     "Off"
  },
  
  ...
  
  {
    "Number":      "0.5.2",
    "Installed":   "installed/libssh/0.5.2",
    "Source":      "src/libssh/0.5.2/libssh-0.5.2.tar.xz",
    "Changelog":   "On",
    "HeadersDiff": "On",
    "PkgDiff":     "On",
    "ABIView":     "Off",
    "ABIDiff":     "Off"
  }]
}

ADV. OPTIONS:
If you want to allow users to connect the maintainer of the tracker then you can set "MaintainerUrl" option.

To skip checking of some objects in the install tree of a library please define "SkipObjects": ["O1", ..., "On"] option.

The name of the analysed library in the title can be changed by "Title" option.

ADV. OPTIONS OF A VERSION:
To hide some version in the report you can define "Deleted" option.

ADV. USAGE:
  For advanced usage, see output of --help option.

Enjoy!