On 13 May 2015 at 03:48, Savolainen, Petri (Nokia - FI/Espoo) <
[email protected]> wrote:
> 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
>
>
>
>
>
A version defined as four digits would be sufficient in my opinion, the
strings are available for more elaborate logging.
Leaving something as simple as
{
u32 generation
u32 major
u32 minor
u32 patch
} odp_version_t
odp_version_t odp_version();
These increment per the previously well discussed rules, hash information
etc is delivered in the string.
> -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]> 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]>> 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]>] 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]>> wrote:
>
>
> On Fri, May 8, 2015 at 10:47 AM, Mike Holmes
> <[email protected] <mailto:[email protected]>> wrote:
> Signed-off-by: Mike Holmes <[email protected]
> <mailto:[email protected]>>
>
> Reviewed-by: Bill Fischofer <[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]>
> 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]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
>
> _______________________________________________
> lng-odp mailing list
> [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
>
>
>
--
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