b130ec4 Bug 20380 - Compare two local RPMs

Authored and Committed by cqi 8 years ago
    Bug 20380 - Compare two local RPMs
    
    Bug 20270 is also fixed.
    
    This patch allows developer to compare two local RPMs in form
    
        fedabipkgdiff some/place/foo.rpm another/place/bar.rpm
    
    But, network is still needed to talk with Koji.
    
    This patch also introduces new terms for libabigail, that is the
    subject, ancillary package, and comparison half. Subject represents a
    package that is subject of the ABI comparison, a subject could be a RPM
    and maybe it would be a DEB or some other kind of "package". A subject
    may have several ancillary packages that are used to compare the
    subject.  Generally, a subject may have devel, debuginfo, or both.
    
    	* configure.ac: add dependent mimetype module.
    	* doc/manuals/fedabipkgdiff.rst: Update to add document for the
    	new use case of comparing two local RPMs.
    	* tests/data/Makefile.am: Include new RPMs for tests.
    	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.100.2-2.fc20.x86_64.rpm:
    	New RPM for running test.
    	* tests/data/test-fedabipkgdiff/dbus-glib/dbus-glib-0.106-1.fc23.x86_64.rpm:
    	Likewise.
    	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.12.6-1.fc14.x86_64.rpm:
    	Likewise.
    	* tests/data/test-fedabipkgdiff/nss-util/nss-util-3.24.0-2.0.fc25.x86_64.rpm:
    	Likewise.
    	* tests/data/test-fedabipkgdiff/nss-util/nss-util-devel-3.24.0-2.0.fc25.x86_64.rpm:
    	Likewise.
    	* tests/data/test-fedabipkgdiff/test4-glib-0.100.2-2.fc20.x86_64.rpm-glib-0.106-1.fc23.x86_64.rpm-report-0.txt:
    	Rename filename by adding .rpm extension.
    	* tests/data/test-fedabipkgdiff/test5-same-dir-dbus-glib-0.100.2-2.fc20.x86_64--dbus-glib-0.106-1.fc23.x86_64-report-0.txt:
    	New reference output for testing comparing local RPMs.
    	* tests/data/test-fedabipkgdiff/test6-missing-devel-debuginfo-nss-util-3.12.6-1.fc14.x86_64--nss-util-3.24.0-2.0.fc25.x86_64-report-0.txt:
    	New reference output for testing comparison without non-existent
    	debuginfo or development package.
    	* tests/runtestfedabipkgdiff.py.in (FEDABIPKGDIFF_TEST_SPECS):
    	Rename filename for test4. Add two new test cases.
    	(run_fedabipkgdiff_tests): Remove semicolon and trailing
    	whitespaces.
    	(main): Likewise.
    	(ensure_output_dir_created): Likewise.
    	* tools/fedabipkgdiff: Require some new modules.
    	Fix of return code.
    	(PkgInfo): Renamed to ComparisonHalf.
    	(match_nvr): New method to determine if a string matches format
    	of N-V-R.
    	(match_nvra): New method to determine if a string matches format
    	of N-V-R.A.
    	(is_rpm_file): New method to guess if a file is a RPM file.
    	(RPM.is_peer): New method to determine if current RPM is a peer
    	of another.
    	(RPM.filename): Use Koji module API to construct the filename.
    	(RPM.nvra): Get nvra from filename instead of constructing
    	manually that is duplicated with Koji module API.
    	(RPMCollection): New class to represent a set of RPMs.
    	(generate_pkg_info_pair_for_abipkgdiff): New method working as a
    	generator to yeild comparison halves for running abipkgdiff.
    	(Brew.getRPM): Fix string format with incorrect argument.
    	(Brew.select_rpms_from_a_build): Return instance of
    	RPMCollection.
    	(abipkgdiff): If there is no debuginfo or development package,
    	just ignore it and leave a warning. If --error-on-warning is
    	specified, raise an exception instead. Arguments are modified
    	to represent the new name ComparisonHalf, and relative docstring
    	is also updated.
    	(magic_construct): Removed.
    	(run_abipkgdiff): Rewrite.
    	(make_rpms_usable_for_abipkgdiff): Removed.
    	(diff_local_rpm_with_latest_rpm_from_koji): Rewrite by using
    	RPMCollection.
    	(diff_latest_rpms_based_on_distros): Likewise.
    	(diff_two_nvras_from_koji): Likewise.
    	(diff_from_two_rpm_files): New method to compare two local RPMs.
    	(build_commandline_args_parser): Add new option
    	--error-on-warning.
    	(main): Add support to compare local RPMs.
    
    Signed-off-by: Chenxiong Qi <cqi@redhat.com>
    
        
file modified
+1 -1
file modified
+11 -3
file modified
+7 -1
file modified
+281 -189