mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-18 23:07:00 +00:00
fedabipkgdiff is a convenient way to compare the ABI of Fedora packages easily. The first version of fedabipkgdiff introduced by this patch lets users perform operations like: fedabipkgdiff --from fc23 foo-0.1-1.fc23.x86_64.rpm fedabipkgdiff --from fc23 --to fc24 foo fedabipkgdiff foo-0.1-1.fc23 foo-0.1-1.fc24 fedabipkgdiff foo-0.1-1.fc23.i686 foo-0.1-1.fc24.i686 fedabipkgdiff --all-subpackages foo-0.1-1.fc23 foo-0.1-1.fc24 * autoconf-archive/ax_compare_version.m4: New file copied from the autoconf-archive project. * autoconf-archive/ax_prog_python_version.m4: Likewise. * autoconf-archive/ax_python_module.m4: Likewise. * Makefile.am: Add the new files above to the source distribution. * configure.ac: Include the new m4 macros from the autoconf archive. Add a new --enable-fedabipkgdiff option. Update the report at the end of the configure process to show the status of the fedabipkgdiff feature. Add check for prerequisite python modules argparse, glob, logging, os, re, shlex, subprocess, sys, itertools, urlparse, itertools, shutil, unittest, xdg, koji and mock. These are necessary for the unit test of fedabipkgdiff. Generate tests/runtestfedabipkgdiff.py into the build directory, from the tests/runtestfedabipkgdiff.py.in input file. * tools/Makefile.am: Include the fedabipkgdiff to the source distribution and install it if the "fedabipkgdiff" feature is enabled. * tests/Makefile.am: Rename runtestfedabipkgdiff.sh into runtestfedabipkgdiff.py. Add the new runtestfedabipkgdiff.py.in autoconf template file in here. * tests/runtestfedabipkgdiff.py.in: New unit test file. * tools/fedabipkgdiff: New fedabipkgdiff tool. * doc/manuals/fedabipkgdiff.rst: New manual. Signed-off-by: Chenxiong Qi <cqi@redhat.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
154 lines
4.9 KiB
ReStructuredText
154 lines
4.9 KiB
ReStructuredText
.. _fedabipkgdiff_label:
|
|
|
|
==============
|
|
fedabipkgdiff
|
|
==============
|
|
|
|
``fedabipkgdiff`` compares the ABI of shared libraries in `Fedora`_
|
|
packages. It's a convenient way to do so without having to manually
|
|
download packages from the `Fedora Build System`_.
|
|
|
|
``fedabipkgdiff`` knows how to talk with the `Fedora Build System`_ to
|
|
find the right packages versions and their associated debug
|
|
information, download them, compare their ABI locally, and report
|
|
about the possible ABI changes.
|
|
|
|
.. _fedabipkgdiff_invocation_label:
|
|
|
|
Invocation
|
|
==========
|
|
|
|
::
|
|
|
|
fedabipkgdiff [option] <NVR> ...
|
|
|
|
|
|
.. _fedabipkgdiff_options_label:
|
|
|
|
Options
|
|
=======
|
|
|
|
* ``--help | -h``
|
|
|
|
Display a short help about the command and exit.
|
|
|
|
* ``--dry-run``
|
|
|
|
Don't actually perform the ABI comparison. Details about what is
|
|
going to be done are emitted on standard output.
|
|
|
|
* ``--debug``
|
|
|
|
Emit debugging messages about the execution of the program.
|
|
Details about each method invocation, including input parameters
|
|
and returned values, are emitted.
|
|
|
|
* ``--traceback``
|
|
|
|
Show traceback when an exception raised. This is useful for
|
|
developers of the tool itself to know more exceptional errors.
|
|
|
|
* ``--server`` <URL>
|
|
|
|
Specifies the URL of the `Koji`_ XMLRPC service the tool talks to.
|
|
The default value of this option is http://koji.fedoraproject.org/kojihub.
|
|
|
|
* ``--topdir`` <URL>
|
|
|
|
Specifies the URL of the package store the tool downloads RPMs
|
|
from. The default value of this option is https://kojipkgs.fedoraproject.org.
|
|
|
|
* ``--from`` <distro>
|
|
|
|
Specifies the name of the baseline `Fedora`_ distribution in which to
|
|
find the first `build`_ that is used for comparison. The
|
|
``distro`` value can be any valid value of the RPM macro
|
|
``%{?dist}`` for `Fedora`_, for example, ``fc4``, ``fc23``, ``fc25``.
|
|
|
|
* ``--to`` <distro>
|
|
|
|
Specifies the name of the `Fedora`_ distribution in which to find
|
|
the `build`_ that is compared against the baseline specified by
|
|
option ``--from``. The ``distro`` value could be any valid value
|
|
of the RPM macro ``%{?dist}`` for `Fedora`_, for example, ``fc4``,
|
|
``fc23``.
|
|
|
|
* ``--all-subpackages``
|
|
|
|
Instructs the tool to also compare the ABI of the binaries in the
|
|
sub-packages of the packages specified.
|
|
|
|
.. _build:
|
|
|
|
Note that a build is a specific version and release of an RPM package.
|
|
It's specified by its the package name, version and release. These are specified by the `Fedora Naming Guidelines <https://fedoraproject.org/wiki/Packaging:NamingGuidelines>`_
|
|
|
|
|
|
.. _fedabipkgdiff_return_value_label:
|
|
|
|
Return value
|
|
============
|
|
|
|
The exit code of the ``abipkgdiff`` command is either 0 if the ABI of
|
|
the binaries compared are equivalent, or non-zero if they differ or if
|
|
the tool encountered an error.
|
|
|
|
In the later case, the value of the exit code is the same as for the
|
|
:ref:`abidiff tool <abidiff_return_value_label>`.
|
|
|
|
.. _fedabipkgdiff_usage_example_label:
|
|
|
|
|
|
Use cases
|
|
=========
|
|
|
|
Below are some usage examples currently supported by
|
|
``fedabipkgdiff``.
|
|
|
|
1. Compare the ABI of binaries in a local package against the ABI of
|
|
the latest stable package in `Fedora`_ 23.
|
|
|
|
Suppose you have built just built the ``httpd`` package and you
|
|
want to compare the ABI of the binaries in this locally built
|
|
package against the ABI of the binaries in the latest ``http``
|
|
build from `Fedora`_ 23. The command line invocation would be: ::
|
|
|
|
$ fedabipkgdiff --from fc23 ./httpd-2.4.18-2.fc24.x86_64.rpm
|
|
|
|
2. Compare the ABI of binaries in the latest build of the ``httpd``
|
|
package in ``Fedora 23`` against the ABI of the binaries in the
|
|
latest build of the same package in 24.
|
|
|
|
In this case, note that neither of the two packages are available
|
|
locally. The tool is going to talk with the `Fedora Build
|
|
System`_, determine what the versions and releases of the latest
|
|
packages are, download them and perform the comparison locally.
|
|
The command line invocation would be: ::
|
|
|
|
$ fedabipkgdiff --from fc23 --to fc24 httpd
|
|
|
|
3. Compare the ABI of binaries of two builds of the ``httpd``
|
|
package, designated their versions and releases.
|
|
|
|
If we want to do perform the ABI comparison for all the processor
|
|
architectures supported by `Fedora`_ the command line invocation
|
|
would be: ::
|
|
|
|
$ fedabipkgdiff httpd-2.8.14.fc23 httpd-2.8.14.fc24
|
|
|
|
But if we want to perform the ABI comparison for a specific
|
|
architecture, say, x86_64, then the command line invocation would
|
|
be: ::
|
|
|
|
$ fedabipkgdiff httpd-2.8.14.fc23.x86_64 httpd-2.8.14.fc24.x86_64
|
|
|
|
4. If the use wants to also compare the sub-packages of a given
|
|
package, she can use the --all-subpackages option. The first
|
|
command of the previous example would thus look like: ::
|
|
|
|
$ fedabipkgdiff --all-subpackages httpd-2.8.14.fc23 httpd-2.8.14.fc24
|
|
|
|
.. _Fedora: https://getfedora.org
|
|
.. _Fedora Build System: http://koji.fedoraproject.org/koji
|
|
.. _Koji: https://fedoraproject.org/wiki/Koji
|