All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: dev@dpdk.org
Cc: thomas@monjalon.net, techboard@dpdk.org,
	Ray Kinsella <mdr@ashroe.eu>, Neil Horman <nhorman@tuxdriver.com>
Subject: [dpdk-dev] [PATCH 1/3] build: remove special versioning for non stable libraries
Date: Fri, 22 May 2020 08:58:53 +0200	[thread overview]
Message-ID: <20200522065855.31056-2-david.marchand@redhat.com> (raw)
In-Reply-To: <20200522065855.31056-1-david.marchand@redhat.com>

Having a special versioning for experimental/internal libraries put a
additional maintenance cost while this status is already announced in
MAINTAINERS and the library headers/documentation.
Following discussions and vote at 05/20 TB meeting [1], use a single
versioning for all libraries in DPDK.

Note: for the ABI check, an exception [2] had been added when tweaking
this special versioning [3].
Prefer explicit libabigail rules (which will be dropped in 20.11).

1: https://mails.dpdk.org/archives/dev/2020-May/168450.html
2: https://git.dpdk.org/dpdk/commit/?id=23d7ad5db41c
3: https://git.dpdk.org/dpdk/commit/?id=ec2b8cd7ed69

Signed-off-by: David Marchand <david.marchand@redhat.com>
---
 buildtools/meson.build       |  3 ---
 config/meson.build           | 16 ++++++----------
 devtools/check-abi.sh        |  5 -----
 devtools/libabigail.abignore | 26 ++++++++++++++++++++++++--
 drivers/meson.build          | 13 +------------
 lib/meson.build              | 13 +------------
 mk/rte.lib.mk                |  5 -----
 7 files changed, 32 insertions(+), 49 deletions(-)

diff --git a/buildtools/meson.build b/buildtools/meson.build
index d5f8291beb..79703b6f93 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -18,6 +18,3 @@ else
 endif
 map_to_def_cmd = py3 + files('map_to_def.py')
 sphinx_wrapper = py3 + files('call-sphinx-build.py')
-
-# stable ABI always starts with "DPDK_"
-is_stable_cmd = [find_program('grep', 'findstr'), '^DPDK_']
diff --git a/config/meson.build b/config/meson.build
index 43ab113106..35975f1030 100644
--- a/config/meson.build
+++ b/config/meson.build
@@ -25,18 +25,14 @@ major_version = '@0@.@1@'.format(pver.get(0), pver.get(1))
 abi_version = run_command(find_program('cat', 'more'),
 	abi_version_file).stdout().strip()
 
-# Regular libraries have the abi_version as the filename extension
+# Libraries have the abi_version as the filename extension
 # and have the soname be all but the final part of the abi_version.
-# Experimental libraries have soname with '0.major'
-# and the filename suffix as 0.majorminor versions,
-# e.g. v20.1 => librte_stable.so.20.1, librte_experimental.so.0.201
-#    sonames => librte_stable.so.20, librte_experimental.so.0.20
-# e.g. v20.0.1 => librte_stable.so.20.0.1, librte_experimental.so.0.2001
-#      sonames => librte_stable.so.20.0, librte_experimental.so.0.200
+# e.g. v20.1 => librte_foo.so.20.1
+#    sonames => librte_foo.so.20
+# e.g. v20.0.1 => librte_foo.so.20.0.1
+#      sonames => librte_foo.so.20.0
 abi_va = abi_version.split('.')
-stable_so_version = abi_va.length() == 2 ? abi_va[0] : abi_va[0] + '.' + abi_va[1]
-experimental_abi_version = '0.' + abi_va[0] + abi_va[1] + '.' + abi_va[2]
-experimental_so_version = experimental_abi_version
+so_version = abi_va.length() == 2 ? abi_va[0] : abi_va[0] + '.' + abi_va[1]
 
 # extract all version information into the build configuration
 dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int())
diff --git a/devtools/check-abi.sh b/devtools/check-abi.sh
index dd9120e69e..e17fedbd9f 100755
--- a/devtools/check-abi.sh
+++ b/devtools/check-abi.sh
@@ -44,11 +44,6 @@ for dump in $(find $refdir -name "*.dump"); do
 		echo "Skipped glue library $name."
 		continue
 	fi
-	# skip experimental libraries, with a sover starting with 0.
-	if grep -qE "\<soname='[^']*\.so\.0\.[^']*'" $dump; then
-		echo "Skipped experimental library $name."
-		continue
-	fi
 	dump2=$(find $newdir -name $name)
 	if [ -z "$dump2" ] || [ ! -e "$dump2" ]; then
 		echo "Error: can't find $name in $newdir"
diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore
index becbf842a5..02b290b08f 100644
--- a/devtools/libabigail.abignore
+++ b/devtools/libabigail.abignore
@@ -50,9 +50,10 @@
         name = rte_crypto_aead_algorithm_strings
 
 ;;;;;;;;;;;;;;;;;;;;;;
-; Temporary exceptions for new __rte_internal marking till DPDK 20.11
+; Temporary exceptions for new __rte_internal marking and experimental
+; libraries soname changes till DPDK 20.11
 ;;;;;;;;;;;;;;;;;;;;;;
-; Ignore moving OCTEONTX2 stable functions to INTERNAL tag
+; Ignore moving OCTEONTX2 stable functions to INTERNAL
 [suppress_file]
 	file_name_regexp = ^librte_common_octeontx2\.
 [suppress_file]
@@ -77,3 +78,24 @@
         name = rte_dpaa2_mbuf_alloc_bulk
 [suppress_function]
         name_regexp = ^dpaa2?_.*tach$
+; Ignore soname changes for experimental libraries
+[suppress_file]
+	file_name_regexp = ^librte_bbdev\.
+[suppress_file]
+	file_name_regexp = ^librte_bpf\.
+[suppress_file]
+	file_name_regexp = ^librte_compressdev\.
+[suppress_file]
+	file_name_regexp = ^librte_fib\.
+[suppress_file]
+	file_name_regexp = ^librte_flow_classify\.
+[suppress_file]
+	file_name_regexp = ^librte_ipsec\.
+[suppress_file]
+	file_name_regexp = ^librte_rcu\.
+[suppress_file]
+	file_name_regexp = ^librte_rib\.
+[suppress_file]
+	file_name_regexp = ^librte_telemetry\.
+[suppress_file]
+	file_name_regexp = ^librte_stack\.
diff --git a/drivers/meson.build b/drivers/meson.build
index cfb6a833c9..4e5713bb27 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -128,17 +128,6 @@ foreach class:dpdk_driver_classes
 					meson.current_source_dir(),
 					drv_path, lib_name)
 
-			is_stable = run_command(is_stable_cmd,
-				files(version_map)).returncode() == 0
-
-			if is_stable
-				lib_version = abi_version
-				so_version = stable_so_version
-			else
-				lib_version = experimental_abi_version
-				so_version = experimental_so_version
-			endif
-
 			# now build the static driver
 			static_lib = static_library(lib_name,
 				sources,
@@ -183,7 +172,7 @@ foreach class:dpdk_driver_classes
 				c_args: cflags,
 				link_args: lk_args,
 				link_depends: lk_deps,
-				version: lib_version,
+				version: abi_version,
 				soversion: so_version,
 				install: true,
 				install_dir: driver_install_path)
diff --git a/lib/meson.build b/lib/meson.build
index d190d84eff..13b330396c 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -110,17 +110,6 @@ foreach l:libraries
 			version_map = '@0@/@1@/rte_@2@_version.map'.format(
 					meson.current_source_dir(), dir_name, name)
 
-			is_stable = run_command(is_stable_cmd,
-					files(version_map)).returncode() == 0
-
-			if is_stable
-				lib_version = abi_version
-				so_version = stable_so_version
-			else
-				lib_version = experimental_abi_version
-				so_version = experimental_so_version
-			endif
-
 			# first build static lib
 			static_lib = static_library(libname,
 					sources,
@@ -179,7 +168,7 @@ foreach l:libraries
 					include_directories: includes,
 					link_args: lk_args,
 					link_depends: lk_deps,
-					version: lib_version,
+					version: abi_version,
 					soversion: so_version,
 					install: true)
 			shared_dep = declare_dependency(link_with: shared_lib,
diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
index 682b590dba..229ae16814 100644
--- a/mk/rte.lib.mk
+++ b/mk/rte.lib.mk
@@ -13,11 +13,6 @@ VPATH += $(SRCDIR)
 
 LIBABIVER ?= $(shell cat $(RTE_SRCDIR)/ABI_VERSION)
 SOVER := $(basename $(LIBABIVER))
-ifeq ($(shell grep -s "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),)
-# EXPERIMENTAL ABI is versioned as 0.major+minor, e.g. 0.201 for 20.1 ABI
-LIBABIVER := 0.$(shell echo $(LIBABIVER) | awk 'BEGIN { FS="." }; { print $$1$$2"."$$3 }')
-SOVER := $(LIBABIVER)
-endif
 
 ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
 SONAME := $(patsubst %.a,%.so.$(SOVER),$(LIB))
-- 
2.23.0


  reply	other threads:[~2020-05-22  6:59 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-22  6:58 [dpdk-dev] [PATCH 0/3] Experimental/internal libraries cleanup David Marchand
2020-05-22  6:58 ` David Marchand [this message]
2020-05-22  6:58 ` [dpdk-dev] [PATCH 2/3] drivers: drop workaround for internal libraries David Marchand
2020-05-22  6:58 ` [dpdk-dev] [PATCH 3/3] lib: remind experimental status in library headers David Marchand
2020-05-22 14:15   ` Honnappa Nagarahalli
2020-05-28  6:53     ` David Marchand
2020-05-28 18:40       ` Honnappa Nagarahalli
2020-05-26 13:28   ` Eads, Gage
2020-05-28  6:56     ` David Marchand
2020-06-25  7:21 ` [dpdk-dev] [PATCH v2 0/3] Experimental/internal libraries cleanup David Marchand
2020-06-25  7:21   ` [dpdk-dev] [PATCH v2 1/3] build: remove special versioning for non stable libraries David Marchand
2020-06-25  9:25     ` David Marchand
2020-06-25  7:21   ` [dpdk-dev] [PATCH v2 2/3] drivers: drop workaround for internal libraries David Marchand
2020-06-25  7:21   ` [dpdk-dev] [PATCH v2 3/3] lib: remind experimental status in library headers David Marchand
2020-06-26  8:16 ` [dpdk-dev] [PATCH v3 0/3] Experimental/internal libraries cleanup David Marchand
2020-06-26  8:16   ` [dpdk-dev] [PATCH v3 1/3] build: remove special versioning for non stable libraries David Marchand
2020-06-26  8:38     ` Kinsella, Ray
2020-06-26  8:16   ` [dpdk-dev] [PATCH v3 2/3] drivers: drop workaround for internal libraries David Marchand
2020-06-26  8:16   ` [dpdk-dev] [PATCH v3 3/3] lib: remind experimental status in library headers David Marchand
2020-06-26  9:25   ` [dpdk-dev] [dpdk-techboard] [PATCH v3 0/3] Experimental/internal libraries cleanup Bruce Richardson
2020-07-07 10:50     ` Thomas Monjalon
2020-07-05 19:55   ` [dpdk-dev] " Thomas Monjalon
2020-07-06  8:02     ` [dpdk-dev] [dpdk-techboard] " Bruce Richardson
2020-07-06  8:12       ` Thomas Monjalon
2020-07-06 16:57     ` [dpdk-dev] " Medvedkin, Vladimir

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200522065855.31056-2-david.marchand@redhat.com \
    --to=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=mdr@ashroe.eu \
    --cc=nhorman@tuxdriver.com \
    --cc=techboard@dpdk.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.