[PATCH 02/10] rtems: Add rtems_get_build_hash()

Chris Johns chrisj at rtems.org
Thu Feb 25 03:37:31 UTC 2021



On 25/2/21 12:57 am, Sebastian Huber wrote:
> Update #4265.
> ---
>  cpukit/Makefile.am                 |  1 +
>  cpukit/include/rtems/config.h      | 36 +++++++++++++++++++-
>  cpukit/sapi/src/getbuildhash.c     | 54 ++++++++++++++++++++++++++++++
>  spec/build/cpukit/cfgbuildhash.yml | 14 ++++++++
>  spec/build/cpukit/cfghdr.yml       |  2 ++
>  spec/build/cpukit/librtemscpu.yml  |  1 +
>  6 files changed, 107 insertions(+), 1 deletion(-)
>  create mode 100644 cpukit/sapi/src/getbuildhash.c
>  create mode 100644 spec/build/cpukit/cfgbuildhash.yml
> 
> diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
> index a31cd31596..8e0c42190b 100644
> --- a/cpukit/Makefile.am
> +++ b/cpukit/Makefile.am
> @@ -1062,6 +1062,7 @@ librtemscpu_a_SOURCES += sapi/src/extensiondelete.c
>  librtemscpu_a_SOURCES += sapi/src/extensionident.c
>  librtemscpu_a_SOURCES += sapi/src/fatal.c
>  librtemscpu_a_SOURCES += sapi/src/fatalsrctext.c
> +librtemscpu_a_SOURCES += sapi/src/getbuildhash.c
>  librtemscpu_a_SOURCES += sapi/src/getconfigmax.c
>  librtemscpu_a_SOURCES += sapi/src/getcopyrightnotice.c
>  librtemscpu_a_SOURCES += sapi/src/getversionstring.c
> diff --git a/cpukit/include/rtems/config.h b/cpukit/include/rtems/config.h
> index a3eec39584..969a2fddb8 100644
> --- a/cpukit/include/rtems/config.h
> +++ b/cpukit/include/rtems/config.h
> @@ -10,7 +10,7 @@
>   */
>  
>  /*
> - * Copyright (C) 2009, 2020 embedded brains GmbH (http://www.embedded-brains.de)
> + * Copyright (C) 2009, 2021 embedded brains GmbH (http://www.embedded-brains.de)
>   *
>   * Redistribution and use in source and binary forms, with or without
>   * modification, are permitted provided that the following conditions
> @@ -93,6 +93,40 @@ extern "C" {
>   * configuration option values, for example rtems_resource_unlimited().
>   */
>  
> +/* Generated from spec:/rtems/config/if/get-build-hash */
> +
> +/**
> + * @ingroup RTEMSAPIConfig
> + *
> + * @brief Gets the RTEMS build hash.
> + *
> + * The build hash is calculated from all key-value pairs of the build
> + * environment.  Local file system paths in the values do not contribute to the
> + * hash value.
> + *
> + * @return Returns the pointer to the RTEMS build hash.
> + *
> + * @par Notes
> + * @parblock
> + * An example of a key-value pair of the build environment are the ``CFLAGS``.
> + * So, when the optimization compiler option ``-O2`` changes to ``-O0``, the
> + * build hash changes as well.
> + *
> + * The build hash can be used to distinguish test suite results obtained from
> + * different build environments.
> + * @endparblock
> + *
> + * @par Constraints
> + * @parblock
> + * The following constraints apply to this directive:
> + *
> + * * The directive may be called from within any runtime context.
> + *
> + * * The directive will not cause the calling task to be preempted.
> + * @endparblock
> + */
> +const char *rtems_get_build_hash( void );
> +
>  /* Generated from spec:/rtems/config/if/get-copyright-notice */
>  
>  /**
> diff --git a/cpukit/sapi/src/getbuildhash.c b/cpukit/sapi/src/getbuildhash.c
> new file mode 100644
> index 0000000000..51e6dfbf5b
> --- /dev/null
> +++ b/cpukit/sapi/src/getbuildhash.c
> @@ -0,0 +1,54 @@
> +/* SPDX-License-Identifier: BSD-2-Clause */
> +
> +/**
> + * @file
> + *
> + * @ingroup RTEMSImplClassic
> + *
> + * @brief This source file contains the implementation of
> + *   rtems_get_build_hash().
> + */
> +
> +/*
> + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + *    notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above copyright
> + *    notice, this list of conditions and the following disclaimer in the
> + *    documentation and/or other materials provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#ifdef HAVE_CONFIG_H
> +#include "config.h"
> +#endif
> +
> +#include <rtems/config.h>
> +
> +#if HAVE_RTEMS_BUILD_HASH
> +#include <rtems/build-hash.h>
> +#endif
> +
> +const char *rtems_get_build_hash( void )
> +{
> +#if HAVE_RTEMS_BUILD_HASH
> +  return RTEMS_BUILD_HASH;
> +#else
> +  return "default";

I prefer DEFAULT. It is clear it is not some casual text and it is easy to grep for.

Chris


More information about the devel mailing list