From patchwork Fri Dec 4 17:36:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 84755 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 18E5AA09E0; Fri, 4 Dec 2020 18:37:03 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F29B8C8C4; Fri, 4 Dec 2020 18:36:45 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by dpdk.org (Postfix) with ESMTP id 863E05681 for ; Fri, 4 Dec 2020 18:36:43 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607103402; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZWkCyR4Oxv4JLWbD7T6v2fMn3R7fX6Nc/iFeLVgIx1E=; b=SK+DnDfcypW0qsJhIjJvegbOfl153yp7pGet6n01D5iGGqIESRBuq0+Ct4IEzXrTdcdcWP 2nJXrQ3hd+E+6urZtlt0gJUtsRRFvhB+KbwKbzz3L4DKGWs6MGuQ+wqLDYvidfB9Vh+XLm AIT7xHuU5dYzn4AVLdp7Mhv0HBtuEK0= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-289-TEZ7rNDQOR2Iyyl3CRAp-g-1; Fri, 04 Dec 2020 12:36:40 -0500 X-MC-Unique: TEZ7rNDQOR2Iyyl3CRAp-g-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2334A10054FF; Fri, 4 Dec 2020 17:36:39 +0000 (UTC) Received: from dmarchan.remote.csb (unknown [10.40.194.112]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0AF105D6A1; Fri, 4 Dec 2020 17:36:35 +0000 (UTC) From: David Marchand To: dev@dpdk.org Cc: aconole@redhat.com, Michael Santana Date: Fri, 4 Dec 2020 18:36:22 +0100 Message-Id: <20201204173622.12053-2-david.marchand@redhat.com> In-Reply-To: <20201204173622.12053-1-david.marchand@redhat.com> References: <20201124215700.12126-1-david.marchand@redhat.com> <20201204173622.12053-1-david.marchand@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=david.marchand@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Subject: [dpdk-dev] [PATCH v2 2/2] ci: enable v21 ABI checks X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 0b8086ce3fe7 ("devtools: remove useless files from ABI reference"). This will save some space in the CI caches. Signed-off-by: David Marchand Acked-by: Aaron Conole --- .ci/linux-build.sh | 5 ++++- .github/workflows/build.yml | 26 +++++++++++++++++++++++++- .travis.yml | 27 +++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 2 deletions(-) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index ee8d07f865..d2c821adf3 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -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 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bef6e52372..05eb59527f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 diff --git a/.travis.yml b/.travis.yml index d655e286c3..5aa7ad49f1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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