ci: enable v21 ABI checks

v21 ABI will be maintained until v21.11.

Let's use the latest released libabigail 1.8.

In GitHub Actions, libabigail binaries and the ABI reference are stored
in two shared caches as all branches can use the same.

While at it, we can reproduce changes from the commit 0b8086ce3f
("devtools: remove useless files from ABI reference").
This will save some space in the CI caches.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
This commit is contained in:
David Marchand 2020-12-04 18:36:22 +01:00
parent 87009585e2
commit 443267090e
3 changed files with 56 additions and 2 deletions

View File

@ -86,10 +86,13 @@ if [ "$ABI_CHECKS" = "true" ]; then
if [ ! -d reference ]; then
refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG)
git clone --single-branch -b $REF_GIT_TAG $REF_GIT_REPO $refsrcdir
meson --werror $OPTS $refsrcdir $refsrcdir/build
meson $OPTS -Dexamples= $refsrcdir $refsrcdir/build
ninja -C $refsrcdir/build
DESTDIR=$(pwd)/reference ninja -C $refsrcdir/build install
devtools/gen-abi.sh reference
find reference/usr/local -name '*.a' -delete
rm -rf reference/usr/local/bin
rm -rf reference/usr/local/share
echo $REF_GIT_TAG > reference/VERSION
fi

View File

@ -15,10 +15,13 @@ jobs:
runs-on: ${{ matrix.config.os }}
env:
AARCH64: ${{ matrix.config.cross == 'aarch64' }}
ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }}
BUILD_32BIT: ${{ matrix.config.cross == 'i386' }}
BUILD_DOCS: ${{ contains(matrix.config.checks, 'doc') }}
CC: ccache ${{ matrix.config.compiler }}
DEF_LIB: ${{ matrix.config.library }}
LIBABIGAIL_VERSION: libabigail-1.8
REF_GIT_TAG: v20.11
RUN_TESTS: ${{ contains(matrix.config.checks, 'tests') }}
strategy:
@ -31,7 +34,7 @@ jobs:
- os: ubuntu-18.04
compiler: gcc
library: shared
checks: doc+tests
checks: abi+doc+tests
- os: ubuntu-18.04
compiler: clang
library: static
@ -60,6 +63,10 @@ jobs:
run: |
echo -n '::set-output name=ccache::'
echo 'ccache-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-'$(date -u +%Y-w%W)
echo -n '::set-output name=libabigail::'
echo 'libabigail-${{ matrix.config.os }}'
echo -n '::set-output name=abi::'
echo 'abi-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-${{ env.LIBABIGAIL_VERSION }}-${{ env.REF_GIT_TAG }}'
- name: Retrieve ccache cache
uses: actions/cache@v2
with:
@ -67,10 +74,27 @@ jobs:
key: ${{ steps.get_ref_keys.outputs.ccache }}-${{ github.ref }}
restore-keys: |
${{ steps.get_ref_keys.outputs.ccache }}-refs/heads/main
- name: Retrieve libabigail cache
id: libabigail-cache
uses: actions/cache@v2
if: env.ABI_CHECKS == 'true'
with:
path: libabigail
key: ${{ steps.get_ref_keys.outputs.libabigail }}
- name: Retrieve ABI reference cache
uses: actions/cache@v2
if: env.ABI_CHECKS == 'true'
with:
path: reference
key: ${{ steps.get_ref_keys.outputs.abi }}
- name: Install packages
run: sudo apt install -y ccache libnuma-dev python3-setuptools
python3-wheel python3-pip ninja-build libbsd-dev libpcap-dev
libibverbs-dev libcrypto++-dev libfdt-dev libjansson-dev
- name: Install libabigail build dependencies if no cache is available
if: env.ABI_CHECKS == 'true' && steps.libabigail-cache.outputs.cache-hit != 'true'
run: sudo apt install -y autoconf automake libtool pkg-config libxml2-dev
libdw-dev
- name: Install i386 cross compiling packages
if: env.BUILD_32BIT == 'true'
run: sudo apt install -y gcc-multilib

View File

@ -2,6 +2,9 @@
language: c
cache:
ccache: true
directories:
- libabigail
- reference
dist: bionic
@ -18,6 +21,9 @@ _aarch64_packages: &aarch64_packages
- *required_packages
- [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
_libabigail_build_packages: &libabigail_build_packages
- [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev]
_build_32b_packages: &build_32b_packages
- *required_packages
- [gcc-multilib]
@ -28,6 +34,11 @@ _doc_packages: &doc_packages
before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
script: ./.ci/${TRAVIS_OS_NAME}-build.sh
env:
global:
- LIBABIGAIL_VERSION=libabigail-1.8
- REF_GIT_TAG=v20.11
jobs:
include:
# x86_64 gcc jobs
@ -45,6 +56,14 @@ jobs:
packages:
- *required_packages
- *doc_packages
- env: DEF_LIB="shared" ABI_CHECKS=true
arch: amd64
compiler: gcc
addons:
apt:
packages:
- *required_packages
- *libabigail_build_packages
# x86_64 clang jobs
- env: DEF_LIB="static"
arch: amd64
@ -104,6 +123,14 @@ jobs:
packages:
- *required_packages
- *doc_packages
- env: DEF_LIB="shared" ABI_CHECKS=true
arch: arm64
compiler: gcc
addons:
apt:
packages:
- *required_packages
- *libabigail_build_packages
# aarch64 clang jobs
- env: DEF_LIB="static"
arch: arm64