forked from lvc/pkg-abidiff
-
Notifications
You must be signed in to change notification settings - Fork 0
Verify backward compatibility of Linux packages (RPM or DEB)
License
xuejinze1/pkg-abidiff
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published
Languages
- Python 95.6%
- CSS 3.5%
- Makefile 0.9%