Hi,

As discussed yesterday, we’ll keep current api and impl string calls and 
potentially add numeric implementation version calls after v1.1. The problem 
there is to define (== force) common version numbering scheme for all 
implementation.

E.g. if some  implementation wants to include a hash into its version number:
- how many bits are sufficient?
- > or < comparisons would not have any meaning, only =! or ==  would work


-Petri


From: lng-odp [mailto:[email protected]] On Behalf Of ext Mike 
Holmes
Sent: Tuesday, May 12, 2015 3:56 PM
To: Maxim Uvarov
Cc: lng-odp
Subject: Re: [lng-odp] [API-NEXT PATCH] api: version.h: add odp_version_str



On 12 May 2015 at 08:31, Maxim Uvarov 
<[email protected]<mailto:[email protected]>> wrote:
On 05/12/2015 14:47, Mike Holmes wrote:


On 12 May 2015 at 04:14, Savolainen, Petri (Nokia - FI/Espoo) 
<[email protected]<mailto:[email protected]> 
<mailto:[email protected]<mailto:[email protected]>>> wrote:

    Hi,

    I may have missed some mail but ... don't get why the third string
    is needed. API string (odp_version_api_str()) is the API version
    number in string format (in addition to macros in numeric format).
    Implementation string (odp_version_impl_str()) is a free form
    string containing whatever information the implementation decides
    to put there. I’d expect a user to print out both of those into a
    log or bug report.


The current implementation string needs to remain as a simple value that the 
application can compare, forcing an application to parse a long string does not 
make any sense to me, in fact I think this should become part of the API and 
not implementation defined.

I.e. in my application I can compare API version and then implementation number 
to determine if I have the code at the level I require, possibly I need some 
important patch level.

To retain that capability and meet your suggestion of an easy way to get a lot 
of debug information out  then a verbose string is valuable in addition.

Yes, ok. How then how about move

#define ODP_IMPL_VERSION to the api?

I would leave it defined where it is, there is a public API to recover the 
number already and we want to reuse the public API files as they are without 
modifying them in any way per implementation.

I think Alex, Taras and Zoltan representing three additional platforms all 
agree we should retain this simple number, please correct me :)

All we need to is update the doxygen to state that the implementation string is 
defined by the API as a number that increments per patch - I suggest that it is 
relative to the api number, for example the implementation number increments 
the 4th digit  when changes are made that do not alter the API in any way.

Thus you might release  API = 1.1.0 and Implementation = 0 or 1.1.0.0 of your 
platform once we sort this out, then you improve the implementation so you will 
release  API = 1.1.0 and Implementation = 1 or 1.1.0.1

Then separately we can add the new string API or not, but I really see value in 
having that for debug logs.



Maxim.




    What would be the use case for the third one? I expect
    odp_version_impl_str() include all information needed to identify
    an implementation, including the build number.

    Examples of odp_version_impl_str():

    linux-generic 1.0.4-0 (v1.0.4) May 6 2015 07:54:33
    linux-generic 1.0.4-13 (v1.0.4) July 12 2015 08:23:09
    linux-generic 1.0.4-22 (v1.0.4) Oct 1 2015 18:01:34
    https://git.linaro.org/lng/odp.git hash 812ea78445
    odp-for-xyz 1.0.4 build 1826 (API version 1.0.4) May 6 2015 07:54:33
    odp-foo-bar 1.0.1-17 https://git.foo.org/foo_bar.git hash 75ed2758902

    User would not compare or expect any format on the implementation
    specific strings. The intention is that each implementation
    release/build would produces a unique string, which helps then
    identify bugs,etc ... but implementation decides.


    -Petri




    From: lng-odp 
[mailto:[email protected]<mailto:[email protected]>
    
<mailto:[email protected]<mailto:[email protected]>>]
 On Behalf Of ext Mike
    Holmes
    Sent: Monday, May 11, 2015 7:45 PM
    To: Bill Fischofer
    Cc: LNG ODP Mailman List
    Subject: Re: [lng-odp] [API-NEXT PATCH] api: version.h: add
    odp_version_str

    Thanks Bill.

    Just need Petri or Robbies confirmation that 1.1 forward will use
    the implementation version as a number and not a long string,
    essentially as it was before but  we failed to take advantage of it.

    Mike

    On 11 May 2015 at 12:40, Bill Fischofer 
<[email protected]<mailto:[email protected]>
    <mailto:[email protected]<mailto:[email protected]>>> wrote:


    On Fri, May 8, 2015 at 10:47 AM, Mike Holmes
    <[email protected]<mailto:[email protected]> 
<mailto:[email protected]<mailto:[email protected]>>> wrote:
    Signed-off-by: Mike Holmes 
<[email protected]<mailto:[email protected]>
    <mailto:[email protected]<mailto:[email protected]>>>

    Reviewed-by: Bill Fischofer 
<[email protected]<mailto:[email protected]>
    <mailto:[email protected]<mailto:[email protected]>>>


    ---
     include/odp/api/version.h                 | 17 +++++++++++++++++
     platform/linux-generic/odp_impl.c         | 16 ++++++++++++++++
     test/miscellaneous/odp_api_from_cpp.cpp   |  1 +
     test/validation/common/odp_cunit_common.c |  1 +
     test/validation/odp_init.c                |  1 +
     test/validation/odp_init_abort.c          |  1 +
     test/validation/odp_init_log.c            |  1 +
     7 files changed, 38 insertions(+)

    diff --git a/include/odp/api/version.h b/include/odp/api/version.h
    index 027095d..f64e4ef 100644
    --- a/include/odp/api/version.h
    +++ b/include/odp/api/version.h
    @@ -50,6 +50,8 @@ extern "C" {

     /**
      * Returns ODP API version string
    + * @sa odp_version_impl_str()
    + * @sa odp_version_str()
      */
     const char *odp_version_api_str(void);

    @@ -61,10 +63,25 @@ const char *odp_version_api_str(void);
      * of the API changing, this function returns that indication string.
      * @note This string is implementation specific.
      * @sa odp_version_api_str()
    + * @sa odp_version_str()
      *
      * @return null terminated implementation specific version
    identifier string
       */
     const char *odp_version_impl_str(void);
    +
    +/**
    + * Returns ODP version string
    + *
    + * Verbosely describe the build in use, typicaly for use in log file.
    + * @note This string is implementation specific.
    + * @sa odp_version_api_str()
    + * @sa odp_version_impl_str()
    + *
    + * @return null terminated implementation specific version string
    +  */
    +const char *odp_version_str(void);
    +
    +
     /**
      * @}
      */
    diff --git a/platform/linux-generic/odp_impl.c
    b/platform/linux-generic/odp_impl.c
    index 46d0e40..26ee3f9 100644
    --- a/platform/linux-generic/odp_impl.c
    +++ b/platform/linux-generic/odp_impl.c
    @@ -38,6 +38,22 @@ const char *odp_version_impl_str(void)
            return ODP_VERSION_IMPL_STR;
     }

    +#define ODP_VERSION_STR \
    +               ODP_VERSION_TO_STR(PLATFORM) " " \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR) "-" \
    +               ODP_VERSION_TO_STR(ODP_VERSION_IMPL) " (v" \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_GENERATION) "." \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_MAJOR) "." \
    +  ODP_VERSION_TO_STR(ODP_VERSION_API_MINOR) ") " \
    +               __DATE__ " " __TIME__ " " \
    +               ODP_VERSION_TO_STR(GIT_HASH)
    +
    +const char *odp_version_str(void)
    +{
    +       return ODP_VERSION_STR;
    +}
     #ifdef __cplusplus
     }
     #endif
    diff --git a/test/miscellaneous/odp_api_from_cpp.cpp
    b/test/miscellaneous/odp_api_from_cpp.cpp
    index e62ef8d..f044f92 100644
    --- a/test/miscellaneous/odp_api_from_cpp.cpp
    +++ b/test/miscellaneous/odp_api_from_cpp.cpp
    @@ -7,6 +7,7 @@ int main(int argc, const char *argv[])

            printf("\tODP API version: %s\n", odp_version_api_str());
            printf("\tODP implementation version: %s\n",
    odp_version_impl_str());
    +       printf("\tODP version: %s\n", odp_version_str());

            return 0;
     }
    diff --git a/test/validation/common/odp_cunit_common.c
    b/test/validation/common/odp_cunit_common.c
    index 2af4410..315a902 100644
    --- a/test/validation/common/odp_cunit_common.c
    +++ b/test/validation/common/odp_cunit_common.c
    @@ -55,6 +55,7 @@ int main(void)

            printf("\tODP API version: %s\n", odp_version_api_str());
            printf("\tODP implementation version: %s\n",
    odp_version_impl_str());
    +       printf("\tODP version: %s\n", odp_version_str());

            if (0 != odp_init_global(NULL, NULL)) {
                    fprintf(stderr, "error: odp_init_global() failed.\n");
    diff --git a/test/validation/odp_init.c b/test/validation/odp_init.c
    index 82f8849..08e0b08 100644
    --- a/test/validation/odp_init.c
    +++ b/test/validation/odp_init.c
    @@ -37,6 +37,7 @@ int main(void)

            printf("\tODP API version: %s\n", odp_version_api_str());
            printf("\tODP implementation version: %s\n",
    odp_version_impl_str());
    +       printf("\tODP version: %s\n", odp_version_str());

            CU_set_error_action(CUEA_ABORT);

    diff --git a/test/validation/odp_init_abort.c
    b/test/validation/odp_init_abort.c
    index ceb82b5..7844066 100644
    --- a/test/validation/odp_init_abort.c
    +++ b/test/validation/odp_init_abort.c
    @@ -42,6 +42,7 @@ int main(void)

            printf("\tODP API version: %s\n", odp_version_api_str());
            printf("\tODP implementation version: %s\n",
    odp_version_impl_str());
    +       printf("\tODP version: %s\n", odp_version_str());

            CU_set_error_action(CUEA_ABORT);

    diff --git a/test/validation/odp_init_log.c
    b/test/validation/odp_init_log.c
    index 275d343..f905850 100644
    --- a/test/validation/odp_init_log.c
    +++ b/test/validation/odp_init_log.c
    @@ -48,6 +48,7 @@ int main(void)

            printf("\tODP API version: %s\n", odp_version_api_str());
            printf("\tODP implementation version: %s\n",
    odp_version_impl_str());
    +       printf("\tODP version: %s\n", odp_version_str());

            CU_set_error_action(CUEA_ABORT);

    --
    2.1.4

    _______________________________________________
    lng-odp mailing list
    [email protected]<mailto:[email protected]> 
<mailto:[email protected]<mailto:[email protected]>>
    https://lists.linaro.org/mailman/listinfo/lng-odp





    --
    Mike Holmes
    Technical Manager - Linaro Networking Group
    Linaro.org │ Open source software for ARM SoCs




--
Mike Holmes
Technical Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/>***│ *Open source software for ARM SoCs



_______________________________________________
lng-odp mailing list
[email protected]<mailto:[email protected]>
https://lists.linaro.org/mailman/listinfo/lng-odp

_______________________________________________
lng-odp mailing list
[email protected]<mailto:[email protected]>
https://lists.linaro.org/mailman/listinfo/lng-odp



--
Mike Holmes
Technical Manager - Linaro Networking Group
Linaro.org<http://www.linaro.org/> │ Open source software for ARM SoCs

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to