dpdk-fm10k/.travis.yml
David Marchand 777014e56d devtools: add ABI checks
For normal developers, those checks are disabled.

Enabling them requires a configuration that will trigger the ABI dumps
generation as part of the existing devtools/test-build.sh and
devtools/test-meson-builds.sh scripts.

Those checks are enabled in the CI for the default meson options on x86
and aarch64 so that proposed patches are validated via our CI robot.
A cache of the ABI is stored in travis jobs to avoid rebuilding too
often.

Checks can be informational only, by setting ABI_CHECKS_WARN_ONLY when
breaking the ABI in a future release.

Explicit suppression rules have been added on internal structures
exposed to crypto drivers as the current ABI policy does not apply to
them.
This could be improved in the future by carefully splitting the headers
content with application and driver "users" in mind.

We currently have issues reported for librte_crypto recent changes for
which suppression rules have been added too.

Mellanox glue libraries are explicitly skipped as they are not part of
the application ABI.

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Luca Boccassi <bluca@debian.org>
2020-02-05 15:14:46 +01:00

172 lines
3.8 KiB
YAML

language: c
cache:
ccache: true
directories:
- reference
compiler:
- gcc
- clang
dist: bionic
os:
- linux
addons:
apt:
update: true
packages: &required_packages
- [libnuma-dev, linux-headers-$(uname -r), python3-setuptools, python3-wheel, python3-pip, ninja-build]
aarch64_packages: &aarch64_packages
- *required_packages
- [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
extra_packages: &extra_packages
- *required_packages
- [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4, abigail-tools]
build_32b_packages: &build_32b_packages
- *required_packages
- [gcc-multilib]
doc_packages: &doc_packages
- [doxygen, graphviz, python3-sphinx]
before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
env:
- DEF_LIB="static"
- DEF_LIB="shared"
- DEF_LIB="static" OPTS="-Denable_kmods=false"
- DEF_LIB="shared" OPTS="-Denable_kmods=false"
- DEF_LIB="shared" RUN_TESTS=1
matrix:
include:
- env: DEF_LIB="static" BUILD_32BIT=1
compiler: gcc
addons:
apt:
packages:
- *build_32b_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" AARCH64=1
compiler: gcc
addons:
apt:
packages:
- *aarch64_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false" AARCH64=1
compiler: gcc
addons:
apt:
packages:
- *aarch64_packages
- env: DEF_LIB="static" EXTRA_PACKAGES=1
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- *doc_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="static" EXTRA_PACKAGES=1
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" EXTRA_PACKAGES=1
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
compiler: clang
addons:
apt:
packages:
- *extra_packages
- *doc_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="static"
arch: arm64
compiler: gcc
addons:
apt:
packages:
- *required_packages
- env: DEF_LIB="shared"
arch: arm64
compiler: gcc
addons:
apt:
packages:
- *required_packages
- env: DEF_LIB="static"
arch: arm64
compiler: clang
addons:
apt:
packages:
- *required_packages
- env: DEF_LIB="shared"
arch: arm64
compiler: clang
addons:
apt:
packages:
- *required_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false" BUILD_DOCS=1
arch: arm64
compiler: gcc
addons:
apt:
packages:
- *required_packages
- *doc_packages
- env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" EXTRA_PACKAGES=1 ABI_CHECKS=1
arch: arm64
compiler: gcc
addons:
apt:
packages:
- *extra_packages
script: ./.ci/${TRAVIS_OS_NAME}-build.sh