From: Andrew Burgess <andrew.burgess@embecosm.com>
To: Simon Marchi <simark@simark.ca>
Cc: gdb-patches@sourceware.org, Joel Brobecker <brobecker@adacore.com>
Subject: Re: [RFC] Add git sha information to the gdb version string
Date: Fri, 27 Mar 2020 11:45:01 +0000 [thread overview]
Message-ID: <20200327114500.GA587@embecosm.com> (raw)
In-Reply-To: <47128465-bbae-6241-6b04-929163f15229@simark.ca>
* Simon Marchi <simark@simark.ca> [2020-03-26 10:55:59 -0400]:
> Hi Andrew,
>
> On 2020-03-25 7:48 a.m., Andrew Burgess wrote:
> > I don't know if there is any interest in adding git sha information to
> > the GDB version string. I seem to recall this was discussed briefly
> > at 2019's GNU cauldron, but I don't recall if there was interest in
> > the idea or not.
> >
> > Personally I think having the git information in the binary can be
> > helpful, so below is an initial proposal. I'm happy to change this as
> > needed if people have feedback on how to improve it.
> >
> > Let me know what you think,
> >
> > Thanks,
> > Andrew
>
> I am in favor of this, and I have no comments on the user-visible result, I like the
> way it looks.
>
> When we discussed this, we had the "build date" and the "git sha1" camps. I think
> they both have their use, so keeping both in the version string is good.
>
> For the shell script, I'd suggest to first make a patch (probably obvious) to make it
> shellcheck-clean [1], and then ensure that your patch keeps it clean. shellcheck finds
> so many little gotchas of shell scripting.
>
> [1] https://github.com/koalaman/shellcheck
Good idea, I'll take a look at doing this.
>
> > The file gdbsupport/remote-repository contains the pattern used to
> > identify the remote repository, and the name of the upstream branch
> > from that repository which we care about. For us this will be
> > sourceware and master, but by moving these strings into a separate
> > file anyone maintaining an out of tree GDB can easily update these to
> > point to their repository and branch, and get project specific version
> > strings.
>
> What is the advantage of doing this, versus just doing
>
> git-merge-base master HEAD
>
> ... which would just use the local master branch?
I'd very much like to not make assumptions about what people have
chosen to name branches in their local repository.
>
> I presume that this file will need to be updated to change the branch name
> in the stable branches (CCing Joel for that).
Yes, if we wanted the merge-base part to show anything better than the
SHA where the release branch forked from the master branch then this
file would need to be changed when the release branch was created.
>
> > diff --git a/gdbsupport/create-version.sh b/gdbsupport/create-version.sh
> > index 81d6dbf8c1f..2f8e5a3e283 100755
> > --- a/gdbsupport/create-version.sh
> > +++ b/gdbsupport/create-version.sh
> > @@ -27,9 +27,54 @@ host_alias="$2"
> > target_alias="$3"
> > output="$4"
> >
> > +GIT_TAG=""
> > +if $(cd $srcdir && git rev-parse --show-toplevel >/dev/null 2>/dev/null); then
> > + short_head_sha=$(cd $srcdir && git rev-parse --short HEAD)
> > +
> > + dirty_mark=""
> > + (cd $srcdir && git update-index -q --refresh)
> >
> > + test -z "$(cd $srcdir && git diff-index --name-only HEAD --)" ||
> > + dirty_mark="-dirty"
> > +
> > + remote_repo_pattern=`grep ^pattern: \
> > + $srcdir/../gdbsupport/remote-repository \
> > + | cut -d: -f2-`
> > + remote_repo_branch=`grep ^branch: \
> > + $srcdir/../gdbsupport/remote-repository \
> > + | cut -d: -f2-`
> > + branch_info=""
> > + remote_name=`(cd $srcdir && git remote -v) \
> > + | grep ${remote_repo_pattern} | grep \(fetch\) \
> > + | awk -F '\t' '{print $1}'`
> > + if [ -n "${remote_name}" ]; then
> > + remote_branch="${remote_name}/${remote_repo_branch}"
> > + # If the remote branch contains our commit, then we're good.
> > + if ! $(cd $srcdir && git merge-base \
> > + --is-ancestor ${short_head_sha} \
> > + ${remote_branch}); then
> > + # SHA is not on the remote tracking branch. We need to figure out
> > + # the merge base, and the distance from that merge base.
> > + merge_base_sha=$(cd $srcdir && git merge-base ${short_head_sha} \
> > + ${remote_branch})
> > + short_merge_base_sha=$(cd $srcdir \
> > + && git rev-parse \
> > + --short ${merge_base_sha})
> > + commit_count=$(cd $srcdir \
> > + && git rev-list --count ${merge_base_sha}..HEAD)
> > + branch_info="-${short_merge_base_sha}-${commit_count}"
> > + fi
> > + else
> > + branch_info="-unknown"
> > + fi
> > + GIT_TAG="${short_head_sha}${branch_info}${dirty_mark}"
> > +fi
>
> Could you please comment the code a bit more, to say what each line does? It will
> make it easier to read in the future, if we want to fix/modify it.
Will do.
Thanks,
Andrew
next prev parent reply other threads:[~2020-03-27 11:45 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-25 11:48 Andrew Burgess
2020-03-26 14:55 ` Simon Marchi
2020-03-27 11:45 ` Andrew Burgess [this message]
2020-03-27 12:27 ` [PATCH 0/2] Adding git sha information to the " Andrew Burgess
2020-03-27 12:27 ` [PATCH 1/2] gdbsupport: Resolve shellcheck issues in create-version.sh script Andrew Burgess
2020-03-27 13:11 ` Simon Marchi
2020-03-27 13:57 ` Andrew Burgess
2020-03-27 12:27 ` [PATCH 2/2] Add git sha information to the gdb version string Andrew Burgess
2020-03-27 13:56 ` Simon Marchi
2020-03-27 15:28 ` Andrew Burgess
2020-03-27 15:42 ` Andreas Schwab
2020-03-27 16:18 ` Andrew Burgess
2020-03-27 15:48 ` Simon Marchi
2020-04-10 0:01 ` Joel Brobecker
2020-04-10 0:10 ` Joel Brobecker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200327114500.GA587@embecosm.com \
--to=andrew.burgess@embecosm.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=simark@simark.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox