From patchwork Wed Oct 23 01:07:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Kevin Laatz X-Patchwork-Id: 61714 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C61E71BFF3; Wed, 23 Oct 2019 11:25:50 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id C58CE1BFEE for ; Wed, 23 Oct 2019 11:25:48 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Oct 2019 02:25:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,220,1569308400"; d="scan'208";a="397983760" Received: from silpixa00399838.ir.intel.com (HELO silpixa00399838.ger.corp.intel.com) ([10.237.223.140]) by fmsmga005.fm.intel.com with ESMTP; 23 Oct 2019 02:25:45 -0700 From: Kevin Laatz To: dev@dpdk.org Cc: bruce.richardson@intel.com, thomas@monjalon.net, ray.kinsella@intel.com, Kevin Laatz Date: Wed, 23 Oct 2019 01:07:48 +0000 Message-Id: <20191023010754.65172-1-kevin.laatz@intel.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Subject: [dpdk-dev] [RFC 0/6] Add ABI compatibility checks to the meson build 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" With the recent changes made to stabilize ABI versioning in DPDK, it will become increasingly important to check patches for ABI compatibility. We propose adding the ABI compatibility checking to be done as part of the build. The advantages to adding the ABI compatibility checking to the build are two-fold. Firstly, developers can easily check their patches to make sure they don’t break the ABI without adding any extra steps. Secondly, it makes the integration into existing CI seamless since there are no extra scripts to make the CI run. The build will run as usual and if an incompatibility is detected in the ABI, the build will fail and show the incompatibility. As an added bonus, enabling the ABI compatibility checks does not impact the build speed. The proposed solution works as follows: 1. Generate the ABI dump of the baseline. This can be done with the new script added in this RFC. This step will only need to be done when the ABI version changes (so once a year) and can be added to master so it exists by default. This step can be skipped if the dump files for the baseline already exist. 2. Build with meson. If there is an ABI incompatibility, the build will fail and print the incompatibility information. The patches accompanying this RFC add the ABI dump file generating script, the meson option required to enable/disable the checks, and the required meson changes to run the compatibility checks during the build. This patchset depends on: - The "Implement the new ABI policy and add helper scripts" patchset (http://patches.dpdk.org/project/dpdk/list/?series=6913). - The "Add scanning for experimental symbols to meson" patchset (http://patches.dpdk.org/project/dpdk/list/?series=6744). - "build: enable extra warnings for meson build" patch (http://patches.dpdk.org/patch/60622/). Bruce Richardson (2): build: enable debug info by default in meson builds build: use meson warning levels Kevin Laatz (4): devtools: add abi dump generation script build: add meson option for abi related checks build: add lib abi checks to meson build: add drivers abi checks to meson buildtools/meson.build | 4 ++++ config/meson.build | 40 +++++++++++++++++++++------------------- devtools/gen-abi-dump.sh | 24 ++++++++++++++++++++++++ drivers/meson.build | 17 ++++++++++++++++- lib/meson.build | 17 ++++++++++++++++- meson.build | 9 ++++++++- meson_options.txt | 2 ++ 7 files changed, 91 insertions(+), 22 deletions(-) create mode 100755 devtools/gen-abi-dump.sh