• Stars
    star
    189
  • Rank 204,649 (Top 5 %)
  • Language
    Perl
  • License
    GNU Lesser Genera...
  • Created about 9 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tool to visualize ABI changes timeline of a C/C++ software library

ABI Tracker 1.11

ABI Tracker β€” visualize ABI changes timeline of a C/C++ software library.

Contents

  1. About
  2. Install
  3. Usage
  4. Profile

About

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/index.php?view=abi-view

Install

sudo make install prefix=/usr
Requires
  • Perl 5 (5.8 or newer)
  • Elfutils
  • ABI Dumper (1.1 or newer)
  • Vtable-Dumper (1.1 or newer)
  • ABI Compliance Checker (2.2 or newer)
  • ABI Monitor (1.12 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
Graph
abi-tracker -build -t graph libssh.json
RSS
abi-tracker -build -rss libssh.json
Cron job
abi-monitor -get -build-new [profile]
abi-tracker -build [profile]
Adv. usage

For advanced usage, see output of -help option.

Profile

{
    "Name":        "SHORT LIBRARY NAME",
    "Maintainer":  "MAINTAINER NAME",
    "SourceUrl":   "URL TO DOWNLOAD PACKAGES",
    "Git":         "GIT ADDRESS TO CLONE",
    
    "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.",
    "SourceUrl":   "https://red.libssh.org/projects/libssh/files",
    "Git":         "https://git.libssh.org/projects/libssh.git",
    
    "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"
    }]
}

See more profile examples in this repository: https://github.com/lvc/upstream-tracker/tree/master/profile

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 (in "Versions")

To hide some version in the report you can define "Deleted" option.

Enjoy!

More Repositories

1

abi-compliance-checker

A tool for checking backward API/ABI compatibility of a C/C++ library
Perl
619
star
2

japi-compliance-checker

A tool for checking backward API/ABI compatibility of a Java library
Perl
365
star
3

pkgdiff

A tool for visualizing changes in Linux software packages
Perl
209
star
4

abi-dumper

Dump ABI of an ELF object containing DWARF debug info
Perl
176
star
5

vtable-dumper

A tool to list content of virtual tables in a shared library
C
117
star
6

api-sanity-checker

An automatic generator of basic unit tests for a C/C++ library
Perl
85
star
7

japi-tracker

A tool to visualize API changes timeline of a Java library
Perl
53
star
8

abi-monitor

A tool to monitor and build new versions of a software library
Perl
27
star
9

pkg-abidiff

Verify backward compatibility of Linux packages (RPM or DEB)
Python
21
star
10

upstream-tracker

A project to monitor and verify compatibility of upstream ABI changes in C/C++ libraries
Shell
15
star
11

abi-reports

JSON-format reports of the ABI Tracker project
Python
11
star
12

kernel-abi-tracker

A tool to monitor and analyze ABI changes in new versions of the Linux kernel
Shell
10
star
13

installer

Install/remove tools and their dependencies
Perl
9
star
14

japi-monitor

A tool to monitor new versions of a Java library
Perl
8
star
15

distdiff

A tool for visualizing changes in Linux distributions
Perl
7
star
16

upstream-tracker-4j

A project to monitor and verify compatibility of upstream API changes in Java libraries
Perl
7
star
17

installer-4j

Install/remove Java tools and their dependencies
Perl
4
star
18

api-reports-4j

JSON-format reports of the Java API Tracker project
4
star
19

articles

Related articles
1
star