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 013b34f..bfec4c1 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ /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 @@ -44,3 +45,4 @@ /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 1e35355..19dded8 100644 --- a/libabigail.spec +++ b/libabigail.spec @@ -1,8 +1,11 @@ -%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: 2.8 +Version: 2.9 Release: 1%{?dist} Summary: Set of ABI analysis tools @@ -11,6 +14,7 @@ URL: https://sourceware.org/libabigail/ Source0: http://mirrors.kernel.org/sourceware/libabigail/%{tarball_name}.tar.xz BuildRequires: git +BuildRequires: libbpf-devel BuildRequires: binutils-devel BuildRequires: gcc-c++ BuildRequires: libtool @@ -21,12 +25,18 @@ BuildRequires: xz-devel >= 5.2.0 BuildRequires: doxygen BuildRequires: python3-sphinx BuildRequires: texinfo -BuildRequires: dpkg -BuildRequires: wget -BuildRequires: koji -BuildRequires: python3-koji +%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 The libabigail package comprises seven command line utilities: @@ -64,14 +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 @@ -90,10 +102,10 @@ them manually. %endif %prep -%setup -n %{tarball_name} +%autosetup -v -S git %build -%configure --disable-abidb --enable-ctf --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 @@ -112,18 +124,13 @@ find %{buildroot} -name '*.la' -exec rm -f {} ';' # default 'install' target of the makefile. make -C doc/manuals install-man-and-info-doc DESTDIR=%{buildroot} -%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) -time make %{?_smp_mflags} check-self-compare || (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 @@ -134,8 +141,11 @@ fi %{_bindir}/abilint %{_bindir}/abipkgdiff %{_bindir}/kmidiff -%{_libdir}/libabigail.so.7 -%{_libdir}/libabigail.so.7.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 LICENSE.txt license-change-2020.txt @@ -153,12 +163,20 @@ fi %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 @@ -170,43 +188,82 @@ fi - 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 -* Wed Apr 17 2024 Dodji Seketeli - 2.5-1 +* 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. -- Disable abidb as it requires python 3.9 +- Add abidb to the package + Added BuildRequires: python3-GitPython, python3-libarchive-c - Better handle error handling when tests fails. -* Mon Nov 20 2023 Dodji Seketeli - 2.4-3 +* 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-2 +* 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. -- Fix sourceware.org/PR31017 - "Support Flex array conversion suppression" - Apply patch 0002-suppression-Add-has_strict_flexible_array_data_membe.patch -- Use SPDX license description -- Add git as build requirement -- Use git to apply the patches as they apply binary changes and patch - doesn't know how to handle these. -- As the paches touch Makefile.am files, run autoreconf after - applying the patches. + 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" @@ -214,6 +271,9 @@ fi 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. @@ -224,16 +284,26 @@ fi - 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 +* 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: + 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 @@ -251,15 +321,26 @@ fi 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 -- Add BuildRequires python3-koji +- Add 'make check-self-compare' to the regression tests run. +- BuildRequires python3-koji -* Mon Mar 2 2020 Dodji Seketeli - 1.7-1 +* 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 - - Add Koji as BuildRequires - Fixes: RHBZ#1799575 + +* 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 88d59ac..ee4135f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libabigail-2.8.tar.xz) = e919f12c914addb9c64d15d40c50e50ce1b08ac8f64f11adb9274cbdfc568b7e2eb99f669866b413a3e6c6246611b529be1f8d226cf58f7a5c6e2a7061d88e8c +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