forked from Minki/linux
a4147f0f91
The tag of the perf version is wrongly determined, always the latest tag is taken regardless of the HEAD commit: $ perf --version perf version 3.9.rc8.gd7f5d3 $ git describe d7f5d3 v3.9-rc7-154-gd7f5d33 $ head -n 4 Makefile VERSION = 3 PATCHLEVEL = 9 SUBLEVEL = 0 EXTRAVERSION = -rc7 In other cases no tag might be found. This patch fixes this. This new implementation handles also the case if there are no tags at all found in the git repo but there is a commit id. Signed-off-by: Robert Richter <robert.richter@calxeda.com> Link: http://lkml.kernel.org/r/1368006214-12912-1-git-send-email-rric@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
48 lines
901 B
Bash
Executable File
48 lines
901 B
Bash
Executable File
#!/bin/sh
|
|
|
|
if [ $# -eq 1 ] ; then
|
|
OUTPUT=$1
|
|
fi
|
|
|
|
GVF=${OUTPUT}PERF-VERSION-FILE
|
|
|
|
LF='
|
|
'
|
|
|
|
#
|
|
# First check if there is a .git to get the version from git describe
|
|
# otherwise try to get the version from the kernel Makefile
|
|
#
|
|
CID=
|
|
TAG=
|
|
if test -d ../../.git -o -f ../../.git
|
|
then
|
|
TAG=$(git describe --abbrev=0 --match "v[0-9].[0-9]*" 2>/dev/null )
|
|
CID=$(git log -1 --abbrev=4 --pretty=format:"%h" 2>/dev/null) && CID="-g$CID"
|
|
fi
|
|
if test -z "$TAG"
|
|
then
|
|
TAG=$(MAKEFLAGS= make -sC ../.. kernelversion)
|
|
fi
|
|
VN="$TAG$CID"
|
|
if test -n "$CID"
|
|
then
|
|
# format version string, strip trailing zero of sublevel:
|
|
VN=$(echo "$VN" | sed -e 's/-/./g;s/\([0-9]*[.][0-9]*\)[.]0/\1/')
|
|
fi
|
|
|
|
VN=$(expr "$VN" : v*'\(.*\)')
|
|
|
|
if test -r $GVF
|
|
then
|
|
VC=$(sed -e 's/^#define PERF_VERSION "\(.*\)"/\1/' <$GVF)
|
|
else
|
|
VC=unset
|
|
fi
|
|
test "$VN" = "$VC" || {
|
|
echo >&2 "PERF_VERSION = $VN"
|
|
echo "#define PERF_VERSION \"$VN\"" >$GVF
|
|
}
|
|
|
|
|