[PATCH] build: Add optional RTEMS_VERSION_VC_KEY

Chris Johns chrisj at rtems.org
Thu Jul 27 04:36:26 UTC 2023



On 26/7/2023 4:54 pm, Sebastian Huber wrote:
> On 26.07.23 08:20, Chris Johns wrote:
>> On 26/7/2023 3:44 pm, Sebastian Huber wrote:
>>> On 26.07.23 06:58, Sebastian Huber wrote:
>>>> On 26.07.23 00:08, Chris Johns wrote:
>>>>> On 26/7/2023 4:27 am, Joel Sherrill wrote:
>>>>>> On Tue, Jul 25, 2023 at 12:15 PM Sebastian Huber
>>>>>> <sebastian.huber at embedded-brains.de
>>>>>> <mailto:sebastian.huber at embedded-brains.de>>
>>>>>> wrote:
>>>>>>
>>>>>>       On 25.07.23 19:09, Joel Sherrill wrote:
>>>>>>       >
>>>>>>       > On Tue, Jul 25, 2023 at 10:12 AM Sebastian Huber
>>>>>>       > <sebastian.huber at embedded-brains.de
>>>>>> <mailto:sebastian.huber at embedded-brains.de>
>>>>>>       > <mailto:sebastian.huber at embedded-brains.de
>>>>>> <mailto:sebastian.huber at embedded-brains.de>>> wrote:
>>>>>>       >
>>>>>>       >     Allow the user to set the version control key.
>>>>>>       >     ---
>>>>>>       >       spec/build/cpukit/grp.yml             |  2 ++
>>>>>>       >       spec/build/cpukit/optversionvckey.yml | 20 ++++++++++++++
>>>>>>       >       wscript                               | 38
>>>>>> ++++++++++++++++-----------
>>>>>>       >       3 files changed, 44 insertions(+), 16 deletions(-)
>>>>>>       >       create mode 100644 spec/build/cpukit/optversionvckey.yml
>>>>>>       >
>>>>>>       >     diff --git a/spec/build/cpukit/grp.yml
>>>>>> b/spec/build/cpukit/grp.yml
>>>>>>       >     index e07e975d7d..fbeab45b5c 100644
>>>>>>       >     --- a/spec/build/cpukit/grp.yml
>>>>>>       >     +++ b/spec/build/cpukit/grp.yml
>>>>>>       >     @@ -18,6 +18,8 @@ links:
>>>>>>       >         uid: cpuopts
>>>>>>       >       - role: build-dependency
>>>>>>       >         uid: cfghdr
>>>>>>       >     +- role: build-dependency
>>>>>>       >     +  uid: optversionvckey
>>>>>>       >       - role: build-dependency
>>>>>>       >         uid: libdebugger
>>>>>>       >       - role: build-dependency
>>>>>>       >     diff --git a/spec/build/cpukit/optversionvckey.yml
>>>>>>       >     b/spec/build/cpukit/optversionvckey.yml
>>>>>>       >     new file mode 100644
>>>>>>       >     index 0000000000..7197381342
>>>>>>       >     --- /dev/null
>>>>>>       >     +++ b/spec/build/cpukit/optversionvckey.yml
>>>>>>       >     @@ -0,0 +1,20 @@
>>>>>>       >     +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>>>>>>       >     +actions:
>>>>>>       >     +- get-string: null
>>>>>>       >     +- env-assign: null
>>>>>>       >     +build-type: option
>>>>>>       >     +copyrights:
>>>>>>       >     +- Copyright (C) 2022, 2023 embedded brains GmbH & Co. KG
>>>>>>       >     +default:
>>>>>>       >     +- enabled-by: true
>>>>>>       >     +  value: ''
>>>>>>       >     +description: |
>>>>>>       >     +  If defined to a non-empty value, then the value will be
>>>>>> used for
>>>>>>       >     the version
>>>>>>       >     +  control key returned by rtems_version() and
>>>>>>       >     rtems_version_control_key(),
>>>>>>       >     +  otherwise the value will be determined by the Git repository
>>>>>>       >     containing the
>>>>>>       >     +  waf top directory.
>>>>>>       >
>>>>>>       >
>>>>>>       > And would this change for a release tarball?
>>>>>>
>>>>>>       Which RTEMS_VERSION_VC_KEY has a release tarball? What happens if you
>>>>>>       unpack an release archive in an external Git repository?
>>>>>>
>>>>>>
>>>>>> I don't know but think we should discuss it.
>>>>>>
>>>>>> Chris should speak up since the release scripts are his and this
>>>>>> might be used by the distribution packaging he has made available.
>>>>> I am not sure what the purpose of this change is. It would be good to
>>>>> understand
>>>>> what it is for. The RTEMS_VERSION_VC_KEY could mean a number of things such
>>>>> as a
>>>>> means to set the git hash in sources not in a git repo but that is guess.
>>>> Yes, this is helpful if you have the RTEMS sources not in a Git repository or
>>>> the Git repository has the wrong commit (git subtree for example).
>>>>
>>>> It could be also useful for the release archive. We could use this scheme:
>>>>
>>>> * If the value is "git", then get the value from git.
>>>>
>>>> * If the value is "", then we use no version key.
>>>>
>>>> * Otherwise we set the key to the value.
>>>>
>>>> For the release archive we would set the default value of the option from
>>>> "git" to "".
>>> I sent a patch with this approach:
>>>
>>> https://lists.rtems.org/pipermail/devel/2023-July/075989.html
>> Can you please just explain the mechanics of how this gets used? While I could
>> try and guess but I would rather not. 😄
> 
> In the v2 patch you just have to do this for a release archive:
> 
> sed -i "s/  value: git/  value: ''/" spec/build/cpukit/optversioncontrolkey.yml
> 

Does this mean the default is changed in the sources in the tarball?

Can the option be overridden in a config file?

>>
>> We have an established method in other repos of adding a VERSION file to the
>> source tarball. Why not follow that method?
> 
> This is certainly possible, however, this would add another configuration source
> to the build system.

Being consistent is a god thing. I am not sure what is required in the build system.

Chris


More information about the devel mailing list