[v7,00/10] Implement the new ABI policy and add helper scripts
mbox series

Message ID cover.1573230233.git.anatoly.burakov@intel.com
Headers show
Series
  • Implement the new ABI policy and add helper scripts
Related show

Message

Anatoly Burakov Nov. 8, 2019, 4:25 p.m. UTC
This patchset prepares the codebase for the new ABI policy and
adds a few helper scripts.

There are two new scripts for managing ABI versions added. The
first one is a Python script that will read in a .map file,
flatten it and update the ABI version to the ABI version
specified on the command-line.

The second one is a shell script that will run the above mentioned
Python script recursively over the source tree and set the ABI
version to either that which is defined in config/ABI_VERSION, or
a user-specified one.

Example of its usage: buildtools/update-abi.sh 20.0

This will recurse into lib/ and drivers/ directory and update
whatever .map files it can find.

The other shell script that's added is one that can take in a .so
file and ensure that its declared public ABI matches either
current ABI, next ABI, or EXPERIMENTAL. This was moved to the
last commit because it made no sense to have it beforehand.

The source tree was verified to follow the new ABI policy using
the following command (assuming built binaries are in build/):

find ./build/lib ./build/drivers -name  \*.so \
	-exec ./buildtools/check-abi-version.sh {} \; -print

This returns 0.

Changes since v6:
- Rebase on top of latest master
- Fixed map file generation to generate stable ABI if it was there,
  even if it was empty

Changes since v5:
- Addressed David's comments regarding libtool error messages
- Fixed map file generation to not generate empty stable ABI if
  it wasn't there before

Changes since v4:
- Fixed shared library build issue for distributor

Changes since v3:
- Put distributor code back and cleaned it up
- Rebased on latest master and regenerated commit 9

Changes since v2:
- Addressed Bruce's review comments
- Removed single distributor mode as per Dave's suggestion

Changes since v1:
- Reordered patchset to have removal of old ABI's before introducing
  the new one to avoid compile breakages between patches
- Added a new patch fixing missing symbol in octeontx common
- Split script commits into multiple commits and reordered them
- Re-generated the ABI bump commit
- Verified all scripts to work

Anatoly Burakov (2):
  buildtools: add ABI update shell script
  drivers/octeontx: add missing public symbol

Marcin Baran (6):
  config: change ABI versioning to global
  timer: remove deprecated code
  lpm: remove deprecated code
  distributor: remove deprecated code
  distributor: rename v2.0 ABI to _single suffix
  buildtools: add ABI versioning check script

Pawel Modrak (2):
  buildtools: add script for updating symbols abi version
  build: change ABI version to 20.0

 buildtools/check-abi-version.sh               |   54 +
 buildtools/meson.build                        |    2 +
 buildtools/update-abi.sh                      |   42 +
 buildtools/update_version_map_abi.py          |  173 +++
 config/ABI_VERSION                            |    1 +
 config/meson.build                            |    4 +-
 .../rte_pmd_bbdev_fpga_lte_fec_version.map    |    8 +-
 .../null/rte_pmd_bbdev_null_version.map       |    2 +-
 .../rte_pmd_bbdev_turbo_sw_version.map        |    2 +-
 drivers/bus/dpaa/rte_bus_dpaa_version.map     |  113 +-
 drivers/bus/fslmc/rte_bus_fslmc_version.map   |  154 +--
 drivers/bus/ifpga/rte_bus_ifpga_version.map   |   14 +-
 drivers/bus/pci/rte_bus_pci_version.map       |    2 +-
 drivers/bus/vdev/rte_bus_vdev_version.map     |   12 +-
 drivers/bus/vmbus/rte_bus_vmbus_version.map   |   12 +-
 drivers/common/cpt/rte_common_cpt_version.map |    9 +-
 .../common/dpaax/rte_common_dpaax_version.map |   14 +-
 .../common/mvep/rte_common_mvep_version.map   |    6 +-
 .../octeontx/rte_common_octeontx_version.map  |    7 +-
 .../rte_common_octeontx2_version.map          |   16 +-
 .../compress/isal/rte_pmd_isal_version.map    |    2 +-
 .../rte_pmd_octeontx_compress_version.map     |    2 +-
 drivers/compress/qat/rte_pmd_qat_version.map  |    2 +-
 .../compress/zlib/rte_pmd_zlib_version.map    |    2 +-
 .../aesni_gcm/rte_pmd_aesni_gcm_version.map   |    2 +-
 .../aesni_mb/rte_pmd_aesni_mb_version.map     |    2 +-
 .../crypto/armv8/rte_pmd_armv8_version.map    |    2 +-
 .../caam_jr/rte_pmd_caam_jr_version.map       |    3 +-
 drivers/crypto/ccp/rte_pmd_ccp_version.map    |    3 +-
 .../dpaa2_sec/rte_pmd_dpaa2_sec_version.map   |   10 +-
 .../dpaa_sec/rte_pmd_dpaa_sec_version.map     |   10 +-
 .../crypto/kasumi/rte_pmd_kasumi_version.map  |    2 +-
 .../crypto/mvsam/rte_pmd_mvsam_version.map    |    2 +-
 .../crypto/nitrox/rte_pmd_nitrox_version.map  |    2 +-
 .../null/rte_pmd_null_crypto_version.map      |    2 +-
 .../rte_pmd_octeontx_crypto_version.map       |    3 +-
 .../rte_pmd_octeontx2_crypto_version.map      |    3 +-
 .../openssl/rte_pmd_openssl_version.map       |    2 +-
 .../rte_pmd_crypto_scheduler_version.map      |   19 +-
 .../crypto/snow3g/rte_pmd_snow3g_version.map  |    2 +-
 .../virtio/rte_pmd_virtio_crypto_version.map  |    2 +-
 drivers/crypto/zuc/rte_pmd_zuc_version.map    |    2 +-
 .../event/dpaa/rte_pmd_dpaa_event_version.map |    3 +-
 .../dpaa2/rte_pmd_dpaa2_event_version.map     |    2 +-
 .../event/dsw/rte_pmd_dsw_event_version.map   |    2 +-
 .../rte_pmd_octeontx_event_version.map        |    2 +-
 .../rte_pmd_octeontx2_event_version.map       |    3 +-
 .../event/opdl/rte_pmd_opdl_event_version.map |    2 +-
 .../rte_pmd_skeleton_event_version.map        |    3 +-
 drivers/event/sw/rte_pmd_sw_event_version.map |    2 +-
 .../bucket/rte_mempool_bucket_version.map     |    3 +-
 .../mempool/dpaa/rte_mempool_dpaa_version.map |    2 +-
 .../dpaa2/rte_mempool_dpaa2_version.map       |   12 +-
 .../octeontx/rte_mempool_octeontx_version.map |    2 +-
 .../rte_mempool_octeontx2_version.map         |    4 +-
 .../mempool/ring/rte_mempool_ring_version.map |    3 +-
 .../stack/rte_mempool_stack_version.map       |    3 +-
 drivers/meson.build                           |   20 +-
 .../af_packet/rte_pmd_af_packet_version.map   |    3 +-
 drivers/net/af_xdp/rte_pmd_af_xdp_version.map |    2 +-
 drivers/net/ark/rte_pmd_ark_version.map       |    5 +-
 .../net/atlantic/rte_pmd_atlantic_version.map |    4 +-
 drivers/net/avp/rte_pmd_avp_version.map       |    2 +-
 drivers/net/axgbe/rte_pmd_axgbe_version.map   |    2 +-
 drivers/net/bnx2x/rte_pmd_bnx2x_version.map   |    3 +-
 drivers/net/bnxt/rte_pmd_bnxt_version.map     |    4 +-
 drivers/net/bonding/rte_pmd_bond_version.map  |   47 +-
 drivers/net/cxgbe/rte_pmd_cxgbe_version.map   |    3 +-
 drivers/net/dpaa/rte_pmd_dpaa_version.map     |   11 +-
 drivers/net/dpaa2/rte_pmd_dpaa2_version.map   |   12 +-
 drivers/net/e1000/rte_pmd_e1000_version.map   |    3 +-
 drivers/net/ena/rte_pmd_ena_version.map       |    3 +-
 drivers/net/enetc/rte_pmd_enetc_version.map   |    3 +-
 drivers/net/enic/rte_pmd_enic_version.map     |    3 +-
 .../net/failsafe/rte_pmd_failsafe_version.map |    3 +-
 drivers/net/fm10k/rte_pmd_fm10k_version.map   |    3 +-
 drivers/net/hinic/rte_pmd_hinic_version.map   |    3 +-
 drivers/net/hns3/rte_pmd_hns3_version.map     |    4 +-
 drivers/net/i40e/rte_pmd_i40e_version.map     |   65 +-
 drivers/net/iavf/rte_pmd_iavf_version.map     |    3 +-
 drivers/net/ice/rte_pmd_ice_version.map       |    3 +-
 drivers/net/ifc/rte_pmd_ifc_version.map       |    3 +-
 drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map |    3 +-
 drivers/net/ixgbe/rte_pmd_ixgbe_version.map   |   62 +-
 drivers/net/kni/rte_pmd_kni_version.map       |    3 +-
 .../net/liquidio/rte_pmd_liquidio_version.map |    3 +-
 drivers/net/memif/rte_pmd_memif_version.map   |    5 +-
 drivers/net/mlx4/rte_pmd_mlx4_version.map     |    3 +-
 drivers/net/mlx5/rte_pmd_mlx5_version.map     |    2 +-
 drivers/net/mvneta/rte_pmd_mvneta_version.map |    2 +-
 drivers/net/mvpp2/rte_pmd_mvpp2_version.map   |    2 +-
 drivers/net/netvsc/rte_pmd_netvsc_version.map |    4 +-
 drivers/net/nfb/rte_pmd_nfb_version.map       |    3 +-
 drivers/net/nfp/rte_pmd_nfp_version.map       |    2 +-
 drivers/net/null/rte_pmd_null_version.map     |    3 +-
 .../net/octeontx/rte_pmd_octeontx_version.map |   10 +-
 .../octeontx2/rte_pmd_octeontx2_version.map   |    3 +-
 drivers/net/pcap/rte_pmd_pcap_version.map     |    3 +-
 drivers/net/pfe/rte_pmd_pfe_version.map       |    3 +-
 drivers/net/qede/rte_pmd_qede_version.map     |    3 +-
 drivers/net/ring/rte_pmd_ring_version.map     |   10 +-
 drivers/net/sfc/rte_pmd_sfc_version.map       |    3 +-
 .../net/softnic/rte_pmd_softnic_version.map   |    2 +-
 .../net/szedata2/rte_pmd_szedata2_version.map |    2 +-
 drivers/net/tap/rte_pmd_tap_version.map       |    3 +-
 .../net/thunderx/rte_pmd_thunderx_version.map |    3 +-
 .../rte_pmd_vdev_netvsc_version.map           |    3 +-
 drivers/net/vhost/rte_pmd_vhost_version.map   |   11 +-
 drivers/net/virtio/rte_pmd_virtio_version.map |    3 +-
 .../net/vmxnet3/rte_pmd_vmxnet3_version.map   |    3 +-
 .../rte_rawdev_dpaa2_cmdif_version.map        |    3 +-
 .../rte_rawdev_dpaa2_qdma_version.map         |    4 +-
 .../raw/ifpga/rte_rawdev_ifpga_version.map    |    3 +-
 drivers/raw/ioat/rte_rawdev_ioat_version.map  |    3 +-
 drivers/raw/ntb/rte_rawdev_ntb_version.map    |    5 +-
 .../rte_rawdev_octeontx2_dma_version.map      |    3 +-
 .../skeleton/rte_rawdev_skeleton_version.map  |    3 +-
 lib/librte_acl/rte_acl_version.map            |    2 +-
 .../rte_bitratestats_version.map              |    2 +-
 lib/librte_cfgfile/rte_cfgfile_version.map    |   34 +-
 lib/librte_cmdline/rte_cmdline_version.map    |   10 +-
 .../rte_cryptodev_version.map                 |  102 +-
 lib/librte_distributor/Makefile               |    2 +-
 lib/librte_distributor/distributor_private.h  |   10 +-
 lib/librte_distributor/meson.build            |    2 +-
 lib/librte_distributor/rte_distributor.c      |   98 +-
 ...ributor_v20.c => rte_distributor_single.c} |   73 +-
 ...ributor_v20.h => rte_distributor_single.h} |   26 +-
 .../rte_distributor_v1705.h                   |   61 -
 .../rte_distributor_version.map               |   16 +-
 lib/librte_eal/rte_eal_version.map            |  324 ++----
 lib/librte_efd/rte_efd_version.map            |    2 +-
 lib/librte_ethdev/rte_ethdev_version.map      |  160 +--
 lib/librte_eventdev/rte_eventdev_version.map  |  130 +--
 lib/librte_gro/rte_gro_version.map            |    2 +-
 lib/librte_gso/rte_gso_version.map            |    2 +-
 lib/librte_hash/rte_hash_version.map          |   43 +-
 lib/librte_ip_frag/rte_ip_frag_version.map    |   10 +-
 lib/librte_jobstats/rte_jobstats_version.map  |   10 +-
 lib/librte_kni/rte_kni_version.map            |    2 +-
 lib/librte_kvargs/rte_kvargs_version.map      |    4 +-
 .../rte_latencystats_version.map              |    2 +-
 lib/librte_lpm/rte_lpm.c                      | 1010 +----------------
 lib/librte_lpm/rte_lpm.h                      |   88 --
 lib/librte_lpm/rte_lpm6.c                     |  140 +--
 lib/librte_lpm/rte_lpm6.h                     |   25 -
 lib/librte_lpm/rte_lpm_version.map            |   39 +-
 lib/librte_mbuf/rte_mbuf_version.map          |   49 +-
 lib/librte_member/rte_member_version.map      |    2 +-
 lib/librte_mempool/rte_mempool_version.map    |   44 +-
 lib/librte_meter/rte_meter_version.map        |   13 +-
 lib/librte_metrics/rte_metrics_version.map    |    2 +-
 lib/librte_net/rte_net_version.map            |   23 +-
 lib/librte_pci/rte_pci_version.map            |    2 +-
 lib/librte_pdump/rte_pdump_version.map        |    2 +-
 lib/librte_pipeline/rte_pipeline_version.map  |   36 +-
 lib/librte_port/rte_port_version.map          |   64 +-
 lib/librte_power/rte_power_version.map        |   24 +-
 lib/librte_rawdev/rte_rawdev_version.map      |    4 +-
 lib/librte_reorder/rte_reorder_version.map    |    8 +-
 lib/librte_ring/rte_ring_version.map          |   10 +-
 lib/librte_sched/rte_sched_version.map        |   14 +-
 lib/librte_security/rte_security_version.map  |    2 +-
 lib/librte_table/rte_table_version.map        |    2 +-
 lib/librte_timer/rte_timer.c                  |  100 +-
 lib/librte_timer/rte_timer.h                  |   15 -
 lib/librte_timer/rte_timer_version.map        |   12 +-
 lib/librte_vhost/rte_vhost_version.map        |   52 +-
 lib/meson.build                               |   18 +-
 meson_options.txt                             |    2 -
 mk/rte.lib.mk                                 |   13 +-
 171 files changed, 1152 insertions(+), 2971 deletions(-)
 create mode 100755 buildtools/check-abi-version.sh
 create mode 100755 buildtools/update-abi.sh
 create mode 100755 buildtools/update_version_map_abi.py
 create mode 100644 config/ABI_VERSION
 rename lib/librte_distributor/{rte_distributor_v20.c => rte_distributor_single.c} (84%)
 rename lib/librte_distributor/{rte_distributor_v20.h => rte_distributor_single.h} (89%)
 delete mode 100644 lib/librte_distributor/rte_distributor_v1705.h