From f9b0945c1bf8fcd06b4dc3c8786c7d159ec6c3d1 Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Sun, 20 Jan 2019 15:19:44 +0000 Subject: [PATCH] Problem: have to check ABI compatibility manually Solution: automate it on Travis --- .travis.yml | 8 +++++ builds/abi-compliance-checker/ci_build.sh | 40 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100755 builds/abi-compliance-checker/ci_build.sh diff --git a/.travis.yml b/.travis.yml index 7aadca19..80cfddef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -124,6 +124,14 @@ matrix: - libnorm-dev - libpgm-dev - libsodium-dev + - env: BUILD_TYPE=abi-compliance-checker + os: linux + dist: xenial + addons: + apt: + packages: + - abi-dumper + - abi-compliance-checker sudo: false diff --git a/builds/abi-compliance-checker/ci_build.sh b/builds/abi-compliance-checker/ci_build.sh new file mode 100755 index 00000000..8b0bce0a --- /dev/null +++ b/builds/abi-compliance-checker/ci_build.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +set -x + +cd ../../ + +mkdir tmp +BUILD_PREFIX=$PWD/tmp + +CONFIG_OPTS=() +CONFIG_OPTS+=("CFLAGS=-I${BUILD_PREFIX}/include -g -Og") +CONFIG_OPTS+=("CPPFLAGS=-I${BUILD_PREFIX}/include") +CONFIG_OPTS+=("CXXFLAGS=-I${BUILD_PREFIX}/include -g -Og") +CONFIG_OPTS+=("LDFLAGS=-L${BUILD_PREFIX}/lib") +CONFIG_OPTS+=("PKG_CONFIG_PATH=${BUILD_PREFIX}/lib/pkgconfig") +CONFIG_OPTS+=("--prefix=${BUILD_PREFIX}") +CONFIG_OPTS+=("--enable-drafts=no") + +function print_abi_api_breakages() { + echo "ABI breakages detected:" + cat compat_reports/libzmq/${LATEST_VERSION}_to_HEAD/abi_affected.txt | c++filt + echo "API breakages detected:" + cat compat_reports/libzmq/${LATEST_VERSION}_to_HEAD/src_affected.txt | c++filt + exit 1 +} + +./autogen.sh +./configure "${CONFIG_OPTS[@]}" +make VERBOSE=1 -j5 +abi-dumper src/.libs/libzmq.so -o ${BUILD_PREFIX}/libzmq.head.dump -lver HEAD + +git clone --depth 1 -b latest_release https://github.com/zeromq/libzmq.git latest_release +cd latest_release +LATEST_VERSION=$(git describe --abbrev=0 --tags) +./autogen.sh +./configure "${CONFIG_OPTS[@]}" +make VERBOSe=1 -j5 +abi-dumper src/.libs/libzmq.so -o ${BUILD_PREFIX}/libzmq.latest.dump -lver ${LATEST_VERSION} + +abi-compliance-checker -l libzmq -d1 ${BUILD_PREFIX}/libzmq.latest.dump -d2 ${BUILD_PREFIX}/libzmq.head.dump -list-affected || print_abi_api_breakages