summaryrefslogtreecommitdiffstats
path: root/scripts/setlocalversion
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2008-09-02 15:48:06 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2008-09-02 15:48:06 +0200
commit21d5fc40dfeef567843ab06c5a0c03d49f20859e (patch)
tree9ca421fb2d830bc50c440be9d25b4fadc99a43dd /scripts/setlocalversion
parentdd7a74db87297f74c9bb0f57d8ff3df51e89f37e (diff)
downloadbarebox-21d5fc40dfeef567843ab06c5a0c03d49f20859e.tar.gz
barebox-21d5fc40dfeef567843ab06c5a0c03d49f20859e.tar.xz
Build system: Use setlocalversion from kernel
Autogenerate a local version from git. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'scripts/setlocalversion')
-rwxr-xr-xscripts/setlocalversion65
1 files changed, 65 insertions, 0 deletions
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
new file mode 100755
index 0000000000..83b75126c9
--- /dev/null
+++ b/scripts/setlocalversion
@@ -0,0 +1,65 @@
+#!/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 | grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$' > /dev/null; then
+ if tag=`git describe 2>/dev/null`; then
+ echo $tag | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'
+ fi
+ fi
+
+ # Are there uncommitted changes?
+ git update-index --refresh --unmerged > /dev/null
+ if git diff-index --name-only HEAD | grep -v "^scripts/package" \
+ | read dummy; then
+ printf '%s' -dirty
+ fi
+
+ # All done with git
+ exit
+fi
+
+# Check for mercurial and a mercurial repo.
+if hgid=`hg id 2>/dev/null`; then
+ tag=`printf '%s' "$hgid" | cut -d' ' -f2`
+
+ # Do we have an untagged version?
+ if [ -z "$tag" -o "$tag" = tip ]; then
+ id=`printf '%s' "$hgid" | sed 's/[+ ].*//'`
+ printf '%s%s' -hg "$id"
+ fi
+
+ # Are there uncommitted changes?
+ # These are represented by + after the changeset id.
+ case "$hgid" in
+ *+|*+\ *) printf '%s' -dirty ;;
+ esac
+
+ # All done with mercurial
+ exit
+fi
+
+# Check for svn and a svn repo.
+if rev=`svn info 2>/dev/null | grep '^Revision'`; then
+ rev=`echo $rev | awk '{print $NF}'`
+ changes=`svn status 2>/dev/null | grep '^[AMD]' | wc -l`
+
+ # Are there uncommitted changes?
+ if [ $changes != 0 ]; then
+ printf -- '-svn%s%s%s' "$rev" -dirty "$changes"
+ else
+ printf -- '-svn%s' "$rev"
+ fi
+
+ # All done with svn
+ exit
+fi