README.md

libabigail-selfcheck

Introduction:

The libabigail-selfcheck project performs regression tests for the Libabigail project. It does so by using Libabigail to compare the ABI of Fedora packages against themselves. The result of such comparisons should be the empty set.

This project thus uses the fedabipkgdiff tool, especially with its --self-compare option.

Files and their meanings:

  • selfcheck.py - Python script containing main logic

  • package_list.fedora25-critpath.json - The set of critpath packages of the Fedora 25 distribution. It has been edited from the generic critpath packages description that can be retrieved from https://admin.fedoraproject.org/pkgdb/api/critpath?format=json

  • playbook/setup.yaml - Ansible playbook to run selfcheck automatically. Performs following tasks:

  • Updates system
  • Installs libabigail build dependencies
  • Clones/updates libabigail master branch
  • Configures and compiles libabigail
  • Sets PATH and LD_LIBRARY PATH with libabigail's binaries and libraries path respectively and then runs selfcheck on pacakge list mentioned in package_list.fedora25-critpath.json file.

Running selfcheck:

To execute it, run:

$ selfcheck.py --fedabipkgdiff <path-to-fedabipkgdiff> \ --abipkgdiff <path-to-abipkgdiff> \ package-set-json-file > output-file.txt

Or, if the fedabipkgdiff and abipkgdiff programs can be found in the default $PATH environment variable, then just run:

$ selfcheck.py package-set-json-file > output-file.txt

Running ansible Playbook

To run selfcheck test on a clean system where libabigail is not installed, we will have to perform few tasks like installing libabigail's build dependencies, compiling libabigail after cloning source code, cloning libabigail-selfcheck repo and then running selfcheck.py. All these tasks has been automated in ansible playbook setup.yaml.

Runs on localhost

ansible-playbook -i "localhost," -c local playbook/setup.yaml -K

Runs on remote host mentioned in TARGET_HOST var. USERNAME and PASSWORD of target host is required as well

ansible-playbook -i $TARGET_HOST, playbook/setup.yaml -e 'ansible_ssh_user=$USERNAME ansible_ssh_pass=$PASSWORD' -K