diff --git a/.gitignore b/.gitignore index 92f96ae..bfec4c1 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,8 @@ /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/libabigail.spec b/libabigail.spec index d884749..19dded8 100644 --- a/libabigail.spec +++ b/libabigail.spec @@ -1,17 +1,17 @@ +# dependencies are not available in RHEL +%bcond abidb %{undefined rhel} + %global tarball_revision 1 %global tarball_name %{name}-%{version} Name: libabigail -Version: 2.4 -Release: 7%{?dist} +Version: 2.9 +Release: 1%{?dist} Summary: Set of ABI analysis tools License: Apache-2.0 WITH LLVM-exception URL: https://sourceware.org/libabigail/ Source0: http://mirrors.kernel.org/sourceware/libabigail/%{tarball_name}.tar.xz -Patch1: 0001-Bug-31045-Don-t-try-setting-translation-unit-for-uni.patch -Patch2: 0002-suppression-Add-has_strict_flexible_array_data_membe.patch -Patch3: 0003-Replace-deprecated-mock-with-unittest.mock.patch BuildRequires: git BuildRequires: libbpf-devel @@ -20,10 +20,18 @@ 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 -%if 0%{?fedora} +%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 @@ -66,7 +74,7 @@ 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 @@ -97,7 +105,7 @@ them manually. %autosetup -v -S git %build -%configure --enable-ctf --enable-btf --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 @@ -116,7 +124,7 @@ 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 %py3_shebang_fix %{buildroot}%{_bindir}/fedabipkgdiff %endif @@ -124,10 +132,6 @@ make -C doc/manuals install-man-and-info-doc DESTDIR=%{buildroot} %check time make %{?_smp_mflags} check check-self-compare || (cat tests/test-suite.log && exit 2) -if test $? -ne 0; then - cat tests/tests-suite.log -fi - %ldconfig_scriptlets %files @@ -137,8 +141,11 @@ fi %{_bindir}/abilint %{_bindir}/abipkgdiff %{_bindir}/kmidiff -%{_libdir}/libabigail.so.3 -%{_libdir}/libabigail.so.3.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 @@ -156,12 +163,63 @@ 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 + +* 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 diff --git a/plans/ci.fmf b/plans/ci.fmf index 1ad2c12..3fd3ab7 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,6 +1,5 @@ summary: CI Gating Plan discover: how: fmf - directory: tests execute: - how: beakerlib + how: tmt diff --git a/sources b/sources index 32bfac4..ee4135f 100644 --- a/sources +++ b/sources @@ -1,3 +1 @@ -SHA512 (libabigail-2.4.tar.xz) = f9b51f8710c75b911da10c1e93e0b6b6fa575f99e8f37a5f51e93a8e6b79c9ad1541e531730b410385053d6565f807300f7910dca48cbd3e991d111198781d95 -SHA512 (0001-Bug-31045-Don-t-try-setting-translation-unit-for-uni.patch) = f2145d6f9552dcd818228c08a68b6d54f7d79c53d79c2fff18f2664ac3684d2da09670247e482a18ee8f3b44fafbac425ca8d357ea4c621212b84b8180bd989e -SHA512 (0002-suppression-Add-has_strict_flexible_array_data_membe.patch) = 28b8eecba059e2e08e907ecc8ee9e03d57acdc94ce4e1aea4b8c51cf78c7711812215539149e5d24e77fb4c7a6b62c2e5062e7ff87b69d4ee2a85d2205e8b00b +SHA512 (libabigail-2.9.tar.xz) = 5bdf5ec49a5931a61bf28317b41eee583d6277d00ac621b2d2a97bbc0d816c3662bcfe13a5ac7aeee11c947afb69a5a0a9a8015fcebad09965b45af9b1e23606 diff --git a/tests/libabigail-testsuite/Makefile b/tests/libabigail-testsuite/Makefile deleted file mode 100644 index 4d741d5..0000000 --- a/tests/libabigail-testsuite/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/libabigail/Sanity/libabigail-testsuite -# Description: libabigail testing by upstream testsuite -# Author: Michal Kolar -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/libabigail/Sanity/libabigail-testsuite -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Michal Kolar " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: libabigail testing by upstream testsuite" >> $(METADATA) - @echo "Type: Sanity" >> $(METADATA) - @echo "TestTime: 1h" >> $(METADATA) - @echo "RunFor: libabigail" >> $(METADATA) - @echo "Requires: libabigail rpm-build yum-utils gcc-c++" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5 -RHEL6 -RHEL7" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/libabigail-testsuite/PURPOSE b/tests/libabigail-testsuite/PURPOSE deleted file mode 100644 index 52e213c..0000000 --- a/tests/libabigail-testsuite/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/libabigail/Sanity/libabigail-testsuite -Description: libabigail testing by upstream testsuite -Author: Michal Kolar diff --git a/tests/libabigail-testsuite/main.fmf b/tests/libabigail-testsuite/main.fmf index 23d68bb..a21b94e 100644 --- a/tests/libabigail-testsuite/main.fmf +++ b/tests/libabigail-testsuite/main.fmf @@ -1,15 +1,13 @@ summary: libabigail testing by upstream testsuite -description: '' -contact: Michal Kolar component: - libabigail -test: ./runtest.sh +test: ./test.sh +tier: 1 framework: beakerlib -recommend: +require+: - libabigail - rpm-build - yum-utils - gcc-c++ +- coreutils duration: 1h -extra-summary: /tools/libabigail/Sanity/libabigail-testsuite -extra-task: /tools/libabigail/Sanity/libabigail-testsuite diff --git a/tests/libabigail-testsuite/runtest.sh b/tests/libabigail-testsuite/runtest.sh deleted file mode 100755 index 4b69b8b..0000000 --- a/tests/libabigail-testsuite/runtest.sh +++ /dev/null @@ -1,83 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/libabigail/Sanity/libabigail-testsuite -# Description: libabigail testing by upstream testsuite -# Author: Michal Kolar -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2021 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /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 - -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 -m -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" - rlRun "su -c 'rpmbuild -D \"_topdir $TmpDir\" -bc $TmpDir/SPECS/*.spec &>$TmpDir/rpmbuild.log' $BUILD_USER" - rlRun "rlFileSubmit $TmpDir/rpmbuild.log" - rlRun "cd $TmpDir/BUILD/libabigail-*" - rlPhaseEnd - - rlPhaseStartTest "run testsuite" - rlRun "su -c 'make -k check |& tee -a $TmpDir/testsuite.log' $BUILD_USER" - rlRun "cp tests/test-suite.log $TmpDir/make-check.log" - rlRun "rlFileSubmit $TmpDir/make-check.log" - rlRun "su -c 'make -k check-self-compare |& tee -a $TmpDir/testsuite.log' $BUILD_USER" - rlRun "cp tests/test-suite.log $TmpDir/make-check-self-compare.log" - rlRun "rlFileSubmit $TmpDir/make-check-self-compare.log" - rlPhaseEnd - - rlPhaseStartTest "evaluate results" - rlRun "cd $TmpDir" - rlRun "cat make-*.log | grep -E '^# FAIL:|^# XPASS:|^# ERROR:' | 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 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