linux-yocto/scripts/setlocalversion
Rene Scharfe 117a93db1d kbuild: Use git in scripts/setlocalversion
Currently scripts/setlocalversion is a Perl script that tries to figure
out the current git commit ID of a repo without using git.  It also
imports Digest::MD5 without using it and generally is too big for the
small task it does. :]  And it always reports a git ID, even when the
HEAD is tagged -- this is a bug.

This patch replaces it with a Bourne Shell script that uses git
commands to do the same.  I can't come up with a scenario where someone
would use a git repo and refuse to install git core at the same time,
so I think it's reasonable to assume git is available.

The new script also reports uncommitted changes by adding -git_dirty to
the version string.  Obviously you can't see from that _what_ has been
changed from the last commit, so it's more of a reminder that you
forgot to commit something.

The script is easily extensible: simply add a check for Mercurial (or
whatever) below the git check.

Note: the script doesn't print a newline char anymore.  That's only
because it was easier to implement it that way, not a feature (or bug).
'make kernelrelease' doesn't care.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Acked-by: Ryan Anderson <ryan@michonline.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2006-01-06 20:46:21 +01:00

490 B

#!/bin/sh

Print additional version information for non-release trees.

usage() { echo "Usage: $0 [srctree]" >&2 exit 1 }

cd "${1:-.}" || usage

Check for git and a git repo.

if head=git rev-parse --verify HEAD 2>/dev/null; then # Do we have an untagged version? if [ "git name-rev --tags HEAD" = "HEAD undefined" ]; then printf '%s%s' -g echo "$head" | cut -c1-8 fi

# Are there uncommitted changes?
if git diff-files | read dummy; then
	printf '%s' -git_dirty
fi

fi