From: Anatoly Burakov <anatoly.burakov@intel.com> To: dev@dpdk.org Cc: Marcin Baran <marcinx.baran@intel.com>, Thomas Monjalon <thomas@monjalon.net>, Bruce Richardson <bruce.richardson@intel.com>, john.mcnamara@intel.com, david.marchand@redhat.com, Pawel Modrak <pawelx.modrak@intel.com> Subject: [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Date: Wed, 16 Oct 2019 13:43:16 +0100 Message-ID: <6b0a64dba971a8d244271f36e283813814412efc.1571229052.git.anatoly.burakov@intel.com> (raw) In-Reply-To: <cover.1571229052.git.anatoly.burakov@intel.com> In-Reply-To: <cover.1571229052.git.anatoly.burakov@intel.com> From: Marcin Baran <marcinx.baran@intel.com> The libraries should be maintained using global ABI versioning. The changes includes adding global ABI version support for both makefile and meson build system. Experimental libraries should be marked as 0. Signed-off-by: Marcin Baran <marcinx.baran@intel.com> Signed-off-by: Pawel Modrak <pawelx.modrak@intel.com> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com> --- buildtools/meson.build | 2 ++ config/ABI_VERSION | 1 + config/meson.build | 3 ++- drivers/meson.build | 20 ++++++++++++++------ lib/meson.build | 18 +++++++++++++----- meson_options.txt | 2 -- mk/rte.lib.mk | 19 +++++++++++-------- 7 files changed, 43 insertions(+), 22 deletions(-) create mode 100644 config/ABI_VERSION diff --git a/buildtools/meson.build b/buildtools/meson.build index 32c79c1308..78ce69977d 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -12,3 +12,5 @@ if python3.found() else map_to_def_cmd = ['meson', 'runpython', files('map_to_def.py')] endif + +is_experimental_cmd = [find_program('grep', 'findstr'), '^DPDK_'] diff --git a/config/ABI_VERSION b/config/ABI_VERSION new file mode 100644 index 0000000000..9a7c1e503f --- /dev/null +++ b/config/ABI_VERSION @@ -0,0 +1 @@ +20.0 diff --git a/config/meson.build b/config/meson.build index a27f731f85..25ecf928e4 100644 --- a/config/meson.build +++ b/config/meson.build @@ -17,7 +17,8 @@ endforeach # set the major version, which might be used by drivers and libraries # depending on the configuration options pver = meson.project_version().split('.') -major_version = '@0@.@1@'.format(pver.get(0), pver.get(1)) +major_version = run_command(find_program('cat', 'more'), + files('ABI_VERSION')).stdout().strip() # extract all version information into the build configuration dpdk_conf.set('RTE_VER_YEAR', pver.get(0).to_int()) diff --git a/drivers/meson.build b/drivers/meson.build index 2ed2e95411..5c5fe87c7e 100644 --- a/drivers/meson.build +++ b/drivers/meson.build @@ -110,9 +110,20 @@ foreach class:dpdk_driver_classes output: out_filename, depends: [pmdinfogen, tmp_lib]) - if get_option('per_library_versions') - lib_version = '@0@.1'.format(version) - so_version = '@0@'.format(version) + version_map = '@0@/@1@/@2@_version.map'.format( + meson.current_source_dir(), + drv_path, lib_name) + + if is_windows + version_map = '\\'.join(version_map.split('/')) + endif + + is_experimental = run_command(is_experimental_cmd, + files(version_map)).returncode() + + if is_experimental != 0 + lib_version = '0.1' + so_version = '0' else lib_version = major_version so_version = major_version @@ -128,9 +139,6 @@ foreach class:dpdk_driver_classes install: true) # now build the shared driver - version_map = '@0@/@1@/@2@_version.map'.format( - meson.current_source_dir(), - drv_path, lib_name) shared_lib = shared_library(lib_name, sources, objects: objs, diff --git a/lib/meson.build b/lib/meson.build index e5ff838934..3892c16e8f 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -97,9 +97,19 @@ foreach l:libraries cflags += '-DALLOW_EXPERIMENTAL_API' endif - if get_option('per_library_versions') - lib_version = '@0@.1'.format(version) - so_version = '@0@'.format(version) + version_map = '@0@/@1@/rte_@2@_version.map'.format( + meson.current_source_dir(), dir_name, name) + + if is_windows + version_map = '\\'.join(version_map.split('/')) + endif + + is_experimental = run_command(is_experimental_cmd, + files(version_map)).returncode() + + if is_experimental != 0 + lib_version = '0.1' + so_version = '0' else lib_version = major_version so_version = major_version @@ -120,8 +130,6 @@ foreach l:libraries # then use pre-build objects to build shared lib sources = [] objs += static_lib.extract_all_objects(recursive: false) - version_map = '@0@/@1@/rte_@2@_version.map'.format( - meson.current_source_dir(), dir_name, name) implib = dir_name + '.dll.a' def_file = custom_target(name + '_def', diff --git a/meson_options.txt b/meson_options.txt index 448f3e63dc..000e38fd98 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -28,8 +28,6 @@ option('max_lcores', type: 'integer', value: 128, description: 'maximum number of cores/threads supported by EAL') option('max_numa_nodes', type: 'integer', value: 4, description: 'maximum number of NUMA nodes supported by EAL') -option('per_library_versions', type: 'boolean', value: true, - description: 'true: each lib gets its own version number, false: DPDK version used for each lib') option('tests', type: 'boolean', value: true, description: 'build unit tests') option('use_hpet', type: 'boolean', value: false, diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk index 4df8849a08..f84161c6d5 100644 --- a/mk/rte.lib.mk +++ b/mk/rte.lib.mk @@ -11,20 +11,23 @@ EXTLIB_BUILD ?= n # VPATH contains at least SRCDIR VPATH += $(SRCDIR) -ifneq ($(CONFIG_RTE_MAJOR_ABI),) -ifneq ($(LIBABIVER),) -LIBABIVER := $(CONFIG_RTE_MAJOR_ABI) +ifeq ($(OS), Windows_NT) +search_cmd = findstr +print_cmd = more +else +search_cmd = grep +print_cmd = cat endif + +ifneq ($(shell $(search_cmd) "^DPDK_" $(SRCDIR)/$(EXPORT_MAP)),) +LIBABIVER := $(shell $(print_cmd) $(RTE_SRCDIR)/config/ABI_VERSION) +else +LIBABIVER := 0 endif ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y) LIB := $(patsubst %.a,%.so.$(LIBABIVER),$(LIB)) ifeq ($(EXTLIB_BUILD),n) -ifeq ($(CONFIG_RTE_MAJOR_ABI),) -ifeq ($(CONFIG_RTE_NEXT_ABI),y) -LIB := $(LIB).1 -endif -endif CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP) endif endif -- 2.17.1
next prev parent reply index Thread overview: 131+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-30 9:21 [dpdk-dev] [PATCH 1/8] " Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 2/8] buildtools: scripts for updating symbols abi version Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 3/8] buildtools: add ABI versioning check script Marcin Baran 2019-09-30 10:27 ` Bruce Richardson 2019-09-30 9:21 ` [dpdk-dev] [PATCH 4/8] build: change ABI version to 20.0 Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 5/8] lib: remove dead code from timer Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 6/8] lib: remove dead code from lpm Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 7/8] lib: remove dead code from distributor Marcin Baran 2019-09-30 9:21 ` [dpdk-dev] [PATCH 8/8] lib: change function suffix in distributor Marcin Baran 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 00/10] Implement the new ABI policy and add helper scripts Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 0/9] " Anatoly Burakov 2019-10-17 8:50 ` Bruce Richardson 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 00/10] " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 " Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 00/12] " Anatoly Burakov 2019-11-20 20:17 ` Thomas Monjalon 2019-11-20 22:13 ` David Marchand 2019-11-21 10:22 ` Burakov, Anatoly 2019-11-21 13:24 ` Kinsella, Ray 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 01/12] config: change ABI versioning to global Anatoly Burakov 2019-11-20 19:51 ` David Marchand 2019-11-20 22:01 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 02/12] config: remove CONFIG_RTE_MAJOR_ABI option Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 03/12] build: remove individual library versions Anatoly Burakov 2019-11-20 19:35 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 04/12] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-20 20:05 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 05/12] buildtools: add ABI update shell script Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 06/12] timer: remove deprecated code Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 07/12] lpm: " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 08/12] distributor: " Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 09/12] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 10/12] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 11/12] build: change ABI version to 20.0 Anatoly Burakov 2019-11-20 20:47 ` David Marchand 2019-11-20 17:23 ` [dpdk-dev] [PATCH v8 12/12] buildtools: add ABI versioning check script Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-19 13:53 ` Thomas Monjalon 2019-11-19 15:48 ` Burakov, Anatoly 2019-11-20 12:10 ` Kinsella, Ray 2019-11-20 13:31 ` Thomas Monjalon 2019-11-20 14:10 ` Kinsella, Ray 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-19 14:01 ` Thomas Monjalon 2019-11-19 15:38 ` Burakov, Anatoly 2019-11-19 16:05 ` Thomas Monjalon 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-11-19 17:38 ` Thomas Monjalon 2019-11-20 11:50 ` Burakov, Anatoly 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 04/10] timer: remove deprecated code Anatoly Burakov 2019-11-19 21:42 ` David Marchand 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 05/10] lpm: " Anatoly Burakov 2019-11-19 21:43 ` David Marchand 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 06/10] distributor: " Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-11-19 17:46 ` Thomas Monjalon 2019-11-19 21:50 ` David Marchand 2019-11-22 7:07 ` Sachin Saxena 2019-11-08 16:25 ` [dpdk-dev] [PATCH v7 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-11-19 18:16 ` Thomas Monjalon 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 04/10] timer: remove deprecated code Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 05/10] lpm: " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 06/10] distributor: " Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-11-06 16:54 ` [dpdk-dev] [PATCH v6 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 01/10] config: change ABI versioning to global Anatoly Burakov 2019-11-05 11:05 ` David Marchand 2019-11-05 13:50 ` Bruce Richardson 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-11-06 15:38 ` David Marchand 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 05/10] lpm: " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 06/10] distributor: " Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-24 9:46 ` [dpdk-dev] [PATCH v5 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 01/10] config: change ABI versioning to global Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-17 21:04 ` Carrillo, Erik G 2019-10-21 13:24 ` Kevin Traynor 2019-10-24 9:07 ` Burakov, Anatoly 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 05/10] lpm: " Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 06/10] distributor: " Anatoly Burakov 2019-10-17 15:59 ` Hunt, David 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 07/10] distributor: rename v2.0 ABI to _single suffix Anatoly Burakov 2019-10-17 16:00 ` Hunt, David 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-17 14:31 ` [dpdk-dev] [PATCH v4 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-17 14:32 ` [dpdk-dev] [PATCH v4 10/10] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 1/9] config: change ABI versioning to global Anatoly Burakov 2019-10-17 8:44 ` Bruce Richardson 2019-10-17 10:25 ` Burakov, Anatoly 2019-10-17 14:09 ` Luca Boccassi 2019-10-17 14:12 ` Bruce Richardson 2019-10-18 10:07 ` Kevin Traynor 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 2/9] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 3/9] buildtools: add ABI update shell script Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 4/9] timer: remove deprecated code Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 5/9] lpm: " Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 6/9] distributor: " Anatoly Burakov 2019-10-17 10:53 ` Hunt, David 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 7/9] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 8/9] build: change ABI version to 20.0 Anatoly Burakov 2019-10-16 17:03 ` [dpdk-dev] [PATCH v3 9/9] buildtools: add ABI versioning check script Anatoly Burakov 2019-10-16 12:43 ` Anatoly Burakov [this message] 2019-10-16 13:22 ` [dpdk-dev] [PATCH v2 01/10] config: change ABI versioning for global Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 02/10] buildtools: add script for updating symbols abi version Anatoly Burakov 2019-10-16 13:25 ` Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 03/10] buildtools: add ABI update shell script Anatoly Burakov 2019-10-16 13:33 ` Bruce Richardson 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 04/10] timer: remove deprecated code Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 05/10] lpm: " Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 06/10] distributor: " Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 07/10] lib: change function suffix in distributor Anatoly Burakov 2019-10-16 13:18 ` Hunt, David 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 08/10] drivers/octeontx: add missing public symbol Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 09/10] build: change ABI version to 20.0 Anatoly Burakov 2019-10-16 12:43 ` [dpdk-dev] [PATCH v2 10/10] buildtools: add ABI versioning check script Anatoly Burakov
Reply instructions: You may reply publically 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=6b0a64dba971a8d244271f36e283813814412efc.1571229052.git.anatoly.burakov@intel.com \ --to=anatoly.burakov@intel.com \ --cc=bruce.richardson@intel.com \ --cc=david.marchand@redhat.com \ --cc=dev@dpdk.org \ --cc=john.mcnamara@intel.com \ --cc=marcinx.baran@intel.com \ --cc=pawelx.modrak@intel.com \ --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
DPDK-dev Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-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 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \ dev@dpdk.org public-inbox-index dpdk-dev Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git