DPDK patches and discussions
 help / color / Atom feed
* [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson
@ 2019-10-08 14:36 Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 1/3] check-experimental-syms: remove use of environmental var Bruce Richardson
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Bruce Richardson @ 2019-10-08 14:36 UTC (permalink / raw)
  To: dev; +Cc: thomas, Neil Horman, bluca, ray.kinsella, Bruce Richardson

The meson builds were missing support for scanning experimental symbols
in the .o/.a files and matching that against those tagged as
experimental in the version file. This set adds that missing support.

Bruce Richardson (3):
  check-experimental-syms: remove use of environmental var
  lib: add experimental symbols check to meson build
  drivers: process shared lib link dependencies as for libs

 buildtools/check-experimental-syms.sh |  2 +-
 buildtools/meson.build                |  2 ++
 drivers/meson.build                   | 27 +++++++++++++++++++++++++--
 lib/meson.build                       | 12 +++++++++++-
 4 files changed, 39 insertions(+), 4 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH 1/3] check-experimental-syms: remove use of environmental var
  2019-10-08 14:36 [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Bruce Richardson
@ 2019-10-08 14:36 ` Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 2/3] lib: add experimental symbols check to meson build Bruce Richardson
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2019-10-08 14:36 UTC (permalink / raw)
  To: dev; +Cc: thomas, Neil Horman, bluca, ray.kinsella, Bruce Richardson

The check-experimental-syms.sh script was finding the map-list-symbol.sh
script using $RTE_SDK, which is the variable set when using the "make"
build system. To make this script more independent, we just use the current
path of the script as the location to find its companion script.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 buildtools/check-experimental-syms.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/buildtools/check-experimental-syms.sh b/buildtools/check-experimental-syms.sh
index 0f6c62dbe..a95de33b1 100755
--- a/buildtools/check-experimental-syms.sh
+++ b/buildtools/check-experimental-syms.sh
@@ -5,7 +5,7 @@
 MAPFILE=$1
 OBJFILE=$2
 
-LIST_SYMBOL=$RTE_SDK/buildtools/map-list-symbol.sh
+LIST_SYMBOL=$(dirname $(readlink -f $0))/map-list-symbol.sh
 
 # added check for "make -C test/" usage
 if [ ! -e $MAPFILE ] || [ ! -f $OBJFILE ]
-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH 2/3] lib: add experimental symbols check to meson build
  2019-10-08 14:36 [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 1/3] check-experimental-syms: remove use of environmental var Bruce Richardson
@ 2019-10-08 14:36 ` Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 3/3] drivers: process shared lib link dependencies as for libs Bruce Richardson
  2019-10-09  8:17 ` [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Luca Boccassi
  3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2019-10-08 14:36 UTC (permalink / raw)
  To: dev; +Cc: thomas, Neil Horman, bluca, ray.kinsella, Bruce Richardson

Call check-experimental-syms.sh script as part of the meson build to ensure
that all functions are correctly tagged.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 buildtools/meson.build |  2 ++
 lib/meson.build        | 12 +++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/buildtools/meson.build b/buildtools/meson.build
index 32c79c130..8d0b9e0cd 100644
--- a/buildtools/meson.build
+++ b/buildtools/meson.build
@@ -5,6 +5,8 @@ subdir('pmdinfogen')
 
 pmdinfo = find_program('gen-pmdinfo-cfile.sh')
 
+check_experimental_syms = find_program('check-experimental-syms.sh')
+
 # set up map-to-def script using python, either built-in or external
 python3 = import('python').find_installation(required: false)
 if python3.found()
diff --git a/lib/meson.build b/lib/meson.build
index e5ff83893..5be5c8559 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -128,11 +128,21 @@ foreach l:libraries
 				command: [map_to_def_cmd, '@INPUT@', '@OUTPUT@'],
 				input: version_map,
 				output: 'rte_@0@_exports.def'.format(name))
+			lk_deps = [version_map, def_file]
 			if is_windows
 				lk_args = ['-Wl,/def:' + def_file.full_path(),
 					'-Wl,/implib:lib\\' + implib]
 			else
 				lk_args = ['-Wl,--version-script=' + version_map]
+				# on unix systems check the output of the
+				# experimental syms script, using it as a
+				# dependency of the .so build
+				lk_deps += custom_target(name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: name + '.exp_chk')
 			endif
 
 			shared_lib = shared_library(libname,
@@ -142,7 +152,7 @@ foreach l:libraries
 					dependencies: shared_deps,
 					include_directories: includes,
 					link_args: lk_args,
-					link_depends: [version_map, def_file],
+					link_depends: lk_deps,
 					version: lib_version,
 					soversion: so_version,
 					install: true)
-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH 3/3] drivers: process shared lib link dependencies as for libs
  2019-10-08 14:36 [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 1/3] check-experimental-syms: remove use of environmental var Bruce Richardson
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 2/3] lib: add experimental symbols check to meson build Bruce Richardson
@ 2019-10-08 14:36 ` Bruce Richardson
  2019-10-09  8:17 ` [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Luca Boccassi
  3 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2019-10-08 14:36 UTC (permalink / raw)
  To: dev; +Cc: thomas, Neil Horman, bluca, ray.kinsella, Bruce Richardson

For the public APIs of DPDK libraries we run checks for correct use of
experimental tags, and also do dynamic generation of the version file to
its window's equivalent. Although must drivers don't export APIs, some do,
so these checks are relevant and should be copied from lib/meson.build to
drivers/meson.build.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 drivers/meson.build | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/drivers/meson.build b/drivers/meson.build
index 2ed2e9541..fd5a8aa59 100644
--- a/drivers/meson.build
+++ b/drivers/meson.build
@@ -131,14 +131,37 @@ foreach class:dpdk_driver_classes
 			version_map = '@0@/@1@/@2@_version.map'.format(
 					meson.current_source_dir(),
 					drv_path, lib_name)
+			implib = dir_name + '.dll.a'
+
+			def_file = custom_target(lib_name + '_def',
+				command: [map_to_def_cmd, '@INPUT@', '@OUTPUT@'],
+				input: version_map,
+				output: '@0@_exports.def'.format(lib_name))
+			lk_deps = [version_map, def_file]
+			if is_windows
+				lk_args = ['-Wl,/def:' + def_file.full_path(),
+					'-Wl,/implib:lib\\' + implib]
+			else
+				lk_args = ['-Wl,--version-script=' + version_map]
+				# on unix systems check the output of the
+				# experimental syms script, using it as a
+				# dependency of the .so build
+				lk_deps += custom_target(lib_name + '.exp_chk',
+					command: [check_experimental_syms,
+						version_map, '@INPUT@'],
+					capture: true,
+					input: static_lib,
+					output: lib_name + '.exp_chk')
+			endif
+
 			shared_lib = shared_library(lib_name,
 				sources,
 				objects: objs,
 				include_directories: includes,
 				dependencies: shared_objs,
 				c_args: cflags,
-				link_args: '-Wl,--version-script=' + version_map,
-				link_depends: version_map,
+				link_args: lk_args,
+				link_depends: lk_deps,
 				version: lib_version,
 				soversion: so_version,
 				install: true,
-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson
  2019-10-08 14:36 [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Bruce Richardson
                   ` (2 preceding siblings ...)
  2019-10-08 14:36 ` [dpdk-dev] [PATCH 3/3] drivers: process shared lib link dependencies as for libs Bruce Richardson
@ 2019-10-09  8:17 ` Luca Boccassi
  3 siblings, 0 replies; 6+ messages in thread
From: Luca Boccassi @ 2019-10-09  8:17 UTC (permalink / raw)
  To: Bruce Richardson, dev; +Cc: thomas, Neil Horman, ray.kinsella

On Tue, 2019-10-08 at 15:36 +0100, Bruce Richardson wrote:
> The meson builds were missing support for scanning experimental
> symbols
> in the .o/.a files and matching that against those tagged as
> experimental in the version file. This set adds that missing support.
> 
> Bruce Richardson (3):
>   check-experimental-syms: remove use of environmental var
>   lib: add experimental symbols check to meson build
>   drivers: process shared lib link dependencies as for libs
> 
>  buildtools/check-experimental-syms.sh |  2 +-
>  buildtools/meson.build                |  2 ++
>  drivers/meson.build                   | 27
> +++++++++++++++++++++++++--
>  lib/meson.build                       | 12 +++++++++++-
>  4 files changed, 39 insertions(+), 4 deletions(-)

Series-acked-by: Luca Boccassi <bluca@debian.org>

-- 
Kind regards,
Luca Boccassi

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson
@ 2019-10-08 14:36 Bruce Richardson
  0 siblings, 0 replies; 6+ messages in thread
From: Bruce Richardson @ 2019-10-08 14:36 UTC (permalink / raw)
  To: dev; +Cc: thomas, Neil Horman, bluca, ray.kinsella, Bruce Richardson

The meson builds were missing support for scanning experimental symbols
in the .o/.a files and matching that against those tagged as
experimental in the version file. This set adds that missing support.

Bruce Richardson (3):
  check-experimental-syms: remove use of environmental var
  lib: add experimental symbols check to meson build
  drivers: process shared lib link dependencies as for libs

 buildtools/check-experimental-syms.sh |  2 +-
 buildtools/meson.build                |  2 ++
 drivers/meson.build                   | 27 +++++++++++++++++++++++++--
 lib/meson.build                       | 12 +++++++++++-
 4 files changed, 39 insertions(+), 4 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, back to index

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-08 14:36 [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Bruce Richardson
2019-10-08 14:36 ` [dpdk-dev] [PATCH 1/3] check-experimental-syms: remove use of environmental var Bruce Richardson
2019-10-08 14:36 ` [dpdk-dev] [PATCH 2/3] lib: add experimental symbols check to meson build Bruce Richardson
2019-10-08 14:36 ` [dpdk-dev] [PATCH 3/3] drivers: process shared lib link dependencies as for libs Bruce Richardson
2019-10-09  8:17 ` [dpdk-dev] [PATCH 0/3] Add scanning for experimental symbols to meson Luca Boccassi
  -- strict thread matches above, loose matches on Subject: below --
2019-10-08 14:36 Bruce Richardson

DPDK patches and discussions

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ http://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/ public-inbox