Skip to content

Verify backward compatibility of Linux packages (RPM or DEB)

License

Notifications You must be signed in to change notification settings

xuejinze1/pkg-abidiff

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME:
  Package ABI Diff (Pkg-ABIdiff) — verify API/ABI compatibility of Linux packages (RPM or DEB).
  
  The tool searches for shared objects in packages and checks their ABIs for backward binary-compatibility (BC) and backward source-compatibility (SC).
  
  The tool does the following:
  
    1. Extracts input packages
    2. Searches for *.debuginfo, *.so and header files
    3. Creates ABI dumps of all found shared objects
    4. Filters out private part of the ABI using info from header files
    5. Matches shared objects in old and new packages
    6. Compares ABI dumps of corresponding objects
    7. Creates the BC and SC reports
  
  The tool is intended for Linux maintainers who are interested in ensuring backward compatibility, i.e. allow old applications to run (BC) or to be recompiled (SC) with newer versions of RPM/DEB packages.
  
  Sample report: https://abi-laboratory.pro/examples/compat_report/x86_64/libssh/0.6.3-3.fc21/0.7.3-1.fc24/
  
  The tool is developed by Andrey Ponomarenko: https://abi-laboratory.pro/

INSTALL:
  sudo make install prefix=/usr

REQUIRES:
  Python 2
  ABI Compliance Checker >= 1.99.25  (https://github.com/lvc/abi-compliance-checker)
  ABI Dumper >= 0.99.19              (https://github.com/lvc/abi-dumper)
  Universal Ctags                    (https://github.com/universal-ctags/ctags)
  GNU Binutils
  Elfutils
  G++

USAGE:
  pkg-abidiff -old [OLD PACKAGES] -new [NEW PACKAGES] [OPTIONS]
  
  e.g:
  
  pkg-abidiff -old P1 P1-DEBUG P1-DEV -new P2 P2-DEBUG P2-DEV
  
  P1       — RPM or DEB package to analyze (with *.so object files)
  P1-DEBUG — corresponding debug-info package (*.debug files with DWARF info)
  P1-DEV   — corresponding development package (with header files)

  You can omit passing of devel packages but the tool will not be able to filter out private part of the ABI from the analysis in this case. You can specify multiple devel packages at a time (to analyze all related header files distributed in separate packages).
  
  Generated ABI dumps will be saved to ./abi_dump directory and will be reused next times. Use -rebuild additional option to regenerate ABI dumps.
  
  Generated report will be saved to ./compat_report directory. Use -rebuild-report additional option to regenerate report without regenerating of ABI dumps. The report is generated in visual HTML and machine-readable JSON formats.

EXAMPLE:
  Having old packages:
    OLD/libssh-0.6.3-3.fc21.x86_64.rpm
    OLD/libssh-debuginfo-0.6.3-3.fc21.x86_64.rpm
    OLD/libssh-devel-0.6.3-3.fc21.x86_64.rpm
  
  and new ones:
    NEW/libssh-0.7.3-1.fc24.x86_64.rpm
    NEW/libssh-debuginfo-0.7.3-1.fc24.x86_64.rpm
    NEW/libssh-devel-0.7.3-1.fc24.x86_64.rpm
  
  we can compare them by this command:
    pkg-abidiff -old OLD/libssh-*.rpm -new NEW/libssh-*.rpm

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

About

Verify backward compatibility of Linux packages (RPM or DEB)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 95.6%
  • CSS 3.5%
  • Makefile 0.9%