[PATCHv2] changelog: summary of changes for odp v1.11.1.0

Message ID 5830ADDC.2020902@linaro.org
State New
Headers show

Commit Message

Maxim Uvarov Nov. 19, 2016, 7:54 p.m.
Anders,

can you please send proposal patch for changing versions? I think it 
will be more easy to discuss it if we will have some working patch.

I also looked to numbering issue one more time and think that it will be 
good to have version in both abi and not abi compact library.

Our original version numbers in shipped files are:
dynamic:
libodp-linux.so -> libodp-linux.so.111.0.0
libodp-linux.so.111 -> libodp-linux.so.111.0.0
libodp-linux.so.111.0.0
static:
libodp-linux.a


After reset it will be:
dynamic:
libodp-linux.so -> libodp-linux.so.0.0.0
libodp-linux.so.0 -> libodp-linux.so.0.0.0
libodp-linux.so.0.0.0
static:
libodphelper-linux.a

Reset I think you asked for such change:

For both static and dynamic libraries API version will be reported as 
previous but .so version will be different.

I think that  it might be useful for debugging to see from which exactly 
version is used in file system. And more
logically abi compat so should have name libodp-linux.so and non abi 
compat libodp-linux-generic.so. And keep
all their numbers. In that case Cavium, Freescale, Odp-dpdk also sheep 
libodp-linux.so in abi compat mode and
some other library name is non compat mode. (I.e. abi compat application 
uses libodp-linux.so on any platforms,
and non abi application uses libodp-linux-plat.so only on platform where 
it was compiled.).

What do you think?

Thank you,
Maxim.


On 11/18/16 22:52, Anders Roxell wrote:
> On 18 November 2016 at 01:34, Bill Fischofer <bill.fischofer@linaro.org> wrote:libodp-linux.so.111.0.0

>> Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>

>> ---

>> Changes for v2:

>> - Changed release level to v1.11.1.0 per Mike

>>

>>   CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

>>   1 file changed, 211 insertions(+)

>>

>> diff --git a/CHANGELOG b/CHANGELOG

>> index d8230cd..66488e5 100644

>> --- a/CHANGELOG

>> +++ b/CHANGELOG

>> @@ -1,3 +1,214 @@

>> +== OpenDataPlane (1.11.1.0)

>> +

>> +=== New Features

>> +

>> +==== APIs

>> +ODP v1.11.1.0 is a minor API revision level beyond the Monarch Long Term

>> +Support (LTS) release and introduces a small change to the Traffic Manager API

>> +as well as some documentation clarification surrounding other APIs.

>> +

>> +==== Traffic Manager Egress Function

>> +The `odp_tm_egress_t` struct has been changed to add an explicit Boolean

>> +(`egress_fcn_supported`) that indicates whether the TM system supports

>> +a user-provided egress function. When specified this function is called to

>> +"output" a packet rather than having TM transmit it directly to a PktIO

>> +interface.

>> +

>> +==== Traffic Manager Coupling Change

>> +The `odp_tm_egress_t` struct has been changed to associate a TM system with an

>> +output `odp_pktio_t` rather than the previous `odp_pktout_queue_t`. This makes

>> +an explicit 1-to-1 map between a TM system and a PktIO interface.

> This means that we should bump the ODP's SO-version as well, since

> we changed the struct that you mention + that we added "odp_bool_t

> egress_fcn_supported;" to the same struct.

>

>> +

>> +==== Default huge page size clarification

>> +The documentation for the `odp_sys_huge_page_size()` API has been reworded to

>> +clarify that this API refers to default huge page size.

>> +

>> +==== Strict Priority (SP) Scheduler

>> +Building on the modular scheduler framework added in v1.10.1.0, an alternate

>> +Strict Priority (SP) Scheduler is now available for latency-sensitive

>> +workloads. Applications wishing to use the SP scheduler should specify

>> +the `./configure` option `--enable-schedule-sp`. This scheduler emphasizes low

>> +latency processing of high priority events at the expense of throughput. This

>> +alternate scheduler is considered experimental and should not be used for

>> +production at this time.

>> +

>> +==== Application Binary Interface (ABI) Support

>> +Support is added to enable ODP applications to be binary compatible across

>> +different implementations of ODP sharing the same Instruction Set Architecture

>> +(ISA). This support introduces a new `configure` option:

>> +

>> +`--enable-abi-compat=yes`::

>> +This is the default and specifies that the ODP library is to be built to

>> +support ABI compatibility mode. In this mode ODP APIs are never inlined. ABI

>> +compatibility ensures maximum application portability in cloud environments.

>> +

>> +`--enable-abi-compat=no`::

>> +Specify this option to enable the inlining of ODP APIs. This may result in

>> +improved performance at the cost of ABI compatibility and is suitable for

>> +applications running in embedded environments.

> before we do a new release I think we need to resolve what we

> talked about in this thread [1].

> Basically, if we disable ABI compat mode I think we should set the

> SO-version to 0:0:0, to make it clear that we don't try to be ABI

> compatible.

>

> Cheers,

> Anders

> [1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025734.html

>

>> +

>> +Note that ODP applications retain source code portability between ODP

>> +implementations regardless of the ABI mode chosen. To move to a different ODP

>> +application running on a different ISA, code need simply be recompiled against

>> +that target ODP implementation.

>> +

>> +==== SCTP Parsing Support

>> +The ODP classifier adds support for recognizing Stream Control Transmission

>> +Protocol (SCTP) packets. The APIs for this were previously not implemented.

>> +

>> +=== Packaging and Implementation Refinements

>> +

>> +==== Remove dependency on Linux headers

>> +ODP no longer has a dependency on Linux headers. This will help make the

>> +odp-linux reference implementation more easily portable to non-Linux

>> +environments.

>> +

>> +==== Remove dependency on helpers

>> +The odp-linux implementation has been made independent of the helper library

>> +to avoid circular dependency issues with packaging. Helper functions may use

>> +ODP APIs, however ODP implementations should not use helper functions.

>> +

>> +==== Reorganization of `test` directory

>> +The `test` directory has been reorganized to better support a unified approach

>> +to ODP component testing. API tests now live in

>> +`test/common_plat/validation/api` instead of the former

>> +`test/validation`. With this change performance and validation tests, as well

>> +as common and platform-specific tests can all be part of a unified test

>> +hierarchy.

>> +

>> +The resulting test tree now looks like:

>> +

>> +.New `test` directory hierarchy

>> +-----

>> +test

>> +├── common_plat

>> +│   ├── common

>> +│   ├── m4

>> +│   ├── miscellaneous

>> +│   ├── performance

>> +│   └── validation

>> +│       └── api

>> +│           ├── atomic

>> +│           ├── barrier

>> +│           ├── buffer

>> +│           ├── classification

>> +│           ├── cpumask

>> +│           ├── crypto

>> +│           ├── errno

>> +│           ├── hash

>> +│           ├── init

>> +│           ├── lock

>> +│           ├── packet

>> +│           ├── pktio

>> +│           ├── pool

>> +│           ├── queue

>> +│           ├── random

>> +│           ├── scheduler

>> +│           ├── shmem

>> +│           ├── std_clib

>> +│           ├── system

>> +│           ├── thread

>> +│           ├── time

>> +│           ├── timer

>> +│           └── traffic_mngr

>> +├── linux-generic

>> +│   ├── m4

>> +│   ├── mmap_vlan_ins

>> +│   ├── performance

>> +│   ├── pktio_ipc

>> +│   ├── ring

>> +│   └── validation

>> +│       └── api

>> +│           ├── pktio

>> +│           └── shmem

>> +└── m4

>> +-----

>> +

>> +==== Pools

>> +The maximum number of pools that may be created in the odp-linux reference

>> +implementation has been raised from 16 to 64.

>> +

>> +==== Upgrade to DPDK 16.07

>> +The DPDK pktio support in odp-linux has been upgraded to work with DPDK 16.07.

>> +A number of miscellaneous fixes and performance improvements in this support

>> +are also present.

>> +

>> +==== PktIO TAP Interface Classifier Support

>> +Packet I/O interfaces operating in TAP mode now can feed packets to the ODP

>> +classifier the same as other pktio modes can do.

>> +

>> +=== Performance Improvements

>> +

>> +==== Thread-local cache optimizations

>> +The thread-local buffer cache has been reorganized and optimized for burst-mode

>> +operation, yielding a measurable performance gain in almost all cases.

>> +

>> +==== Burst-mode buffer allocation

>> +The scheduler and pktio components have been reworked to use burst-mode

>> +buffer allocation/deallocation, yielding a measurable performance gain in

>> +almost all cases.

>> +

>> +==== Burst-mode queue operations

>> +ODP queues internally now attempt to use burst-mode enq/deq operations to

>> +accelerate performance where applicable.

>> +

>> +==== Ring-based Scheduler Priority Queues

>> +The ODP scheduler has been enhanced to use ring-based priority queues, resulting

>> +in significantly better scalability in many core environments.

>> +

>> +==== GitHub Automation Support

>> +ODP now supports the Travis framework needed to trigger CI automation in

>> +conjunction with GitHub. This support is considered experimental for now.

>> +

>> +=== Examples

>> +

>> +==== New `l3fwd` Example

>> +A new example application is provided that illustrates use

>> +of ODP for simple Layer 3 forwarding across multiple interfaces.

>> +

>> +==== "Hello World" Example Application

>> +A basic "hello world" ODP application has been added to the `example`

>> +directory to illustrate the basic setup and control flow needed by ODP

>> +applications.

>> +

>> +=== Documentation

>> +

>> +==== Pure API Documentation

>> +ODP now generates "pure" (implementation independent) doxygen documentation in

>> +addition to the specific documentation for the odp-linux implementation. The

>> +pure version is applicable to any ODP implementation as it simply describes

>> +the ODP API specification. Implementation-specific versions of this

>> +documentation describe both the APIs as well as specifics concerning typedefs,

>> +enums, etc. This should help clarify what aspects of ODP are platform

>> +independent.

>> +

>> +==== Clarify ODP Thread Definition

>> +The definition of an ODP thread in odp-linux has been clarified to specify that

>> +for this implementation ODP threads are Linux pthreads or Linux processes.

>> +Currently threads as processes is considered experimental in odp-linux.

>> +

>> +=== Bug Fixes

>> +Numerous refinements have been incorporated to make

>> +validation tests more robust in API coverage as well as correcting corner

>> +cases in the implementation of many ODP APIs. Notable fixes include:

>> +

>> +==== https://bugs.linaro.org/show_bug.cgi?id=2316[Bug 2316]

>> +`ODP_TIMEOUT_INVALID` is now defined consistently with other pool elements so

>> +the restriction on using Pool 0 as a timer pool is removed.

>> +

>> +==== https://bugs.linaro.org/show_bug.cgi?id=2310[Bug 2310]

>> +The `odp_packet_copy()` API now correctly handles user areas between pools that

>> +are configured with different sized per-packet user area definitions.

>> +

>> +==== https://bugs.linaro.org/show_bug.cgi?id=2571[Bug 2571]

>> +Corrects the implementation of AES GCM decryption in the ODP crypto API.

>> +

>> +=== Known Issues

>> +

>> +==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309]

>> +The Timer validation test fails sporadically in environments with high core

>> +counts.

>> +

>>   == OpenDataPlane (1.10.1.0)

>>

>>   === New Features

>> --

>> 2.7.4

>>

Comments

Anders Roxell Nov. 23, 2016, 4:53 p.m. | #1
On 2016-11-19 22:54, Maxim Uvarov wrote:
> Anders,

> 

> can you please send proposal patch for changing versions? I think it will be

> more easy to discuss it if we will have some working patch.

> 

> I also looked to numbering issue one more time and think that it will be

> good to have version in both abi and not abi compact library.

> 

> Our original version numbers in shipped files are:

> dynamic:

> libodp-linux.so -> libodp-linux.so.111.0.0

> libodp-linux.so.111 -> libodp-linux.so.111.0.0

> libodp-linux.so.111.0.0

> static:

> libodp-linux.a

> 

> 

> After reset it will be:

> dynamic:

> libodp-linux.so -> libodp-linux.so.0.0.0

> libodp-linux.so.0 -> libodp-linux.so.0.0.0

> libodp-linux.so.0.0.0

> static:

> libodphelper-linux.a

> 

> Reset I think you asked for such change:

> --- a/configure.ac

> +++ b/configure.ac

> @@ -245,6 +245,12 @@ AC_ARG_ENABLE([abi-compat],

>      [if test "x$enableval" = "xyes"; then

>         ODP_ABI_COMPAT=1

>         abi_compat=yes

> +

> +       # Reset library versions

> +       ODP_LIBSO_VERSION=0:0:0

> +       AC_SUBST(ODP_LIBSO_VERSION)

> +       ODPHELPER_LIBSO_VERSION=0:0:0

> +       AC_SUBST(ODPHELPER_LIBSO_VERSION)


This should be after else if we want this.

>       else

>         ODP_ABI_COMPAT=0

>         abi_compat=no


Instead of resetting the SO-version to 0:0:0 maybe we should just not
produce the shared libs?
Something like this:
AC_ENABLE_SHARED(no)

Cheers,
Anders

> 

> For both static and dynamic libraries API version will be reported as

> previous but .so version will be different.

> 

> I think that  it might be useful for debugging to see from which exactly

> version is used in file system. And more

> logically abi compat so should have name libodp-linux.so and non abi compat

> libodp-linux-generic.so. And keep

> all their numbers. In that case Cavium, Freescale, Odp-dpdk also sheep

> libodp-linux.so in abi compat mode and

> some other library name is non compat mode. (I.e. abi compat application

> uses libodp-linux.so on any platforms,

> and non abi application uses libodp-linux-plat.so only on platform where it

> was compiled.).

> 

> What do you think?

> 

> Thank you,

> Maxim.

> 

> 

> On 11/18/16 22:52, Anders Roxell wrote:

> >On 18 November 2016 at 01:34, Bill Fischofer <bill.fischofer@linaro.org> wrote:libodp-linux.so.111.0.0

> >>Signed-off-by: Bill Fischofer <bill.fischofer@linaro.org>

> >>---

> >>Changes for v2:

> >>- Changed release level to v1.11.1.0 per Mike

> >>

> >>  CHANGELOG | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

> >>  1 file changed, 211 insertions(+)

> >>

> >>diff --git a/CHANGELOG b/CHANGELOG

> >>index d8230cd..66488e5 100644

> >>--- a/CHANGELOG

> >>+++ b/CHANGELOG

> >>@@ -1,3 +1,214 @@

> >>+== OpenDataPlane (1.11.1.0)

> >>+

> >>+=== New Features

> >>+

> >>+==== APIs

> >>+ODP v1.11.1.0 is a minor API revision level beyond the Monarch Long Term

> >>+Support (LTS) release and introduces a small change to the Traffic Manager API

> >>+as well as some documentation clarification surrounding other APIs.

> >>+

> >>+==== Traffic Manager Egress Function

> >>+The `odp_tm_egress_t` struct has been changed to add an explicit Boolean

> >>+(`egress_fcn_supported`) that indicates whether the TM system supports

> >>+a user-provided egress function. When specified this function is called to

> >>+"output" a packet rather than having TM transmit it directly to a PktIO

> >>+interface.

> >>+

> >>+==== Traffic Manager Coupling Change

> >>+The `odp_tm_egress_t` struct has been changed to associate a TM system with an

> >>+output `odp_pktio_t` rather than the previous `odp_pktout_queue_t`. This makes

> >>+an explicit 1-to-1 map between a TM system and a PktIO interface.

> >This means that we should bump the ODP's SO-version as well, since

> >we changed the struct that you mention + that we added "odp_bool_t

> >egress_fcn_supported;" to the same struct.

> >

> >>+

> >>+==== Default huge page size clarification

> >>+The documentation for the `odp_sys_huge_page_size()` API has been reworded to

> >>+clarify that this API refers to default huge page size.

> >>+

> >>+==== Strict Priority (SP) Scheduler

> >>+Building on the modular scheduler framework added in v1.10.1.0, an alternate

> >>+Strict Priority (SP) Scheduler is now available for latency-sensitive

> >>+workloads. Applications wishing to use the SP scheduler should specify

> >>+the `./configure` option `--enable-schedule-sp`. This scheduler emphasizes low

> >>+latency processing of high priority events at the expense of throughput. This

> >>+alternate scheduler is considered experimental and should not be used for

> >>+production at this time.

> >>+

> >>+==== Application Binary Interface (ABI) Support

> >>+Support is added to enable ODP applications to be binary compatible across

> >>+different implementations of ODP sharing the same Instruction Set Architecture

> >>+(ISA). This support introduces a new `configure` option:

> >>+

> >>+`--enable-abi-compat=yes`::

> >>+This is the default and specifies that the ODP library is to be built to

> >>+support ABI compatibility mode. In this mode ODP APIs are never inlined. ABI

> >>+compatibility ensures maximum application portability in cloud environments.

> >>+

> >>+`--enable-abi-compat=no`::

> >>+Specify this option to enable the inlining of ODP APIs. This may result in

> >>+improved performance at the cost of ABI compatibility and is suitable for

> >>+applications running in embedded environments.

> >before we do a new release I think we need to resolve what we

> >talked about in this thread [1].

> >Basically, if we disable ABI compat mode I think we should set the

> >SO-version to 0:0:0, to make it clear that we don't try to be ABI

> >compatible.

> >

> >Cheers,

> >Anders

> >[1] https://lists.linaro.org/pipermail/lng-odp/2016-September/025734.html

> >

> >>+

> >>+Note that ODP applications retain source code portability between ODP

> >>+implementations regardless of the ABI mode chosen. To move to a different ODP

> >>+application running on a different ISA, code need simply be recompiled against

> >>+that target ODP implementation.

> >>+

> >>+==== SCTP Parsing Support

> >>+The ODP classifier adds support for recognizing Stream Control Transmission

> >>+Protocol (SCTP) packets. The APIs for this were previously not implemented.

> >>+

> >>+=== Packaging and Implementation Refinements

> >>+

> >>+==== Remove dependency on Linux headers

> >>+ODP no longer has a dependency on Linux headers. This will help make the

> >>+odp-linux reference implementation more easily portable to non-Linux

> >>+environments.

> >>+

> >>+==== Remove dependency on helpers

> >>+The odp-linux implementation has been made independent of the helper library

> >>+to avoid circular dependency issues with packaging. Helper functions may use

> >>+ODP APIs, however ODP implementations should not use helper functions.

> >>+

> >>+==== Reorganization of `test` directory

> >>+The `test` directory has been reorganized to better support a unified approach

> >>+to ODP component testing. API tests now live in

> >>+`test/common_plat/validation/api` instead of the former

> >>+`test/validation`. With this change performance and validation tests, as well

> >>+as common and platform-specific tests can all be part of a unified test

> >>+hierarchy.

> >>+

> >>+The resulting test tree now looks like:

> >>+

> >>+.New `test` directory hierarchy

> >>+-----

> >>+test

> >>+├── common_plat

> >>+│   ├── common

> >>+│   ├── m4

> >>+│   ├── miscellaneous

> >>+│   ├── performance

> >>+│   └── validation

> >>+│       └── api

> >>+│           ├── atomic

> >>+│           ├── barrier

> >>+│           ├── buffer

> >>+│           ├── classification

> >>+│           ├── cpumask

> >>+│           ├── crypto

> >>+│           ├── errno

> >>+│           ├── hash

> >>+│           ├── init

> >>+│           ├── lock

> >>+│           ├── packet

> >>+│           ├── pktio

> >>+│           ├── pool

> >>+│           ├── queue

> >>+│           ├── random

> >>+│           ├── scheduler

> >>+│           ├── shmem

> >>+│           ├── std_clib

> >>+│           ├── system

> >>+│           ├── thread

> >>+│           ├── time

> >>+│           ├── timer

> >>+│           └── traffic_mngr

> >>+├── linux-generic

> >>+│   ├── m4

> >>+│   ├── mmap_vlan_ins

> >>+│   ├── performance

> >>+│   ├── pktio_ipc

> >>+│   ├── ring

> >>+│   └── validation

> >>+│       └── api

> >>+│           ├── pktio

> >>+│           └── shmem

> >>+└── m4

> >>+-----

> >>+

> >>+==== Pools

> >>+The maximum number of pools that may be created in the odp-linux reference

> >>+implementation has been raised from 16 to 64.

> >>+

> >>+==== Upgrade to DPDK 16.07

> >>+The DPDK pktio support in odp-linux has been upgraded to work with DPDK 16.07.

> >>+A number of miscellaneous fixes and performance improvements in this support

> >>+are also present.

> >>+

> >>+==== PktIO TAP Interface Classifier Support

> >>+Packet I/O interfaces operating in TAP mode now can feed packets to the ODP

> >>+classifier the same as other pktio modes can do.

> >>+

> >>+=== Performance Improvements

> >>+

> >>+==== Thread-local cache optimizations

> >>+The thread-local buffer cache has been reorganized and optimized for burst-mode

> >>+operation, yielding a measurable performance gain in almost all cases.

> >>+

> >>+==== Burst-mode buffer allocation

> >>+The scheduler and pktio components have been reworked to use burst-mode

> >>+buffer allocation/deallocation, yielding a measurable performance gain in

> >>+almost all cases.

> >>+

> >>+==== Burst-mode queue operations

> >>+ODP queues internally now attempt to use burst-mode enq/deq operations to

> >>+accelerate performance where applicable.

> >>+

> >>+==== Ring-based Scheduler Priority Queues

> >>+The ODP scheduler has been enhanced to use ring-based priority queues, resulting

> >>+in significantly better scalability in many core environments.

> >>+

> >>+==== GitHub Automation Support

> >>+ODP now supports the Travis framework needed to trigger CI automation in

> >>+conjunction with GitHub. This support is considered experimental for now.

> >>+

> >>+=== Examples

> >>+

> >>+==== New `l3fwd` Example

> >>+A new example application is provided that illustrates use

> >>+of ODP for simple Layer 3 forwarding across multiple interfaces.

> >>+

> >>+==== "Hello World" Example Application

> >>+A basic "hello world" ODP application has been added to the `example`

> >>+directory to illustrate the basic setup and control flow needed by ODP

> >>+applications.

> >>+

> >>+=== Documentation

> >>+

> >>+==== Pure API Documentation

> >>+ODP now generates "pure" (implementation independent) doxygen documentation in

> >>+addition to the specific documentation for the odp-linux implementation. The

> >>+pure version is applicable to any ODP implementation as it simply describes

> >>+the ODP API specification. Implementation-specific versions of this

> >>+documentation describe both the APIs as well as specifics concerning typedefs,

> >>+enums, etc. This should help clarify what aspects of ODP are platform

> >>+independent.

> >>+

> >>+==== Clarify ODP Thread Definition

> >>+The definition of an ODP thread in odp-linux has been clarified to specify that

> >>+for this implementation ODP threads are Linux pthreads or Linux processes.

> >>+Currently threads as processes is considered experimental in odp-linux.

> >>+

> >>+=== Bug Fixes

> >>+Numerous refinements have been incorporated to make

> >>+validation tests more robust in API coverage as well as correcting corner

> >>+cases in the implementation of many ODP APIs. Notable fixes include:

> >>+

> >>+==== https://bugs.linaro.org/show_bug.cgi?id=2316[Bug 2316]

> >>+`ODP_TIMEOUT_INVALID` is now defined consistently with other pool elements so

> >>+the restriction on using Pool 0 as a timer pool is removed.

> >>+

> >>+==== https://bugs.linaro.org/show_bug.cgi?id=2310[Bug 2310]

> >>+The `odp_packet_copy()` API now correctly handles user areas between pools that

> >>+are configured with different sized per-packet user area definitions.

> >>+

> >>+==== https://bugs.linaro.org/show_bug.cgi?id=2571[Bug 2571]

> >>+Corrects the implementation of AES GCM decryption in the ODP crypto API.

> >>+

> >>+=== Known Issues

> >>+

> >>+==== https://bugs.linaro.org/show_bug.cgi?id=2309[Bug 2309]

> >>+The Timer validation test fails sporadically in environments with high core

> >>+counts.

> >>+

> >>  == OpenDataPlane (1.10.1.0)

> >>

> >>  === New Features

> >>--

> >>2.7.4

> >>

> 


-- 
Anders Roxell
anders.roxell@linaro.org
M: +46 709 71 42 85 | IRC: roxell

Patch

--- a/configure.ac
+++ b/configure.ac
@@ -245,6 +245,12 @@  AC_ARG_ENABLE([abi-compat],
      [if test "x$enableval" = "xyes"; then
         ODP_ABI_COMPAT=1
         abi_compat=yes
+
+       # Reset library versions
+       ODP_LIBSO_VERSION=0:0:0
+       AC_SUBST(ODP_LIBSO_VERSION)
+       ODPHELPER_LIBSO_VERSION=0:0:0
+       AC_SUBST(ODPHELPER_LIBSO_VERSION)
       else
         ODP_ABI_COMPAT=0
         abi_compat=no