diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 42e0e1f..bfec4c1 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,20 @@ /Support-having-several-debuginfo-search-dirs-for-a-b.patch /Add-a-fail-no-debug-info-to-abidiff.patch /libabigail-1.6.tar.gz +/libabigail-1.7.tar.gz +/libabigail-1.8.tar.gz +/libabigail-1.8.1.tar.gz +/libabigail-1.8.2.tar.gz +/libabigail-2.0.tar.gz +/libabigail-2.1.tar.gz +/libabigail-2.2.tar.xz +/libabigail-2.3.tar.xz +/0001-ir-Remove-redundant-virtual-member-functions.patch +/libabigail-2.4.tar.xz +/0001-Bug-31045-Don-t-try-setting-translation-unit-for-uni.patch +/0002-suppression-Add-has_strict_flexible_array_data_membe.patch +/libabigail-2.5.tar.xz +/libabigail-2.6.tar.xz +/libabigail-2.7.tar.xz +/libabigail-2.8.tar.xz +/libabigail-2.9.tar.xz diff --git a/0003-Replace-deprecated-mock-with-unittest.mock.patch b/0003-Replace-deprecated-mock-with-unittest.mock.patch new file mode 100644 index 0000000..f5d21d4 --- /dev/null +++ b/0003-Replace-deprecated-mock-with-unittest.mock.patch @@ -0,0 +1,26 @@ +From 8602d3c36dad05ada68feedc80926afadff448a2 Mon Sep 17 00:00:00 2001 +From: Maxwell G +Date: Sat, 13 Jan 2024 05:50:39 +0000 +Subject: [PATCH] Replace deprecated mock with unittest.mock + +Relates: https://fedoraproject.org/wiki/Changes/RemovePythonMockUsage +--- + tests/mockfedabipkgdiff.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/mockfedabipkgdiff.in b/tests/mockfedabipkgdiff.in +index 1e56266..863cf7f 100644 +--- a/tests/mockfedabipkgdiff.in ++++ b/tests/mockfedabipkgdiff.in +@@ -42,7 +42,7 @@ import tempfile + import six + + try: +- from mock import patch ++ from unittest.mock import patch + except ImportError: + import sys + six.print_('mock is required to run tests. Please install before running' +-- +2.43.0 + diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..ce3cdc1 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,19 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/libabigail.spec b/libabigail.spec index 87b6814..19dded8 100644 --- a/libabigail.spec +++ b/libabigail.spec @@ -1,24 +1,41 @@ -%global tarball_revision 0 +# dependencies are not available in RHEL +%bcond abidb %{undefined rhel} + +%global tarball_revision 1 %global tarball_name %{name}-%{version} Name: libabigail -Version: 1.6 -Release: 2%{?dist} +Version: 2.9 +Release: 1%{?dist} Summary: Set of ABI analysis tools -License: LGPLv3+ +License: Apache-2.0 WITH LLVM-exception URL: https://sourceware.org/libabigail/ -Source0: http://mirrors.kernel.org/sourceware/libabigail/%{tarball_name}.tar.gz +Source0: http://mirrors.kernel.org/sourceware/libabigail/%{tarball_name}.tar.xz +BuildRequires: git +BuildRequires: libbpf-devel +BuildRequires: binutils-devel BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: elfutils-devel BuildRequires: libxml2-devel +BuildRequires: xxhash-devel +BuildRequires: xz-devel >= 5.2.0 BuildRequires: doxygen BuildRequires: python3-sphinx BuildRequires: texinfo -BuildRequires: dos2unix +%if %{with abidb} +BuildRequires: python3-GitPython +BuildRequires: python3-libarchive-c +Requires: python3-GitPython +Requires: python3-libarchive-c +%endif +%if 0%{?fedora} || 0%{?epel} BuildRequires: dpkg +BuildRequires: koji +BuildRequires: python3-koji +%endif BuildRequires: wget %description @@ -57,16 +74,16 @@ This package contains documentation for the libabigail tools in the form of man pages, texinfo documentation and API documentation in html format. -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?epel} %package fedora Summary: Utility to compare the ABI of Fedora packages BuildRequires: python3-devel BuildRequires: python3-koji -BuildRequires: python3-mock BuildRequires: python3-rpm BuildRequires: python3-pyxdg #For x-rpm mimetype definition! BuildRequires: mailcap +BuildRequires: make Requires: %{name}%{?_isa} = %{version}-%{release} Requires: curl Requires: koji @@ -85,10 +102,10 @@ them manually. %endif %prep -%setup -n %{tarball_name} +%autosetup -v -S git %build -%configure --disable-silent-rules --disable-zip-archive --disable-static +%configure %{?with_abidb:--enable-abidb} --enable-ctf --enable-btf --disable-silent-rules --disable-zip-archive --disable-static make %{?_smp_mflags} pushd doc make html-doc @@ -106,19 +123,14 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' # Install man and texinfo files as they are not installed by the # default 'install' target of the makefile. make -C doc/manuals install-man-and-info-doc DESTDIR=%{buildroot} -dos2unix doc/manuals/html/_static/jquery.js -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?epel} # Explicitly use Python 3 as the interpreter -pathfix.py -i %{__python3} -pn %{buildroot}%{_bindir}/fedabipkgdiff +%py3_shebang_fix %{buildroot}%{_bindir}/fedabipkgdiff %endif %check -time make %{?_smp_mflags} check || (cat tests/test-suite.log && exit 2) - -if test $? -ne 0; then - cat tests/tests-suite.log -fi +time make %{?_smp_mflags} check check-self-compare || (cat tests/test-suite.log && exit 2) %ldconfig_scriptlets @@ -129,11 +141,14 @@ fi %{_bindir}/abilint %{_bindir}/abipkgdiff %{_bindir}/kmidiff -%{_libdir}/libabigail.so.0 -%{_libdir}/libabigail.so.0.0.0 +%if %{with abidb} +%{_bindir}/abidb +%endif +%{_libdir}/libabigail.so.8 +%{_libdir}/libabigail.so.8.0.0 %{_libdir}/libabigail/default.abignore %doc README AUTHORS ChangeLog -%license COPYING COPYING-LGPLV3 COPYING-GPLV3 +%license LICENSE.txt license-change-2020.txt %{_mandir}/man1/* %{_mandir}/man7/* %{_infodir}/abigail.info* @@ -145,15 +160,188 @@ fi %{_datadir}/aclocal/abigail.m4 %files doc -%license COPYING COPYING-LGPLV3 COPYING-GPLV3 +%license LICENSE.txt license-change-2020.txt %doc doc/manuals/html/* -%if 0%{?fedora} +%if 0%{?fedora} || 0%{?epel} %files fedora %{_bindir}/fedabipkgdiff %endif %changelog +* Thu Nov 06 2025 Dodji Seketeli - 2.9-1 +- Update to upstream 2.9 tarball +- Support new libabigail.so.8.0.0 SONAME +- Run 'make check check-self-compare' instead of two separate make invocations. + +* Thu Jul 24 2025 Fedora Release Engineering - 2.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jul 04 2025 Dodji Seketeli - 2.8-1 +- Update to usptream 2.8 tarball +- Support new libabigail.so.7.0.0 SONAME + +* Fri Apr 11 2025 Dodji Seketeli - 2.7-1 +- Update to upstream 2.7 tarball +- Do not build with by default XXH_INLINE_ALL anymore +- Drop xxhash-static dependency +- Add xz-devel >= 5.2.0 dependency to support reading xz-compressed binaries +- Support new libabigail.so.6.0.0 SONAME + +* Tue Feb 04 2025 Yaakov Selkowitz - 2.6-3 +- Limit fedabipkgdiff to Fedora and EPEL + +* Fri Jan 17 2025 Fedora Release Engineering - 2.6-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Nov 1 2024 Dodji Seketeli - 2.6-1 +- Update to upstream 2.6 tarball +- Add xxhash-devel as BuildRequires +- Update library to libabigail.so.5.0.0 + +* Fri Jul 26 2024 Yaakov Selkowitz - 2.5-4 +- Add runtime dependencies of abidb +- Disable abidb on RHEL + +* Thu Jul 18 2024 Fedora Release Engineering - 2.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Thu May 16 2024 Adam Williamson - 2.5-2 +- Rebuild with fixed CI metadata + +* Thu Apr 18 2024 Dodji Seketeli - 2.5-1 +- Update to upstream 2.5 tarball +- Drop patches + 0001-Bug-31045-Don-t-try-setting-translation-unit-for-uni.patch + 0002-suppression-Add-has_strict_flexible_array_data_membe.patch + 0003-Replace-deprecated-mock-with-unittest.mock.patch +- Package libabigail.so.4 rather than the previous libabigail.so.3. +- Add abidb to the package + Added BuildRequires: python3-GitPython, python3-libarchive-c +- Better handle error handling when tests fails. + +* Fri Jan 26 2024 Maxwell G - 2.4-7 +- Remove python3-mock dependency +- Apply patch 0003-Replace-deprecated-mock-with-unittest.mock.patch + +* Thu Jan 25 2024 Fedora Release Engineering - 2.4-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 2.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Nov 20 2023 Dodji Seketeli - 2.4-4 +- Fix SPDX licensing string + +* Wed Nov 15 2023 Dodji Seketeli - 2.4-3 +- Fix sourceware.org/PR31017 + "Support Flex array conversion suppression" + Apply patch 0002-suppression-Add-has_strict_flexible_array_data_membe.patch + +* Tue Nov 14 2023 Dodji Seketeli - 2.4-2 +- Fix sourceware.org/PR31045 + "Don't try setting translation unit for unique types" + Apply patch + 0001-Bug-31045-Don-t-try-setting-translation-unit-for-uni.patch. + That patch is applied in upstream mainline and will be available in + libabigail 2.5. +- Use %%autosetup instead of the previous %%setup and %%patch macros. +- Add git as a build requirement + +* Fri Oct 20 2023 Dodji Seketeli - 2.4-1 +- Update to upstream 2.4 tarball +- Drop patches + 0001-Fix-fedabipkgdiff-configure-check-for-Python-3.12.patch and + 0001-Fix-fedabipkgdiff-configure-check-for-Python-3.12.patch +- Enable build with support for BTF +- Added BuildRequires: libbpf-devel +- Support soname bumped to libabigail.so.3.0.0 + +* Thu Oct 12 2023 Dodji Seketeli - 2.3-3 +- Use the SPDX format to express the license of the package +- Fix a compilation warning + +* Thu Jul 20 2023 Fedora Release Engineering - 2.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Thu Apr 27 2023 Dodji Seketeli - 2.3-1 +- Update to upstream 2.3 release +- Don't do "dos2unix doc/manuals/html/_static/jquery.js" + The file doc/manuals/html/_static/jquery.js is no more. + Hence, don't BuildRequires: dos2unix anymore. +- The libaigail binary is now libabigail.so.2.0.0. + +* Thu Jan 19 2023 Fedora Release Engineering - 2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Dec 2 2022 Dodji Seketeli - 2.2-1 +- Update to upstream 2.2 release. +- Switch to a tar.xz tarball. + +* Wed Sep 21 2022 Dodji Seketeli - 2.1-1 +- Update to upstream 2.1 +- Add libabigail.so.1 and libabigail.so.1.0.0 to the package. +- Enable CTF support when running the tests. +- Add binutils-devel as BuildRequires, for CTF. + +* Thu Jul 21 2022 Fedora Release Engineering - 2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jan 20 2022 Fedora Release Engineering - 2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Mon Oct 4 2021 Dodji Seketeli - 2.0-1 +- Update to upstream 2.0 tarball +- Change License to ASL 2.0 to comply with the upstream license change. + +* Thu Jul 22 2021 Fedora Release Engineering - 1.8.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Feb 25 2021 Dodji Seketeli - 1.8.2-1 +- Update to upstream 1.8.2 point release +- Require dpkg and koji only on Fedora builds only. + +* Wed Jan 27 2021 Dodji Seketeli - 1.8.1-1 +- Update to upstream fixes up to libabigail-1.8.1 + This encompasses this fixes, compared to the last 1.8 release: + ir: Add better comments to types_have_similar_structure + mainpage: Update web page for 1.8 release + Bug 26992 - Try harder to resolve declaration-only classes + Bug 27204 - potential loss of some aliased ELF function symbols + Ignore duplicated functions and those not associated with ELF symbols + Bug 27236 - Pointer comparison wrongly fails because of typedef change + Bug 27233 - fedabipkgdiff fails on package gnupg2 from Fedora 33 + Bug 27232 - fedabipkgdiff fails on gawk from Fedora 33 + dwarf-reader: Support fast DW_FORM_line_strp string comparison + gen-changelog.py: Update call to subprocess.Popen & cleanup + Bug 27255 - fedabipkgdiff fails on nfs-utils on Fedora 33 + abidiff: support --dump-diff-tree with --leaf-changes-only + ir: Arrays are indirect types for type structure similarity purposes + Add qualifier / typedef / array / pointer test + abg-ir: Optimize calls to std::string::find() for a single char. + abipkgdiff: Address operator precedence warning + +* Tue Jan 26 2021 Fedora Release Engineering - 1.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Dec 1 2020 Dodji Seketeli - 1.8-1 +- Update to upstream 1.8 +- Add 'make check-self-compare' to the regression tests run. +- BuildRequires python3-koji + +* Tue Jul 28 2020 Fedora Release Engineering - 1.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Feb 25 2020 Dodji Seketeli - 1.7-1 +- Update to upstream 1.7 + +* Mon Feb 17 2020 Sinny Kumari - 1.6-4 +- Add koji as BuildRequires +- Fixes: RHBZ#1799575 + +* Wed Jan 29 2020 Fedora Release Engineering - 1.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Thu Jul 25 2019 Fedora Release Engineering - 1.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..3fd3ab7 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,5 @@ +summary: CI Gating Plan +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index 7c255d6..ee4135f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libabigail-1.6.tar.gz) = 2ba775bd836b53265dae60e66065fc2106e7f633e890cc70b6abacb8426e04ec0b7b38593c21336f5785cf5e4eb8d110fb15ce63124cddc59f660f31c7b25b3c +SHA512 (libabigail-2.9.tar.xz) = 5bdf5ec49a5931a61bf28317b41eee583d6277d00ac621b2d2a97bbc0d816c3662bcfe13a5ac7aeee11c947afb69a5a0a9a8015fcebad09965b45af9b1e23606 diff --git a/tests/libabigail-testsuite/main.fmf b/tests/libabigail-testsuite/main.fmf new file mode 100644 index 0000000..a21b94e --- /dev/null +++ b/tests/libabigail-testsuite/main.fmf @@ -0,0 +1,13 @@ +summary: libabigail testing by upstream testsuite +component: +- libabigail +test: ./test.sh +tier: 1 +framework: beakerlib +require+: +- libabigail +- rpm-build +- yum-utils +- gcc-c++ +- coreutils +duration: 1h diff --git a/tests/libabigail-testsuite/test.sh b/tests/libabigail-testsuite/test.sh new file mode 100755 index 0000000..c29f398 --- /dev/null +++ b/tests/libabigail-testsuite/test.sh @@ -0,0 +1,59 @@ +#!/bin/bash +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +BUILD_USER=${BUILD_USER:-lbbglbld} +TESTS_COUNT_MIN=${TESTS_COUNT_MIN:-10} +PACKAGE="libabigail" +REQUIRES="$PACKAGE rpm-build gcc-c++" +if rlIsFedora; then + REQUIRES="$REQUIRES dnf-utils" +else + REQUIRES="$REQUIRES yum-utils" +fi + +# variables needed for 'make check' +export RPM_PACKAGE_NAME=$(rpm -q --qf='%{NAME}\n' $PACKAGE) +export RPM_PACKAGE_VERSION=$(rpm -q --qf='%{VERSION}\n' $PACKAGE) +export RPM_PACKAGE_RELEASE=$(rpm -q --qf='%{RELEASE}\n' $PACKAGE) +export RPM_ARCH=$(rpm -q --qf='%{ARCH}\n' $PACKAGE) + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm --all + rlRun "TmpDir=\$(mktemp -d /home/libabigail.XXXXXXXXXX)" # work in /home due to high demands on disk space + rlRun "pushd $TmpDir" + rlFetchSrcForInstalled $PACKAGE + rlRun "useradd -N $BUILD_USER" 0,9 + [ "$?" == "0" ] && rlRun "del=yes" + rlRun "chown -R $BUILD_USER:users $TmpDir" + rlPhaseEnd + + rlPhaseStartSetup "build libabigail" + rlRun "rpm -D \"_topdir $TmpDir\" -U *.src.rpm" + rlRun "yum-builddep -y $TmpDir/SPECS/*.spec &>$TmpDir/yum-builddep.log" + rlRun "rlFileSubmit $TmpDir/yum-builddep.log yum-builddep.log" + rlRun "su -c 'rpmbuild -D \"_topdir $TmpDir\" -bc $TmpDir/SPECS/*.spec &>$TmpDir/rpmbuild.log' $BUILD_USER" + rlRun "rlFileSubmit $TmpDir/rpmbuild.log rpmbuild.log" + rlRun "cd $(dirname `find $TmpDir -name configure -type f`)" + rlPhaseEnd + + rlPhaseStartTest "run testsuite" + rlRun "su -c 'make check |& tee $TmpDir/testsuite.log' $BUILD_USER" + rlRun "rlFileSubmit tests/test-suite.log test-suite.log" + rlRun "rlFileSubmit $TmpDir/testsuite.log testsuite.log" + rlPhaseEnd + + rlPhaseStartTest "evaluate results" + rlRun "grep -E '^# FAIL:|^# XPASS:|^# ERROR:' $TmpDir/testsuite.log | grep -vqE ':\s*0$'" 1 + rlRun "tests_count=\$(grep -E '^PASS:' $TmpDir/testsuite.log | wc -l)" + [ "$tests_count" -ge "$TESTS_COUNT_MIN" ] && rlLogInfo "Test counter: $tests_count" || rlFail "Test counter $tests_count should be greater than or equal to $TESTS_COUNT_MIN" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + [ "$del" == "yes" ] && rlRun "userdel -f -r $BUILD_USER" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd