From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 87283A04F5; Wed, 11 Dec 2019 19:22:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9F8BA2C6A; Wed, 11 Dec 2019 19:22:11 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id BDDD41D9E for ; Wed, 11 Dec 2019 19:22:09 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Dec 2019 10:22:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,302,1571727600"; d="scan'208";a="203655459" Received: from silpixa00399838.ir.intel.com (HELO silpixa00399838.ger.corp.intel.com) ([10.237.222.157]) by orsmga007.jf.intel.com with ESMTP; 11 Dec 2019 10:22:06 -0800 From: Kevin Laatz To: dev@dpdk.org Cc: thomas@monjalon.net, david.marchand@redhat.com, bruce.richardson@intel.com, ray.kinsella@intel.com, Kevin Laatz Date: Wed, 11 Dec 2019 18:21:44 +0000 Message-Id: <20191211182147.19355-1-kevin.laatz@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191129210905.1865-1-kevin.laatz@intel.com> References: <20191129210905.1865-1-kevin.laatz@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v4 0/3] 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. Note: This patch set depends on: http://patches.dpdk.org/patch/63765/. The generated .dump files in this patch set are based on the changes in the patch "build: fix soname info for 19.11 compatibility". If a decision is made to use a different format for the sonames, then a v5 of this set will be required as the .dump files will need to be regenerated. --- v2: - Rebased on master for 19.11. - Moved the experimental syms checks next to the abi checks. This also removed the dependency on the experimental checks from the shared build. - General cleanup. v3: - Fixed typo in meson option name in buildtools/meson.build. v4: - removed commits 1 and 2 from the patch set since they are not needed as part of this change - squash commits 3,4,5,6 into a single commit - changes meson option from type boolean to feature - update travis packages - move check for windows to earlier in build - add abignore file to suppress experimental functions - make the directories we store dump files in hidden - add .dump files for v20.0 ABI to patch set Kevin Laatz (3): build: add dump files for v20.0 ABI build: add abi checks to meson build: clean up experimental syms check .travis.yml | 9 +- buildtools/dpdk.abignore | 2 + buildtools/meson.build | 3 + config/meson.build | 10 + devtools/gen-abi-dump.sh | 24 + drivers/.abi/librte_bus_dpaa.dump | 5303 ++++++++++++++ drivers/.abi/librte_bus_fslmc.dump | 5084 +++++++++++++ drivers/.abi/librte_bus_ifpga.dump | 973 +++ drivers/.abi/librte_bus_pci.dump | 835 +++ drivers/.abi/librte_bus_vdev.dump | 408 ++ drivers/.abi/librte_bus_vmbus.dump | 918 +++ drivers/.abi/librte_common_cpt.dump | 36 + drivers/.abi/librte_common_dpaax.dump | 177 + drivers/.abi/librte_common_octeontx.dump | 77 + drivers/.abi/librte_common_octeontx2.dump | 988 +++ drivers/.abi/librte_mempool_bucket.dump | 15 + drivers/.abi/librte_mempool_dpaa.dump | 323 + drivers/.abi/librte_mempool_dpaa2.dump | 484 ++ drivers/.abi/librte_mempool_octeontx.dump | 22 + drivers/.abi/librte_mempool_octeontx2.dump | 643 ++ drivers/.abi/librte_mempool_ring.dump | 15 + drivers/.abi/librte_mempool_stack.dump | 16 + drivers/.abi/librte_pmd_af_packet.dump | 22 + drivers/.abi/librte_pmd_af_xdp.dump | 23 + drivers/.abi/librte_pmd_ark.dump | 26 + drivers/.abi/librte_pmd_atlantic.dump | 1296 ++++ drivers/.abi/librte_pmd_avp.dump | 26 + drivers/.abi/librte_pmd_axgbe.dump | 27 + .../.abi/librte_pmd_bbdev_fpga_lte_fec.dump | 74 + drivers/.abi/librte_pmd_bbdev_null.dump | 17 + drivers/.abi/librte_pmd_bbdev_turbo_sw.dump | 17 + drivers/.abi/librte_pmd_bnx2x.dump | 28 + drivers/.abi/librte_pmd_bnxt.dump | 3499 +++++++++ drivers/.abi/librte_pmd_bond.dump | 3586 +++++++++ drivers/.abi/librte_pmd_caam_jr.dump | 47 + drivers/.abi/librte_pmd_ccp.dump | 1870 +++++ drivers/.abi/librte_pmd_crypto_scheduler.dump | 1473 ++++ drivers/.abi/librte_pmd_cxgbe.dump | 27 + drivers/.abi/librte_pmd_dpaa.dump | 2929 ++++++++ drivers/.abi/librte_pmd_dpaa2.dump | 3319 +++++++++ drivers/.abi/librte_pmd_dpaa2_event.dump | 36 + drivers/.abi/librte_pmd_dpaa2_sec.dump | 1511 ++++ drivers/.abi/librte_pmd_dpaa_event.dump | 32 + drivers/.abi/librte_pmd_dpaa_sec.dump | 1459 ++++ drivers/.abi/librte_pmd_dsw_event.dump | 23 + drivers/.abi/librte_pmd_e1000.dump | 3414 +++++++++ drivers/.abi/librte_pmd_ena.dump | 32 + drivers/.abi/librte_pmd_enetc.dump | 27 + drivers/.abi/librte_pmd_enic.dump | 3282 +++++++++ drivers/.abi/librte_pmd_failsafe.dump | 3162 ++++++++ drivers/.abi/librte_pmd_fm10k.dump | 894 +++ drivers/.abi/librte_pmd_hinic.dump | 3110 ++++++++ drivers/.abi/librte_pmd_hns3.dump | 28 + drivers/.abi/librte_pmd_i40e.dump | 3553 +++++++++ drivers/.abi/librte_pmd_iavf.dump | 71 + drivers/.abi/librte_pmd_ice.dump | 6395 +++++++++++++++++ drivers/.abi/librte_pmd_ifc.dump | 24 + drivers/.abi/librte_pmd_ixgbe.dump | 3369 +++++++++ drivers/.abi/librte_pmd_kni.dump | 22 + drivers/.abi/librte_pmd_liquidio.dump | 27 + drivers/.abi/librte_pmd_memif.dump | 27 + drivers/.abi/librte_pmd_netvsc.dump | 28 + drivers/.abi/librte_pmd_nfp.dump | 27 + drivers/.abi/librte_pmd_nitrox.dump | 19 + drivers/.abi/librte_pmd_null.dump | 22 + drivers/.abi/librte_pmd_null_crypto.dump | 1317 ++++ drivers/.abi/librte_pmd_octeontx.dump | 49 + drivers/.abi/librte_pmd_octeontx2.dump | 3140 ++++++++ drivers/.abi/librte_pmd_octeontx2_crypto.dump | 28 + drivers/.abi/librte_pmd_octeontx2_event.dump | 29 + .../.abi/librte_pmd_octeontx_compress.dump | 25 + drivers/.abi/librte_pmd_octeontx_crypto.dump | 28 + drivers/.abi/librte_pmd_octeontx_event.dump | 36 + drivers/.abi/librte_pmd_opdl_event.dump | 28 + drivers/.abi/librte_pmd_openssl.dump | 1315 ++++ drivers/.abi/librte_pmd_pcap.dump | 23 + drivers/.abi/librte_pmd_pfe.dump | 41 + drivers/.abi/librte_pmd_qat.dump | 118 + drivers/.abi/librte_pmd_qede.dump | 46 + drivers/.abi/librte_pmd_ring.dump | 142 + drivers/.abi/librte_pmd_sfc.dump | 3905 ++++++++++ drivers/.abi/librte_pmd_skeleton_event.dump | 25 + drivers/.abi/librte_pmd_softnic.dump | 5523 ++++++++++++++ drivers/.abi/librte_pmd_sw_event.dump | 28 + drivers/.abi/librte_pmd_tap.dump | 26 + drivers/.abi/librte_pmd_thunderx.dump | 28 + drivers/.abi/librte_pmd_vdev_netvsc.dump | 22 + drivers/.abi/librte_pmd_vhost.dump | 57 + drivers/.abi/librte_pmd_virtio.dump | 3808 ++++++++++ drivers/.abi/librte_pmd_virtio_crypto.dump | 1419 ++++ drivers/.abi/librte_pmd_vmxnet3.dump | 27 + drivers/.abi/librte_pmd_zlib.dump | 1035 +++ drivers/.abi/librte_rawdev_dpaa2_cmdif.dump | 32 + drivers/.abi/librte_rawdev_dpaa2_qdma.dump | 185 + drivers/.abi/librte_rawdev_ioat.dump | 19 + drivers/.abi/librte_rawdev_ntb.dump | 772 ++ drivers/.abi/librte_rawdev_octeontx2_dma.dump | 23 + drivers/.abi/librte_rawdev_skeleton.dump | 21 + drivers/meson.build | 34 +- lib/.abi/librte_acl.dump | 329 + lib/.abi/librte_bbdev.dump | 1789 +++++ lib/.abi/librte_bitratestats.dump | 85 + lib/.abi/librte_bpf.dump | 280 + lib/.abi/librte_cfgfile.dump | 188 + lib/.abi/librte_cmdline.dump | 728 ++ lib/.abi/librte_compressdev.dump | 1249 ++++ lib/.abi/librte_cryptodev.dump | 1806 +++++ lib/.abi/librte_distributor.dump | 627 ++ lib/.abi/librte_eal.dump | 3330 +++++++++ lib/.abi/librte_efd.dump | 319 + lib/.abi/librte_ethdev.dump | 5272 ++++++++++++++ lib/.abi/librte_eventdev.dump | 5520 ++++++++++++++ lib/.abi/librte_fib.dump | 327 + lib/.abi/librte_flow_classify.dump | 1054 +++ lib/.abi/librte_gro.dump | 428 ++ lib/.abi/librte_gso.dump | 402 ++ lib/.abi/librte_hash.dump | 578 ++ lib/.abi/librte_ip_frag.dump | 814 +++ lib/.abi/librte_ipsec.dump | 1269 ++++ lib/.abi/librte_jobstats.dump | 197 + lib/.abi/librte_kni.dump | 657 ++ lib/.abi/librte_kvargs.dump | 98 + lib/.abi/librte_latencystats.dump | 427 ++ lib/.abi/librte_lpm.dump | 330 + lib/.abi/librte_mbuf.dump | 746 ++ lib/.abi/librte_member.dump | 216 + lib/.abi/librte_mempool.dump | 764 ++ lib/.abi/librte_meter.dump | 197 + lib/.abi/librte_metrics.dump | 102 + lib/.abi/librte_net.dump | 489 ++ lib/.abi/librte_pci.dump | 85 + lib/.abi/librte_pdump.dump | 339 + lib/.abi/librte_pipeline.dump | 1795 +++++ lib/.abi/librte_port.dump | 567 ++ lib/.abi/librte_power.dump | 490 ++ lib/.abi/librte_rawdev.dump | 840 +++ lib/.abi/librte_rcu.dump | 218 + lib/.abi/librte_reorder.dump | 455 ++ lib/.abi/librte_rib.dump | 556 ++ lib/.abi/librte_ring.dump | 285 + lib/.abi/librte_sched.dump | 1108 +++ lib/.abi/librte_security.dump | 1125 +++ lib/.abi/librte_stack.dump | 183 + lib/.abi/librte_table.dump | 544 ++ lib/.abi/librte_telemetry.dump | 122 + lib/.abi/librte_timer.dump | 322 + lib/.abi/librte_vhost.dump | 1624 +++++ lib/meson.build | 34 +- meson.build | 4 + meson_options.txt | 2 + 150 files changed, 129912 insertions(+), 22 deletions(-) create mode 100644 buildtools/dpdk.abignore create mode 100755 devtools/gen-abi-dump.sh create mode 100644 drivers/.abi/librte_bus_dpaa.dump create mode 100644 drivers/.abi/librte_bus_fslmc.dump create mode 100644 drivers/.abi/librte_bus_ifpga.dump create mode 100644 drivers/.abi/librte_bus_pci.dump create mode 100644 drivers/.abi/librte_bus_vdev.dump create mode 100644 drivers/.abi/librte_bus_vmbus.dump create mode 100644 drivers/.abi/librte_common_cpt.dump create mode 100644 drivers/.abi/librte_common_dpaax.dump create mode 100644 drivers/.abi/librte_common_octeontx.dump create mode 100644 drivers/.abi/librte_common_octeontx2.dump create mode 100644 drivers/.abi/librte_mempool_bucket.dump create mode 100644 drivers/.abi/librte_mempool_dpaa.dump create mode 100644 drivers/.abi/librte_mempool_dpaa2.dump create mode 100644 drivers/.abi/librte_mempool_octeontx.dump create mode 100644 drivers/.abi/librte_mempool_octeontx2.dump create mode 100644 drivers/.abi/librte_mempool_ring.dump create mode 100644 drivers/.abi/librte_mempool_stack.dump create mode 100644 drivers/.abi/librte_pmd_af_packet.dump create mode 100644 drivers/.abi/librte_pmd_af_xdp.dump create mode 100644 drivers/.abi/librte_pmd_ark.dump create mode 100644 drivers/.abi/librte_pmd_atlantic.dump create mode 100644 drivers/.abi/librte_pmd_avp.dump create mode 100644 drivers/.abi/librte_pmd_axgbe.dump create mode 100644 drivers/.abi/librte_pmd_bbdev_fpga_lte_fec.dump create mode 100644 drivers/.abi/librte_pmd_bbdev_null.dump create mode 100644 drivers/.abi/librte_pmd_bbdev_turbo_sw.dump create mode 100644 drivers/.abi/librte_pmd_bnx2x.dump create mode 100644 drivers/.abi/librte_pmd_bnxt.dump create mode 100644 drivers/.abi/librte_pmd_bond.dump create mode 100644 drivers/.abi/librte_pmd_caam_jr.dump create mode 100644 drivers/.abi/librte_pmd_ccp.dump create mode 100644 drivers/.abi/librte_pmd_crypto_scheduler.dump create mode 100644 drivers/.abi/librte_pmd_cxgbe.dump create mode 100644 drivers/.abi/librte_pmd_dpaa.dump create mode 100644 drivers/.abi/librte_pmd_dpaa2.dump create mode 100644 drivers/.abi/librte_pmd_dpaa2_event.dump create mode 100644 drivers/.abi/librte_pmd_dpaa2_sec.dump create mode 100644 drivers/.abi/librte_pmd_dpaa_event.dump create mode 100644 drivers/.abi/librte_pmd_dpaa_sec.dump create mode 100644 drivers/.abi/librte_pmd_dsw_event.dump create mode 100644 drivers/.abi/librte_pmd_e1000.dump create mode 100644 drivers/.abi/librte_pmd_ena.dump create mode 100644 drivers/.abi/librte_pmd_enetc.dump create mode 100644 drivers/.abi/librte_pmd_enic.dump create mode 100644 drivers/.abi/librte_pmd_failsafe.dump create mode 100644 drivers/.abi/librte_pmd_fm10k.dump create mode 100644 drivers/.abi/librte_pmd_hinic.dump create mode 100644 drivers/.abi/librte_pmd_hns3.dump create mode 100644 drivers/.abi/librte_pmd_i40e.dump create mode 100644 drivers/.abi/librte_pmd_iavf.dump create mode 100644 drivers/.abi/librte_pmd_ice.dump create mode 100644 drivers/.abi/librte_pmd_ifc.dump create mode 100644 drivers/.abi/librte_pmd_ixgbe.dump create mode 100644 drivers/.abi/librte_pmd_kni.dump create mode 100644 drivers/.abi/librte_pmd_liquidio.dump create mode 100644 drivers/.abi/librte_pmd_memif.dump create mode 100644 drivers/.abi/librte_pmd_netvsc.dump create mode 100644 drivers/.abi/librte_pmd_nfp.dump create mode 100644 drivers/.abi/librte_pmd_nitrox.dump create mode 100644 drivers/.abi/librte_pmd_null.dump create mode 100644 drivers/.abi/librte_pmd_null_crypto.dump create mode 100644 drivers/.abi/librte_pmd_octeontx.dump create mode 100644 drivers/.abi/librte_pmd_octeontx2.dump create mode 100644 drivers/.abi/librte_pmd_octeontx2_crypto.dump create mode 100644 drivers/.abi/librte_pmd_octeontx2_event.dump create mode 100644 drivers/.abi/librte_pmd_octeontx_compress.dump create mode 100644 drivers/.abi/librte_pmd_octeontx_crypto.dump create mode 100644 drivers/.abi/librte_pmd_octeontx_event.dump create mode 100644 drivers/.abi/librte_pmd_opdl_event.dump create mode 100644 drivers/.abi/librte_pmd_openssl.dump create mode 100644 drivers/.abi/librte_pmd_pcap.dump create mode 100644 drivers/.abi/librte_pmd_pfe.dump create mode 100644 drivers/.abi/librte_pmd_qat.dump create mode 100644 drivers/.abi/librte_pmd_qede.dump create mode 100644 drivers/.abi/librte_pmd_ring.dump create mode 100644 drivers/.abi/librte_pmd_sfc.dump create mode 100644 drivers/.abi/librte_pmd_skeleton_event.dump create mode 100644 drivers/.abi/librte_pmd_softnic.dump create mode 100644 drivers/.abi/librte_pmd_sw_event.dump create mode 100644 drivers/.abi/librte_pmd_tap.dump create mode 100644 drivers/.abi/librte_pmd_thunderx.dump create mode 100644 drivers/.abi/librte_pmd_vdev_netvsc.dump create mode 100644 drivers/.abi/librte_pmd_vhost.dump create mode 100644 drivers/.abi/librte_pmd_virtio.dump create mode 100644 drivers/.abi/librte_pmd_virtio_crypto.dump create mode 100644 drivers/.abi/librte_pmd_vmxnet3.dump create mode 100644 drivers/.abi/librte_pmd_zlib.dump create mode 100644 drivers/.abi/librte_rawdev_dpaa2_cmdif.dump create mode 100644 drivers/.abi/librte_rawdev_dpaa2_qdma.dump create mode 100644 drivers/.abi/librte_rawdev_ioat.dump create mode 100644 drivers/.abi/librte_rawdev_ntb.dump create mode 100644 drivers/.abi/librte_rawdev_octeontx2_dma.dump create mode 100644 drivers/.abi/librte_rawdev_skeleton.dump create mode 100644 lib/.abi/librte_acl.dump create mode 100644 lib/.abi/librte_bbdev.dump create mode 100644 lib/.abi/librte_bitratestats.dump create mode 100644 lib/.abi/librte_bpf.dump create mode 100644 lib/.abi/librte_cfgfile.dump create mode 100644 lib/.abi/librte_cmdline.dump create mode 100644 lib/.abi/librte_compressdev.dump create mode 100644 lib/.abi/librte_cryptodev.dump create mode 100644 lib/.abi/librte_distributor.dump create mode 100644 lib/.abi/librte_eal.dump create mode 100644 lib/.abi/librte_efd.dump create mode 100644 lib/.abi/librte_ethdev.dump create mode 100644 lib/.abi/librte_eventdev.dump create mode 100644 lib/.abi/librte_fib.dump create mode 100644 lib/.abi/librte_flow_classify.dump create mode 100644 lib/.abi/librte_gro.dump create mode 100644 lib/.abi/librte_gso.dump create mode 100644 lib/.abi/librte_hash.dump create mode 100644 lib/.abi/librte_ip_frag.dump create mode 100644 lib/.abi/librte_ipsec.dump create mode 100644 lib/.abi/librte_jobstats.dump create mode 100644 lib/.abi/librte_kni.dump create mode 100644 lib/.abi/librte_kvargs.dump create mode 100644 lib/.abi/librte_latencystats.dump create mode 100644 lib/.abi/librte_lpm.dump create mode 100644 lib/.abi/librte_mbuf.dump create mode 100644 lib/.abi/librte_member.dump create mode 100644 lib/.abi/librte_mempool.dump create mode 100644 lib/.abi/librte_meter.dump create mode 100644 lib/.abi/librte_metrics.dump create mode 100644 lib/.abi/librte_net.dump create mode 100644 lib/.abi/librte_pci.dump create mode 100644 lib/.abi/librte_pdump.dump create mode 100644 lib/.abi/librte_pipeline.dump create mode 100644 lib/.abi/librte_port.dump create mode 100644 lib/.abi/librte_power.dump create mode 100644 lib/.abi/librte_rawdev.dump create mode 100644 lib/.abi/librte_rcu.dump create mode 100644 lib/.abi/librte_reorder.dump create mode 100644 lib/.abi/librte_rib.dump create mode 100644 lib/.abi/librte_ring.dump create mode 100644 lib/.abi/librte_sched.dump create mode 100644 lib/.abi/librte_security.dump create mode 100644 lib/.abi/librte_stack.dump create mode 100644 lib/.abi/librte_table.dump create mode 100644 lib/.abi/librte_telemetry.dump create mode 100644 lib/.abi/librte_timer.dump create mode 100644 lib/.abi/librte_vhost.dump -- 2.17.1