Osmocom ABI Check
Go to file
Pau Espin 7e45a98091 Initial commit 2018-04-23 15:58:38 +02:00
profiles Initial commit 2018-04-23 15:58:38 +02:00
.gitignore Initial commit 2018-04-23 15:58:38 +02:00
README.md Initial commit 2018-04-23 15:58:38 +02:00
build_osmocom_libs.sh Initial commit 2018-04-23 15:58:38 +02:00
generate_profile.sh Initial commit 2018-04-23 15:58:38 +02:00
generate_reports.sh Initial commit 2018-04-23 15:58:38 +02:00
libs_track.sh.inc Initial commit 2018-04-23 15:58:38 +02:00
print_releases.sh Initial commit 2018-04-23 15:58:38 +02:00
run_all_project_versions.sh Initial commit 2018-04-23 15:58:38 +02:00

README.md

Osmo-ABI-Check

This repository contains a set of scripts to build and use abi-* tools to generate a report in html format containing changes of ABI/API over different versions of osmocom projects.

There's several big different steps in the procedure for each project that we want to track: 1- Generate profile .json file. This file contains some meta-data about the project, as well as a list of versions. The script generate_profile.sh can be used to generate this profile file from a given git repository. Profile files are stored in profile/ directory of this repository. 2- Build libraries for a set of versions of a target project (and previously its required dependencies to be able to compile it properly) and store (prepare) the output (.so files, headers) in a filesystem structure which abi-* tools can handle. This output is stored in input/ directory of this repository. This step is handled by "run_all_project_versions.sh prepare" script. 3- Run abi-* tools to generate the reports. This step is handled by "run_all_project_versions.sh report" script. It will create all generated metadata in build/, and final report output is available in deploy/.

As building the whole matrix of elements take an enormous time (project(+deps) * project_versions), the idea is to keep in git the build/$project/abi-dump/$non_master/ subdirs to be used as a cache so we don't need to do the "prepare" step everytime, only for master.

Some details about abi-* tools: "abi-tracker -t abidump" calls abi-dump and puts the output in build/abi-dump/$project/$version/$lib_hash/{2files here}. "abi-tracker -t report" uses the files in build/abi-dump/ together with the profile json file to generate a web report. "abi-tracker -t index generates a general index file containing a list with links to each project report.

Examples:

  • Generate profile for libosmo-abis: ./generate_profile libosmo-abis /path/to/existing/git/repo/libosmo-abis.git >profile/libosmo-abis.json

  • Build whole list of known versions for project libosmo-abis into input/: ./run_all_project_versions.sh prepare libosmo-abis all

  • Build last of known version + master for project libosmo-abis into input/: ./run_all_project_versions.sh prepare libosmo-abis latest

  • Build master for master rev of project libosmo-abis into input/: ./run_all_project_versions.sh prepare libosmo-abis master

  • Build specific known version 0.4.0 for project libosmo-abis into input/: ./run_all_project_versions.sh prepare libosmo-abis 0.4.0

  • Generate report for whole list of known versions for project libosmo-abis into input/: ./run_all_project_versions.sh report libosmo-abis all

  • Generate report for known version + master for project libosmo-abis into input/: ./run_all_project_versions.sh report libosmo-abis latest

  • Generate report for master rev of project libosmo-abis into input/: ./run_all_project_versions.sh report libosmo-abis master

  • Generate report for 0.4.0 for project libosmo-abis into input/: ./run_all_project_versions.sh report libosmo-abis 0.4.0