Difference between revisions of "ABI Tracker"

From OpenSSLWiki
Jump to navigationJump to search
(Instructions on how to track ABI changes)
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 +
[[File:openssl-abi-tracker.jpg]]
 +
 
One can set up a local ABI tracker in order to automate [[Binary_Compatibility|binary compatibility]] analysis for sequential releases of the OpenSSL by following the instructions below.
 
One can set up a local ABI tracker in order to automate [[Binary_Compatibility|binary compatibility]] analysis for sequential releases of the OpenSSL by following the instructions below.
  
Line 19: Line 21:
 
The referred build script (build_script/openssl.sh) is:
 
The referred build script (build_script/openssl.sh) is:
 
  ./config -d --prefix="$INSTALL_TO" shared
 
  ./config -d --prefix="$INSTALL_TO" shared
  sed -i -e 's/ \-O0 / /' Makefile
+
  sed -i -e 's/ \-O0 / -g -Og /' Makefile
  sed -i -e 's/ \-g / -g -Og /' Makefile
+
  sed -i -e 's/ \-g/ -g -Og/' Makefile
 
  make
 
  make
 
  make install_sw
 
  make install_sw
Line 34: Line 36:
 
  abi-tracker -build openssl.json
 
  abi-tracker -build openssl.json
  
The report (timeline/openssl/index.html) should look like:
+
The report should be generated to: timeline/openssl/index.html
 
 
[[File:openssl-abi-tracker.jpg]]
 
  
 
== Daily run ==
 
== Daily run ==

Latest revision as of 13:37, 13 September 2018

Openssl-abi-tracker.jpg

One can set up a local ABI tracker in order to automate binary compatibility analysis for sequential releases of the OpenSSL by following the instructions below.

You can find live setup of this tracker on this page maintained by Andrey P.

Prepare configuration file[edit]

The initial point is to create main configuration file (openssl.json):

{
 "Name":           "openssl",
 "Title":          "OpenSSL",
 "SourceUrl":      "https://www.openssl.org/source/",
 "Git":            "https://github.com/openssl/openssl.git",
 "Maintainer":     "Maintainer Name",
 "BuildScript":    "build_script/openssl.sh",
 "SkipObjects":    [ "engines/" ],
 "HeadersDiff":    "Off",
 "LetterReleases": "On"
}

The referred build script (build_script/openssl.sh) is:

./config -d --prefix="$INSTALL_TO" shared
sed -i -e 's/ \-O0 / -g -Og /' Makefile
sed -i -e 's/ \-g/ -g -Og/' Makefile
make
make install_sw

Download and build previous releases[edit]

The second step is to install abi-monitor tool and then download and build sources of previous releases of the library:

abi-monitor -get -build openssl.json

This command will extend the openssl.json file with the list of built versions.

Perform the analysis[edit]

The final step is to install abi-tracker, abi-compliance-checker and abi-dumper tools and then create ABI dumps and compatibility reports for all built versions of the library:

abi-tracker -build openssl.json

The report should be generated to: timeline/openssl/index.html

Daily run[edit]

To perform daily update of the report you can add these commands to your crontab:

abi-monitor -get -build-new openssl.json   # download and build new releases only
abi-tracker -build openssl.json            # update ABI dumps and report

Enjoy!