X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fguides%2Fcontributing%2Fabi_versioning.rst;h=b1d09c79402a4c5b0e547b8e323c3a670b9855b6;hb=2ab55f78d140474e18e523180a2d2df2aada72b2;hp=ef881877f115c1b6929f05dcb7a1170644e3a2e3;hpb=05a38d7c759ef2e8b76f23377e4baf9e95060b15;p=dpdk.git diff --git a/doc/guides/contributing/abi_versioning.rst b/doc/guides/contributing/abi_versioning.rst index ef881877f1..b1d09c7940 100644 --- a/doc/guides/contributing/abi_versioning.rst +++ b/doc/guides/contributing/abi_versioning.rst @@ -112,8 +112,7 @@ how this may be done. At the same time, the major ABI version is changed atomically across all libraries by incrementing the major version in the ABI_VERSION file. This is -done globally for all libraries that declare a stable ABI. For libraries marked -as EXPERIMENTAL, their major ABI version is always set to 0. +done globally for all libraries. Minor ABI versions ~~~~~~~~~~~~~~~~~~ @@ -159,7 +158,7 @@ The macros exported are: * ``VERSION_SYMBOL_EXPERIMENTAL(b, e)``: Creates a symbol version table entry binding versioned symbol ``b@EXPERIMENTAL`` to the internal function ``be``. The macro is used when a symbol matures to become part of the stable ABI, to - provide an alias to experimental for some time. + provide an alias to experimental until the next major ABI version. .. _example_abi_macro_usage: @@ -413,7 +412,7 @@ Finally, we need to indicate to the :doc:`meson/ninja build system library or driver. In the libraries or driver where we have added symbol versioning, in the ``meson.build`` file we add the following -.. code-block:: +.. code-block:: none use_function_versioning = true @@ -429,8 +428,9 @@ _____________________________ In situations in which an ``experimental`` symbol has been stable for some time, and it becomes a candidate for promotion to the stable ABI. At this time, when -promoting the symbol, maintainer may choose to provide an alias to the +promoting the symbol, the maintainer may choose to provide an alias to the ``experimental`` symbol version, so as not to break consuming applications. +This alias is then dropped in the next major ABI version. The process to provide an alias to ``experimental`` is similar to that, of :ref:`symbol versioning ` described above. @@ -682,41 +682,16 @@ Running the ABI Validator ------------------------- The ``devtools`` directory in the DPDK source tree contains a utility program, -``validate-abi.sh``, for validating the DPDK ABI based on the Linux `ABI -Compliance Checker -`_. - -This has a dependency on the ``abi-compliance-checker`` and ``and abi-dumper`` -utilities which can be installed via a package manager. For example:: - - sudo yum install abi-compliance-checker - sudo yum install abi-dumper - -The syntax of the ``validate-abi.sh`` utility is:: - - ./devtools/validate-abi.sh - -Where ``REV1`` and ``REV2`` are valid gitrevisions(7) -https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html -on the local repo. - -For example:: - - # Check between the previous and latest commit: - ./devtools/validate-abi.sh HEAD~1 HEAD - - # Check on a specific compilation target: - ./devtools/validate-abi.sh -t x86_64-native-linux-gcc HEAD~1 HEAD +``check-abi.sh``, for validating the DPDK ABI based on the libabigail +`abidiff utility `_. - # Check between two tags: - ./devtools/validate-abi.sh v2.0.0 v2.1.0 +The syntax of the ``check-abi.sh`` utility is:: - # Check between git master and local topic-branch "vhost-hacking": - ./devtools/validate-abi.sh master vhost-hacking + devtools/check-abi.sh -After the validation script completes (it can take a while since it need to -compile both tags) it will create compatibility reports in the -``./abi-check/compat_report`` directory. Listed incompatibilities can be found -as follows:: +Where specifies the directory housing the reference build of DPDK, +and specifies the DPDK build directory to check the ABI of. - grep -lr Incompatible abi-check/compat_reports/ +The ABI compatibility is automatically verified when using a build script +from ``devtools``, if the variable ``DPDK_ABI_REF_VERSION`` is set with a tag, +as described in :ref:`ABI check recommendations`.