devtools: require version for experimental symbols
Checks
Commit Message
Add version to all symbols maps and a check so any experimental symbol
is versioned.
Signed-off-by: David Marchand <david.marchand@redhat.com>
---
buildtools/map-list-symbol.sh | 8 ++++++--
devtools/check-symbol-maps.sh | 15 +++++++++++++++
doc/guides/contributing/abi_policy.rst | 17 ++++++++++++++++-
drivers/baseband/acc/version.map | 1 +
drivers/baseband/fpga_5gnr_fec/version.map | 1 +
drivers/baseband/fpga_lte_fec/version.map | 2 +-
drivers/bus/pci/version.map | 1 +
drivers/dma/dpaa2/version.map | 3 +++
drivers/event/dlb2/version.map | 1 +
drivers/mempool/cnxk/version.map | 2 ++
drivers/net/atlantic/version.map | 1 +
drivers/net/i40e/version.map | 7 ++++++-
drivers/net/ixgbe/version.map | 1 +
lib/argparse/version.map | 1 +
lib/metrics/version.map | 2 +-
lib/mldev/version.map | 1 +
lib/regexdev/version.map | 9 ++++++---
lib/reorder/version.map | 2 ++
18 files changed, 66 insertions(+), 9 deletions(-)
Comments
On Tue, Mar 5, 2024 at 2:50 PM David Marchand <david.marchand@redhat.com> wrote:
>
> Add version to all symbols maps and a check so any experimental symbol
> is versioned.
>
> Signed-off-by: David Marchand <david.marchand@redhat.com>
Applied with some cosmetic change on the doc for Thomas.
@@ -61,8 +61,12 @@ for file in $@; do
if (current_section == "") {
next;
}
- if ("'$version'" != "" && "'$version'" != current_version) {
- next;
+ if ("'$version'" != "") {
+ if ("'$version'" == "unset" && current_version != "") {
+ next;
+ } else if ("'$version'" != "unset" && "'$version'" != current_version) {
+ next;
+ }
}
gsub(";","");
if ("'$symbol'" == "all" || $1 == "'$symbol'") {
@@ -97,4 +97,19 @@ if [ -n "$bad_format_maps" ] ; then
ret=1
fi
+find_non_versioned_maps ()
+{
+ for map in $@ ; do
+ [ $(buildtools/map-list-symbol.sh -S EXPERIMENTAL -V unset $map | wc -l) = '0' ] ||
+ echo $map
+ done
+}
+
+non_versioned_maps=$(find_non_versioned_maps $@)
+if [ -n "$non_versioned_maps" ] ; then
+ echo "Found non versioned maps:"
+ echo "$non_versioned_maps"
+ ret=1
+fi
+
exit $ret
@@ -331,7 +331,22 @@ become part of a tracked ABI version.
Note that marking an API as experimental is a multi step process.
To mark an API as experimental, the symbols which are desired to be exported
must be placed in an EXPERIMENTAL version block in the corresponding libraries'
-version map script.
+version map script. Experimental symbols must be commented so
+that it is clear in which DPDK version they were introduced.
+
+.. code-block:: none
+
+ EXPERIMENTAL {
+ global:
+
+ # added in 20.11
+ rte_foo_init;
+ rte_foo_configure;
+
+ # added in 21.02
+ rte_foo_cleanup;
+ ...
+
Secondly, the corresponding prototypes of those exported functions (in the
development header files), must be marked with the ``__rte_experimental`` tag
(see ``rte_compat.h``).
@@ -5,5 +5,6 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 22.11
rte_acc_configure;
};
@@ -5,6 +5,7 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.11
rte_fpga_5gnr_fec_configure;
};
@@ -5,6 +5,6 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.11
rte_fpga_lte_fec_configure;
-
};
@@ -17,6 +17,7 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.11
rte_pci_find_ext_capability;
# added in 21.08
@@ -3,6 +3,9 @@ DPDK_24 {
};
EXPERIMENTAL {
+ global:
+
+ # added in 22.07
rte_dpaa2_qdma_completed_multi;
rte_dpaa2_qdma_copy_multi;
rte_dpaa2_qdma_vchan_fd_us_enable;
@@ -5,5 +5,6 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.11
rte_pmd_dlb2_set_token_pop_mode;
};
@@ -4,6 +4,8 @@ DPDK_24 {
EXPERIMENTAL {
global:
+
+ # added in 23.07
rte_pmd_cnxk_mempool_is_hwpool;
rte_pmd_cnxk_mempool_mbuf_exchange;
rte_pmd_cnxk_mempool_range_check_disable;
@@ -5,6 +5,7 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 19.05
rte_pmd_atl_macsec_enable;
rte_pmd_atl_macsec_disable;
rte_pmd_atl_macsec_config_txsc;
@@ -42,9 +42,14 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 19.11
+ rte_pmd_i40e_set_switch_dev;
+
+ # added in 20.08
rte_pmd_i40e_get_fdir_info;
rte_pmd_i40e_get_fdir_stats;
rte_pmd_i40e_set_gre_key_len;
+
+ # added in 23.07
rte_pmd_i40e_set_pf_src_prune;
- rte_pmd_i40e_set_switch_dev;
};
@@ -43,6 +43,7 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.08
rte_pmd_ixgbe_get_fdir_info;
rte_pmd_ixgbe_get_fdir_stats;
};
@@ -1,6 +1,7 @@
EXPERIMENTAL {
global:
+ # added in 24.03
rte_argparse_parse;
rte_argparse_parse_type;
@@ -16,11 +16,11 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.05
rte_metrics_tel_encode_json_format;
rte_metrics_tel_reg_all_ethdev;
rte_metrics_tel_get_global_stats;
rte_metrics_tel_get_port_stats_ids;
rte_metrics_tel_get_ports_stats_json;
rte_metrics_tel_extract_data;
-
};
@@ -1,6 +1,7 @@
EXPERIMENTAL {
global:
+ # added in 22.11
rte_ml_dequeue_burst;
rte_ml_dev_close;
rte_ml_dev_configure;
@@ -1,7 +1,7 @@
EXPERIMENTAL {
global:
- rte_regex_devices;
+ # added in 20.08
rte_regexdev_attr_get;
rte_regexdev_attr_set;
rte_regexdev_close;
@@ -12,8 +12,6 @@ EXPERIMENTAL {
rte_regexdev_enqueue_burst;
rte_regexdev_get_dev_id;
rte_regexdev_info_get;
- rte_regexdev_is_valid_dev;
- rte_regexdev_logtype;
rte_regexdev_queue_pair_setup;
rte_regexdev_rule_db_compile_activate;
rte_regexdev_rule_db_export;
@@ -27,6 +25,11 @@ EXPERIMENTAL {
rte_regexdev_xstats_names_get;
rte_regexdev_xstats_reset;
+ # added in 22.03
+ rte_regex_devices;
+ rte_regexdev_is_valid_dev;
+ rte_regexdev_logtype;
+
local: *;
};
@@ -15,11 +15,13 @@ DPDK_24 {
EXPERIMENTAL {
global:
+ # added in 20.11
rte_reorder_seqn_dynfield_offset;
# added in 23.03
rte_reorder_drain_up_to_seqn;
rte_reorder_min_seqn_set;
+
# added in 23.07
rte_reorder_memory_footprint_get;
};